Compute nonparametric bootstrap estimate, standard error, confidence intervals and p-value for a vector of bootstrap replicate estimates.
boot_ci(data, ..., method = c("dist", "quantile")) boot_se(data, ...) boot_p(data, ...) boot_est(data, ...)
data | A data frame that containts the vector with bootstrapped estimates, or directly the vector (see 'Examples'). |
---|---|
... | Optional, unquoted names of variables with bootstrapped estimates.
Required, if either |
method | Character vector, indicating if confidence intervals should be based on bootstrap standard error, multiplied by the value of the quantile function of the t distribution (default), or on sample quantiles of the bootstrapped values. See 'Details'. May be abbreviated. |
A tibble
with either bootstrap estimate,
standard error, the lower and upper confidence intervals or the
p-value for all bootstrapped estimates.
The methods require one or more vectors of bootstrap replicate estimates as input.
boot_est()
returns the bootstrapped estimate, simply by
computing the mean value of all bootstrap estimates.
boot_se()
computes the nonparametric bootstrap standard
error by calculating the standard deviation of the input vector.
The mean value of the input vector and its standard error is used
by boot_ci()
to calculate the lower and upper confidence
interval, assuming a t-distribution of bootstrap estimate replicates
(for method = "dist"
, the default, which is
mean(x) +/- qt(.975, df = length(x) - 1) * sd(x)
); for
method = "quantile"
, 95% sample quantiles are used to compute
the confidence intervals (quantile(x, probs = c(.025, .975))
).
P-values from boot_p()
are also based on t-statistics,
assuming normal distribution.
Carpenter J, Bithell J. Bootstrap confdence intervals: when, which, what? A practical guide for medical statisticians. Statist. Med. 2000; 19:1141-1164
bootstrap
to generate nonparametric bootstrap samples.
library(dplyr) library(purrr) data(efc) bs <- bootstrap(efc, 100) # now run models for each bootstrapped sample bs$models <- map(bs$strap, ~lm(neg_c_7 ~ e42dep + c161sex, data = .x)) # extract coefficient "dependency" and "gender" from each model bs$dependency <- map_dbl(bs$models, ~coef(.x)[2]) bs$gender <- map_dbl(bs$models, ~coef(.x)[3]) # get bootstrapped confidence intervals boot_ci(bs$dependency)#> term conf.low conf.high #> 1 value 1.319029 1.786721# compare with model fit fit <- lm(neg_c_7 ~ e42dep + c161sex, data = efc) confint(fit)[2, ]#> 2.5 % 97.5 % #> 1.292945 1.796430# alternative function calls. boot_ci(bs$dependency)#> term conf.low conf.high #> 1 value 1.319029 1.786721boot_ci(bs, dependency)#> term conf.low conf.high #> 1 dependency 1.319029 1.786721boot_ci(bs, dependency, gender)#> term conf.low conf.high #> 1 dependency 1.3190292 1.7867209 #> 2 gender -0.1438634 0.9925909boot_ci(bs, dependency, gender, method = "q")#> term conf.low conf.high #> 1 dependency 1.31480636 1.7616436 #> 2 gender -0.07214804 0.9855083# compare coefficients mean(bs$dependency)#> [1] 1.552875boot_est(bs$dependency)#> term estimate #> 1 value 1.552875coef(fit)[2]#> e42dep #> 1.544687# bootstrap() and boot_ci() work fine within pipe-chains efc %>% bootstrap(100) %>% mutate( models = map(strap, ~lm(neg_c_7 ~ e42dep + c161sex, data = .x)), dependency = map_dbl(models, ~coef(.x)[2]) ) %>% boot_ci(dependency)#> term conf.low conf.high #> 1 dependency 1.308321 1.841291# check p-value boot_p(bs$gender)#> term p.value #> 1 value 0.1415552summary(fit)$coefficients[3, ]#> Estimate Std. Error t value Pr(>|t|) #> 0.4339069 0.2818786 1.5393398 0.1240780# NOT RUN { # 'spread_coef()' from the 'sjmisc'-package makes it easy to generate # bootstrapped statistics like confidence intervals or p-values library(dplyr) library(sjmisc) efc %>% # generate bootstrap replicates bootstrap(100) %>% # apply lm to all bootstrapped data sets mutate( models = map(strap, ~lm(neg_c_7 ~ e42dep + c161sex + c172code, data = .x)) ) %>% # spread model coefficient for all 100 models spread_coef(models) %>% # compute the CI for all bootstrapped model coefficients boot_ci(e42dep, c161sex, c172code) # or... efc %>% # generate bootstrap replicates bootstrap(100) %>% # apply lm to all bootstrapped data sets mutate( models = map(strap, ~lm(neg_c_7 ~ e42dep + c161sex + c172code, data = .x)) ) %>% # spread model coefficient for all 100 models spread_coef(models, append = FALSE) %>% # compute the CI for all bootstrapped model coefficients boot_ci() # }