Las distribuciones muy sesgadas, como la log-normal, no dan lugar a intervalos de confianza bootstrap precisos. Aquí hay un ejemplo que muestra que las áreas de las colas izquierda y derecha están lejos del ideal 0.025 sin importar el método bootstrap que se pruebe en 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
El resultado es el siguiente:
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
Para $n=400$ Las correas de arranque individuales siguen sin proporcionar una cobertura suficientemente precisa:
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
La verosimilitud empírica tampoco proporciona intervalos de confianza precisos cuando se muestrea a partir de la distribución lognormal.
¿Existe algún enfoque de uso general que no dependa de conocer la distribución de antemano? ¿Alguien ha intentado obtener intervalos de confianza para la media ajustando los datos a la distribución generalizada de Tukey $\lambda$ (esta distribución es muy flexible)? ¿Y si utilizamos las bandas de confianza de Kolmogorov-Smirnov para la FCD? ¿Calcular la media en los límites superior e inferior de la FDA sería terriblemente conservador? Me conformaría con cierto conservadurismo si un método tiene una amplia aplicabilidad.
Para reafirmar los objetivos, estoy buscando un enfoque generalmente aplicable para obtener un intervalo de confianza para una media poblacional tal que
- el intervalo es asimétrico si la distribución de los datos brutos es asimétrica
- el intervalo tiene una cobertura correcta en ambos colas (por ejemplo, 0,025 de probabilidad de error en ambos)
- el procedimiento no requiere que el analista especifique nada sobre la distribución subyacente o la transformación necesaria para que la distribución sea simétrica
Tenga en cuenta que el teorema del límite central es irrelevante aquí; tengo un tamaño de muestra pequeño fijo y el intervalo de confianza debe ser asimétrico para ser preciso en ambas colas. La paramétrica $t$ -de confianza bajo un modelo lognormal con $\mu=0, \sigma=1.65$ y $n=20000$ sigue teniendo una mala cobertura (error de cola izquierdo 0,012, derecho 0,047 cuando ambos deberían ser 0,025).
Para seguir pensando en esto, hay dos formas amplias de conceptualizar el problema que me gustaría discutir.
- La media no es una cantidad que se preste a la inferencia no paramétrica, al menos cuando se requiere exactitud en la inferencia. La mediana de la muestra es significativa para cualquier distribución continua y tenemos un simple intervalo de confianza exacto para la mediana. En una muestra de tamaño $n=20$ de una distribución normal el intervalo de confianza para la mediana es $1.28 \times$ más largo que el exacto $t$ -para la media (véase el código más abajo). Tal vez este factor de 1,28 sea un precio razonable a pagar por la solidez y la completa libertad de distribución.
- Aunque ningún bootstrap por sí solo dará límites de confianza suficientemente precisos para muestras de distribuciones extremadamente sesgadas, el doble bootstrap puede mejorar significativamente la cobertura de confianza en ambas colas. Nankervis tiene algunos buenos resultados y proporciona un excelente algoritmo de cálculo. Pero no he encontrado ningún software que lo implemente.
Código R que ilustra el punto 1. anterior:
## 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)