Comments (1)
My archaeological dig has yielded a really simple version of rthis()
. It implements a smooth bootstrap with Gaussian kernel. It's described many places, including by Silverman in Density Estimation for Statistics and Data Analysis (1986) in section 6.4.1 "Simulating from density estimates". I included a bit of visual and numerical exploration as a sanity check.
library(ggplot2)
library(tibble)
library(purrr)
library(dplyr)
library(tidyr)
rthis <- function(n, data, h) {
if (missing(n)) {
n <- length(data)
}
if (missing(h)) {
h <- bw.nrd(data) ## or use one of the other bw selectors??
}
xbar <- mean(data)
sigsq <- var(data)
ystar <- sample(data - xbar, size = n, replace = TRUE)
epsilon <- rnorm(n)
denom <- sqrt(1 + h^2 / sigsq)
xbar + (ystar + h * epsilon) / denom
}
## try it with old faithful data
fdur <- faithful$eruptions
B <- 100
## can also play with h like so: h = bw.nrd(fdur) * 1.3)
df <- rerun(B, rthis(data = fdur)) %>%
set_names(as.character(seq_len(B))) %>%
as_tibble() %>%
add_column(fdur, .before = 1) %>%
gather(key = "src", value = "duration")
for_gg <- df %>%
filter(src %in% c("fdur", as.character(1:5)))
ggplot(for_gg, aes(duration)) + geom_freqpoly() +
geom_rug() + facet_wrap(~ src)
#> `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
summ_stats <- df %>%
filter(src != "fdur") %>%
group_by(src) %>%
summarise(mean = mean(duration), var = var(duration))
tribble(
~stat, ~actual, ~sample_avg,
"mean", mean(fdur), mean(summ_stats$mean),
"var", var(fdur), mean(summ_stats$var)
)
#> # A tibble: 2 × 3
#> stat actual sample_avg
#> <chr> <dbl> <dbl>
#> 1 mean 3.487783 3.495127
#> 2 var 1.302728 1.312251
from funs.
Related Issues (20)
- Implement is_distinct()? HOT 2
- A na.rm option for cumany? HOT 1
- na.rm argument in lead and lag? HOT 1
- Revisit `dplyr::coalesce` with `across` HOT 7
- Common suffixes and prefixes of vectors HOT 2
- Make sure if_else() cross-references to case_when()
- Add `mode` to vector functions
- Consider `case_when()` variant that uses values HOT 4
- `coalesce()` invariants HOT 1
- `set_intersect()`, `set_union()`, `set_diff()`, and `set_equal()`
- coalesce on a single column (typically with summarize) HOT 3
- Make a website
- Move `master` branch to `main` HOT 1
- Consider `case_when()` variant returning ordered factors HOT 3
- case_when() should preserve names HOT 1
- `between()` should recycle `left` and `right` to the size of `x`
- Should near have a digits argument?
- Accessible helper for run length encoded style groups HOT 1
- vec_equal_na is deprecated
- `min()` and `max()` variants with an `empty` argument
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from funs.