¿Se puede considerar el bootstrap como una "cura" para el pequeño tamaño de muestra?

71

Esta pregunta ha sido provocada por algo que leí en este libro de texto de estadísticas de nivel de posgrado y que también escuché (independientemente) durante esta presentación en un seminario estadístico. En ambos casos, la declaración estaba en la línea de "debido a que el tamaño de la muestra es bastante pequeño, decidimos realizar una estimación mediante bootstrap en lugar de (o junto con) este método paramétrico ".X

No consiguieron en los detalles, pero probablemente el razonamiento fue el siguiente: Método supone que los datos se ajustan a una determinada distribución paramétrica D . En realidad, la distribución no es exactamente D , pero está bien siempre que el tamaño de la muestra sea lo suficientemente grande. Dado que en este caso el tamaño de la muestra es demasiado pequeño, cambiemos al bootstrap (no paramétrico) que no hace suposiciones de distribución. ¡Problema resuelto!XDD

En mi opinión, para eso no es para bootstrap. Así es como lo veo: bootstrap puede darle una ventaja cuando es más o menos obvio que hay suficientes datos, pero no hay una solución de forma cerrada para obtener errores estándar, valores p y estadísticas similares. Un ejemplo clásico es obtener un IC para el coeficiente de correlación dada una muestra de una distribución normal bivariada: la solución de forma cerrada existe, pero es tan complicada que el arranque es más simple. Sin embargo, nada implica que bootstrap de alguna manera pueda ayudar a alguien a salirse con una muestra pequeña.

¿Es correcta mi percepción?

Si encuentra esta pregunta interesante, hay otra pregunta de arranque más específica de mi parte:

Bootstrap: la cuestión del sobreajuste

PD: No puedo evitar compartir un ejemplo atroz del "enfoque de arranque". No estoy revelando el nombre del autor, pero es uno de los "cuantos" de la generación anterior que escribió un libro sobre Finanzas Cuantitativas en 2004. El ejemplo se toma de allí.

Considere el siguiente problema: suponga que tiene 4 activos y 120 observaciones de retorno mensual para cada uno. El objetivo es construir el cdf 4-dimensional conjunto de rendimientos anuales. Incluso para un solo activo, la tarea parece difícilmente alcanzable con solo 10 observaciones anuales, y mucho menos la estimación de cdf 4-dimensional. Pero no se preocupe, el "bootstrap" lo ayudará: tome todas las observaciones 4-dimensionales disponibles, muestree 12 con reemplazo y compárelas para construir un solo vector 4-bootstrap "de retorno anual". Repita eso 1000 veces y, he aquí, se obtuvo una "muestra de arranque" de 1000 declaraciones anuales. Use esto como una muestra iid de tamaño 1000 con el propósito de estimar cdf, o cualquier otra inferencia que pueda extraerse de un historial de mil años.

James
fuente
18
Escucho o leo sentimientos similares a su primer párrafo, pero tiendo a estar en desacuerdo. Por lo general, no veo el bootstrapping como necesariamente útil en muestras pequeñas. Su justificación es una muestra asintótica / grande, y en muchos casos en la práctica su rendimiento de muestra pequeña es problemático; La cobertura de intervalos, por ejemplo, a menudo es bastante diferente de la tasa nominal. Es otra herramienta útil, pero como muchas otras que se han anunciado a lo largo de los años, no es la panacea que algunas personas imaginan que es. Realmente no creo que sea una solución para muestras muy pequeñas.
Glen_b
En el libro de Simon Sheather (Figura 3.40) hay un diagrama de flujo para la regresión que sugiere el arranque para la inferencia cuando el tamaño de la muestra no es grande y los errores no se distribuyen normalmente.
Tony Ladson
2
La respuesta a la pregunta en el cuarto párrafo es sí (o al menos obtendría un crédito por su argumento si respondiera en una prueba en mi clase). ¿Has revisado esta discusión ? En mi respuesta , di una explicación de las aproximaciones que hace el bootstrap, y hice una referencia al papel de soplo que cada bootstrapper debería leer para estar al tanto de las limitaciones del método. Sería bueno ver referencias a los libros / documentos / presentaciones que desencadenaron su pregunta
StasK
¿El bootstrap no le da un término adicional en una expansión edgeworth, como una aproximación normal con un término de corrección?
probabilityislogic

