Ya, Anda dapat memperkirakan dengan P ( ˉ X ∗ n ≤ x ) tetapi tidak optimal. Ini adalah bentuk bootstrap persentil. Namun, bootstrap persentil tidak berkinerja baik jika Anda ingin membuat kesimpulan tentang rata-rata populasi kecuali Anda memiliki ukuran sampel yang besar. (Itu memang bekerja dengan baik dengan banyak masalah inferensi lain termasuk ketika ukuran sampel kecil.) Saya mengambil kesimpulan ini dari Statistik Modern Wilcox untuk Ilmu Sosial dan Perilaku , CRC Press, 2012. Sebuah bukti teoretis berada di luar saya. Saya khawatir .P ( X¯n≤ x )P ( X¯∗n≤ x )
Varian pada pendekatan pemusatan maju ke langkah berikutnya dan skala statistik bootstrap terpusat Anda dengan sampel standar deviasi dan ukuran sampel, menghitung dengan cara yang sama seperti pada statistik. Kuantil dari distribusi statistik t ini dapat digunakan untuk membangun interval kepercayaan atau melakukan tes hipotesis. Ini adalah metode bootstrap-t dan memberikan hasil yang unggul ketika membuat kesimpulan tentang rata-rata.
Mari kita menjadi re-sampel standar deviasi berdasarkan pada bootstrap re-sampel, menggunakan n-1 sebagai denominator; dan menjadi standar deviasi dari sampel asli. Membiarkans∗
T∗= X¯∗n- X¯s∗/ n√
Persentil ke-97,5 dan 2,5 dari distribusi simulasi dapat membuat interval kepercayaan untuk μ dengan:T∗μ
X¯- T∗0,975sn√, X¯- T∗0,025sn√
Pertimbangkan hasil simulasi di bawah ini, yang menunjukkan bahwa dengan distribusi campuran yang kurang miring interval kepercayaan dari metode ini mengandung nilai sebenarnya lebih sering daripada metode bootstrap persentil atau inversi tradisional pada statistik tanpa bootstrap.
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)
Ini memberikan berikut (conf.t adalah metode bootstrap t; conf.p adalah metode bootstrap persentil).
97.5% 2.5%
conf.t 9.648824 10.98006
conf.p 9.808311 10.95964
Trad T test 9.681865 11.01644
Dengan satu contoh dari distribusi miring:
# 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)
Ini memberikan yang berikut. Perhatikan bahwa "conf.t" - versi t bootstrap - memberikan interval kepercayaan yang lebih luas daripada dua lainnya. Pada dasarnya, lebih baik menanggapi distribusi populasi yang tidak biasa.
> 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
Akhirnya di sini ada seribu simulasi untuk melihat versi mana yang memberikan interval kepercayaan yang paling sering benar:
# 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)
Ini memberikan hasil di bawah ini - jumlahnya adalah kali dari 1.000 sehingga interval kepercayaan berisi nilai sebenarnya dari populasi yang disimulasikan. Perhatikan bahwa tingkat keberhasilan sebenarnya dari setiap versi sangat kurang dari 95%.
Bootstrap T Bootstrap percentile Trad T test
901 854 890