data(efc)
bs <- bootstrap(efc, 100)
# now run models for each bootstrapped sample
bs$models <- lapply(bs$strap, function(x) lm(neg_c_7 ~ e42dep + c161sex, data = x))
# extract coefficient "dependency" and "gender" from each model
bs$dependency <- unlist(lapply(bs$models, function(x) coef(x)[2]))
bs$gender <- unlist(lapply(bs$models, function(x) coef(x)[3]))
# get bootstrapped confidence intervals
boot_ci(bs$dependency)
# compare with model fit
fit <- lm(neg_c_7 ~ e42dep + c161sex, data = efc)
confint(fit)[2, ]
# alternative function calls.
boot_ci(bs$dependency)
boot_ci(bs, dependency)
boot_ci(bs, dependency, gender)
# compare coefficients
mean(bs$dependency)
coef(fit)[2]
# bootstrap() and boot_ci() work fine within pipe-chains
library(dplyr)
efc %>%
bootstrap(100) %>%
mutate(models = lapply(.$strap, function(x) {
lm(neg_c_7 ~ e42dep + c161sex, data = x)
})) %>%
mutate(dependency = unlist(lapply(.$models, function(x) coef(x)[2]))) %>%
boot_ci(dependency)
# check p-value
boot_p(bs$gender)
summary(fit)$coefficients[3, ]
# '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 = lapply(.$strap, function(x) {
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 = lapply(strap, function(x) {
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()
Run the code above in your browser using DataLab