Distribusi yang sangat miring seperti log-normal tidak menghasilkan interval kepercayaan bootstrap yang akurat. Berikut adalah contoh yang menunjukkan bahwa area ekor kiri dan kanan jauh dari ideal 0,025 tidak peduli metode bootstrap apa pun yang Anda coba di R:
require(boot)
n <- 25
B <- 1000
nsim <- 1000
set.seed(1)
which <- c('basic', 'perc', 'norm', 'bca', 'stud')
mul <- 0; sdl <- 1.65 # on log scale
dist <- c('normal', 'lognormal')[2]
switch(dist, normal = {g <- function(x) x; mu <- mul},
lognormal = {g <- exp; mu <- exp(mul + sdl * sdl / 2)})
count <- matrix(0, nrow=length(which), ncol=2,
dimnames=list(which, c('lower', 'upper')))
stat <- function(x, j) {
## See http://www.psychology.mcmaster.ca/bennett/boot09/percentileT.pdf
x <- x[j]
m <- mean(x)
s <- sd(x)
n <- length(x)
sem <- s / sqrt(n)
m.var <- sem ^ 2
c(m, m.var)
}
for(i in 1 : nsim) {
if(i %% 100 == 0) cat(i, '')
x <- g(rnorm(n, mul, sdl))
b <- boot(x, stat, R=B)
ci <- boot.ci(b, type=which)
for(w in which) {
nam <- switch(w, perc='percent', norm='normal', basic='basic',
stud='student', bca='bca')
z <- rev(rev(ci[[nam]])[1:2])
count[w, 'lower'] <- count[w, 'lower'] + (z[1] > mu)
count[w, 'upper'] <- count[w, 'upper'] + (z[2] < mu)
}
}
cat('\n')
count / nsim
Hasilnya di bawah ini:
lower upper
basic 0.000 0.329
perc 0.003 0.257
norm 0.000 0.287
bca 0.015 0.185
stud 0.005 0.129
Untuk single bootstraps masih tidak memberikan cakupan yang cukup akurat:
lower upper
basic 0.001 0.114
perc 0.005 0.093
norm 0.002 0.102
bca 0.017 0.067
stud 0.011 0.058
Kemungkinan empiris juga gagal memberikan interval kepercayaan yang akurat ketika pengambilan sampel dari distribusi lognormal.
Apakah ada pendekatan tujuan umum di luar sana yang tidak bergantung pada mengetahui distribusi di muka? Adakah yang mencoba mendapatkan interval kepercayaan untuk mean dengan memasukkan data ke Tukey generalized distribusi (distribusi ini sangat fleksibel)? Bagaimana dengan menggunakan band kepercayaan diri Kolmogorov-Smirnov untuk CDF? Apakah menghitung rata-rata pada batas atas dan bawah pada CDF akan menjadi sangat konservatif? Saya akan menerima konservatisme jika suatu metode memiliki penerapan yang luas.
Untuk menyatakan kembali tujuan, saya mencari pendekatan yang berlaku umum untuk mendapatkan interval kepercayaan untuk populasi yang berarti seperti itu
- Intervalnya asimetris jika distribusi data mentah asimetris
- interval memiliki cakupan yang benar di keduanya ekor (mis., probabilitas kesalahan 0,025 di keduanya)
- prosedur tidak mengharuskan analis untuk menentukan apa pun tentang distribusi yang mendasarinya atau transformasi yang diperlukan untuk membuat distribusi simetris
Dalam terus memikirkan hal ini ada dua cara luas untuk mengonseptualisasikan masalah yang ingin saya diskusikan.
- Meskipun tidak ada bootstrap tunggal yang akan memberikan batas kepercayaan yang cukup akurat untuk sampel dari distribusi yang sangat miring, bootstrap ganda dapat secara signifikan meningkatkan cakupan kepercayaan di kedua ekor. Nankervis memiliki beberapa hasil bagus dan menyediakan algoritma komputasi yang sangat baik. Tetapi tidak ada perangkat lunak yang dapat saya temukan alat ini.
Kode R menggambarkan 1. di atas:
## Exact CI for median from DescTools package SignTest.default
## See also ttp://www.stat.umn.edu/geyer/old03/5102/notes/rank.pdf,
## http://de.scribd.com/doc/75941305/Confidence-Interval-for-Median-Based-on-Sign-Test
cimed <- function(x, alpha=0.05, na.rm=FALSE) {
if(na.rm) x <- x[! is.na(x)]
n <- length(x)
k <- qbinom(p=alpha / 2, size=n, prob=0.5, lower.tail=TRUE)
## Actual CL: 1 - 2 * pbinom(k - 1, size=n, prob=0.5) >= 1 - alpha
sort(x)[c(k, n - k + 1)]
}
n <- 20
m <- 20000
cil <- cilt <- 0
z <- qt(0.975, n - 1)
for(i in 1 : m) {
x <- rnorm(n)
cil <- cil + diff(cimed(x))
cilt <- cilt + 2 * z * sqrt(var(x) / n)
}
cil <- cil / m
cilt <- cilt / m
c(cil, cilt, cilt / cil, cil / cilt)