Respuestas:

34

nn1nn

simfun <- function(n=5) {
    x <- rnorm(n)
    m.x <- mean(x)
    s.x <- sd(x)
    z <- m.x/(1/sqrt(n))
    t <- m.x/(s.x/sqrt(n))
    b <- replicate(10000, mean(sample(x, replace=TRUE)))
    c( t=abs(t) > qt(0.975,n-1), z=abs(z) > qnorm(0.975),
        z2 = abs(t) > qnorm(0.975), 
        b= (0 < quantile(b, 0.025)) | (0 > quantile(b, 0.975))
     )
}

out <- replicate(10000, simfun())
rowMeans(out)

Mis resultados para una carrera son:

     t      z     z2 b.2.5% 
0.0486 0.0493 0.1199 0.1631 

α

Greg Snow
fuente
66
Tu última oración me hizo sentir curiosidad, así que probé esto con tu ejemplo. Usé el bootpaquete y tuve que proporcionar todos los intervalos posibles: el intervalo de aproximación normal de primer orden, el intervalo de arranque básico, el intervalo de arranque estudiantilizado, el intervalo de percentil de arranque (que su código ya proporciona) y el percentil de arranque ajustado (BCa) intervalo. Los resultados fueron esencialmente todos iguales (tasas de rechazo alrededor de .16-.17), excepto por el intervalo studentizado, que tuvo una tasa de rechazo nominal (.05) (lo cual tiene sentido, ya que es más parecido a la prueba t estándar).
Wolfgang
2
@ Wolfgang, gracias por hacer las simulaciones adicionales. Estoy un poco sorprendido de que los otros intervalos no hayan mejorado un poco, pero no me sorprende que no hayan alcanzado el nivel de 0.05.
Greg Snow
1
¡Sí, también me sorprendió un poco! A veces nuestra intuición falla. Es por eso que es tan maravilloso poder escribir un pequeño script en R en unos pocos minutos, hacer que ejecute 10,000 \times 10,000iteraciones (que tardó otros dos minutos en completarse) y poder verificar las cosas. Y su ejemplo muestra muy bien que el bootstrap puede funcionar bastante mal con muestras pequeñas incluso cuando las cosas están "bien" (es decir, los datos son de hecho normales).
Wolfgang el
En realidad, el problema visto en esta simulación es exactamente el que acabo de preguntar aquí y respondí en los comentarios de @whuber: stats.stackexchange.com/questions/323455/… . Por lo tanto, no creo que el problema sea el tamaño de la muestra, sino la violación de la independencia para la inferencia paramétrica dentro de cada muestra.
medio pase el
2
zt
14

Si se le proporciona un tamaño de muestra pequeño (como luz lateral, lo que es "pequeño" parece depender de alguna regla habitual subyacente en cada campo de investigación), ninguna rutina de arranque hará la magia. Asumiendo que una base de datos contiene tres observaciones para cada una de las dos variables bajo investigación, ninguna inferencia tendrá sentido. En mi experiencia, el bootstrap no paramétrico (1,000 o 10,000 repeticiones) funciona bien para reemplazar la prueba t cuando las distribuciones de muestra (al menos 10-15 observaciones cada una) están sesgadas y, por lo tanto, no se cumplen los requisitos previos para la prueba t habitual. Además, independientemente del número de observaciones, el bootstrap no paramétrico puede ser una opción obligatoria cuando los datos están sesgados positivamente, como siempre sucede con los costos de atención médica.

Carlo Lazzaro
fuente
1
Bootstrap puede ser una opción obligatoria cuando los datos están sesgados positivamente. ¿Por qué no utilizar distribución asimétrica lognormal o similar? SAS y R tienen muchas opciones.
James
1
La respuesta de James merece consideración. Sin embargo, el problema habitual que enfrento con los datos de costos de registro es la transformación inversa a la métrica original antes de presentar los resultados a los tomadores de decisiones. Puede evitar este problema con bootstrap no paramétrico.
Carlo Lazzaro
Carlo, dado que tienes experiencia con la transformación de registros, es posible que desees responder otra pregunta mía (hay una recompensa de 50 puntos): stats.stackexchange.com/a/111932/54099
James
James, he dado una respuesta tentativa a tu pregunta hace unos minutos.
Carlo Lazzaro
tχ12
13

