P ( X¯N≤ х )P ( X¯*N≤ х )
Вариант с подходом центрирования идет следующим шагом и масштабирует вашу центрированную статистику начальной загрузки со стандартным отклонением повторной выборки и размером выборки, вычисляя так же, как и при статистике. Квантили из распределения этих t-статистики можно использовать для построения доверительного интервала или выполнения проверки гипотезы. Это метод начальной загрузки, и он дает превосходные результаты, когда делает выводы о среднем.
s*
T*= Х¯*N- Х¯s*/ н√
T*μ
Икс¯- Т*0,975sN√, X¯- Т*+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" - версия начальной загрузки 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