P(X¯n≤x)P(X¯∗n≤x)
Наступний крок підходить до варіанту підходу до центрування і масштабує вашу централізовану статистику завантаження за допомогою повторної вибірки стандартного відхилення та розміру вибірки, обчислюючи так само, як при статистиці. Квантили з розподілу цих t статистичних даних можуть бути використані для побудови довірчого інтервалу або проведення тесту гіпотези. Це метод bootstrap-t, який дає чудові результати при здійсненні умовиводів про середнє значення.
s∗
T∗=X¯∗n−X¯s∗/n√
T∗μ
X¯−T∗0.975sn√,X¯−T∗0.025sn√
Розглянемо результати моделювання нижче, показуючи, що при сильно перекошеному змішаному розподілі інтервали довіри від цього методу містять справжнє значення частіше, ніж або метод процентного завантаження, або традиційна інверсія при статистиці без завантаження.
compare.boots <- function(samp, reps = 599){
# "samp" is the actual original observed sample
# "s" is a re-sample for bootstrap purposes
n <- length(samp)
boot.t <- numeric(reps)
boot.p <- numeric(reps)
for(i in 1:reps){
s <- sample(samp, replace=TRUE)
boot.t[i] <- (mean(s)-mean(samp)) / (sd(s)/sqrt(n))
boot.p[i] <- mean(s)
}
conf.t <- mean(samp)-quantile(boot.t, probs=c(0.975,0.025))*sd(samp)/sqrt(n)
conf.p <- quantile(boot.p, probs=c(0.025, 0.975))
return(rbind(conf.t, conf.p, "Trad T test"=t.test(samp)$conf.int))
}
# Tests below will be for case where sample size is 15
n <- 15
# Create a population that is normally distributed
set.seed(123)
pop <- rnorm(1000,10,1)
my.sample <- sample(pop,n)
# All three methods have similar results when normally distributed
compare.boots(my.sample)
Це дає наступне (conf.t - метод завантаження t; conf.p - метод процентного завантаження).
97.5% 2.5%
conf.t 9.648824 10.98006
conf.p 9.808311 10.95964
Trad T test 9.681865 11.01644
З єдиним прикладом зі скошеного розподілу:
# create a population that is a mixture of two normal and one gamma distribution
set.seed(123)
pop <- c(rnorm(1000,10,2),rgamma(3000,3,1)*4, rnorm(200,45,7))
my.sample <- sample(pop,n)
mean(pop)
compare.boots(my.sample)
Це дає наступне. Зауважте, що "conf.t" - версія завантажувальної версії - дає більш широкий інтервал довіри, ніж два інших. В основному, краще реагувати на незвичний розподіл населення.
> mean(pop)
[1] 13.02341
> compare.boots(my.sample)
97.5% 2.5%
conf.t 10.432285 29.54331
conf.p 9.813542 19.67761
Trad T test 8.312949 20.24093
Нарешті, ось тисяча моделювання, щоб побачити, яка версія дає інтервали довіри, які найчастіше є правильними:
# simulation study
set.seed(123)
sims <- 1000
results <- matrix(FALSE, sims,3)
colnames(results) <- c("Bootstrap T", "Bootstrap percentile", "Trad T test")
for(i in 1:sims){
pop <- c(rnorm(1000,10,2),rgamma(3000,3,1)*4, rnorm(200,45,7))
my.sample <- sample(pop,n)
mu <- mean(pop)
x <- compare.boots(my.sample)
for(j in 1:3){
results[i,j] <- x[j,1] < mu & x[j,2] > mu
}
}
apply(results,2,sum)
Це дає результати нижче - це цифри, що перевищують 1000 разів, що довірчий інтервал містить справжнє значення модельованої сукупності. Зауважте, що справжня успішність кожної версії значно менше 95%.
Bootstrap T Bootstrap percentile Trad T test
901 854 890