Otras respuestas critican el rendimiento de los intervalos de confianza de bootstrap , no el bootstrap en sí. Este es un problema diferente.

Si su contexto satisface las condiciones de regularidad para la convergencia de la distribución de bootstrap (convergencia en términos del número de muestras de bootstrap), entonces el método funcionará si utiliza una muestra de bootstrap lo suficientemente grande.

En caso de que realmente quiera encontrar problemas al usar bootstrap no paramétrico, aquí hay dos problemas:

(1) Problemas con el remuestreo.

Uno de los problemas con bootstrap, ya sea para muestras pequeñas o grandes, es el paso de remuestreo. No siempre es posible volver a muestrear manteniendo la estructura (dependencia, temporal, ...) de la muestra. Un ejemplo de esto es un proceso superpuesto .

Suponga que hay una serie de fuentes independientes en cada uno de los cuales ocurren eventos de vez en cuando. Se supone que los intervalos entre eventos sucesivos en cualquier fuente son variables aleatorias independientes, todas con la misma distribución, de modo que cada fuente constituye un proceso de renovación de un tipo familiar. Las salidas de las fuentes se combinan en una salida agrupada.

¿Cómo volvería a muestrear manteniendo la dependencia estructura desconocida ?

(2) Muestras de bootstrap estrechas e intervalos de confianza de bootstrap para muestras pequeñas .

En muestras pequeñas, el mínimo y el máximo de los estimadores para cada submuestra pueden definir un intervalo estrecho, luego los puntos finales derecho e izquierdo de cualquier intervalo de confianza serán muy estrechos (¡lo cual es contradictorio dada la muestra pequeña!) En algunos modelos.

x1,x2Exp(λ)λ>0

set.seed(1)
x <- rexp(2,1)
# Maximum likelihood estimator
1/mean(x)

# Profile likelihood: provides a confidence interval with right-end point beyond the maximum inverse of the mean
Rp <- Vectorize(function(l) exp(sum(dexp(x,rate=l,log=T))-sum(dexp(x,rate=1/mean(x),log=T))))

curve(Rp,0,5)
lines(c(0,5),c(0.147,0.147),col="red")

λλ^=2/(x1+x2)

library(boot)
set.seed(1)
x <- rexp(2,1)
1/mean(x)
# Bootstrap interval: limited to the maximum inverse of the mean
f.boot <- function(data,ind) 1/mean(data[ind])
b.b <- boot(data=x, statistic=f.boot, R=100000)
boot.ci(b.b, conf = 0.95, type = "all")
hist(b.b$t)

x1x2

Troilo
fuente
6

Bootstrap funciona bien en tamaños de muestra pequeños al garantizar la exactitud de las pruebas (por ejemplo, que el nivel de significancia nominal de 0.05 está cerca del tamaño real de la prueba), sin embargo, el bootstrap no le otorga mágicamente potencia adicional. Si tienes una pequeña muestra, tienes poco poder, final de la historia.

Las regresiones paramétricas (modelos lineales) y semiparamétricas (GEE) tienden a tener pobres propiedades de muestra pequeña ... la primera como consecuencia de una gran dependencia de supuestos paramétricos, la segunda debido a la ampliación de estimaciones de error estándar robustas en muestras pequeñas. Bootstrapping (y otras pruebas basadas en remuestreo) funciona muy bien en esas circunstancias.

Para la predicción, bootstrapping le dará mejores estimaciones (más honestas) de validez interna que la validación de muestra dividida.

n

AdamO
fuente
2
(por ejemplo, que el nivel de significancia nominal de 0.05 está cerca del tamaño real de la prueba), pero en el código R anterior acabamos de ver que el bootstrap no conserva el tamaño de la prueba, ¿verdad?
James
Veo que te refieres a la respuesta proporcionada por Greg Snow. Me sorprendió ese resultado. Tendré que volver a verificar mis datos y editar mi respuesta. Gracias.
AdamO