¿Qué modelo de regresión bootstrapped debo elegir?

10

Tengo un modelo de regresión logística binaria con un DV (enfermedad: sí / no) y 5 predictores (demografía [edad, sexo, tabaquismo (sí / no)], un índice médico (ordinal) y un tratamiento aleatorio [sí / no ]). También he modelado todos los términos de interacción de dos lados. Las principales variables están centradas y no hay signos de multicolinealidad (todos los VIF <2.5).

Tengo algunas preguntas:

  1. ¿Es ventajoso el bootstrapping sobre mi modelo único? si es así,

  2. ¿Qué modelo de bootstrapped debo elegir? Solo quería ver si los algoritmos de arranque siguen métodos aleatorios para crear nuevas muestras, o si tienen algoritmos rígidos. Por lo tanto, volví a muestrear 1000 veces en cada intento (por lo que tengo varios modelos de arranque, cada uno con 1000 pruebas). Sin embargo, cada vez que los coeficientes del modelo bootstrapped difieren (aunque el número de ensayos es constantemente 1000). ¿Entonces me pregunto cuál debo elegir para mi informe? Algunos cambios son pequeños y no afectan la importancia de mis coeficientes, pero algunos hacen que algunos de mis coeficientes no sean significativos (solo aquellos con valores de P cercanos a 0.05 en el modelo original que cambian a 0.06 por ejemplo).

  3. ¿Debo elegir un número más alto como 10,000? ¿Cómo puedo determinar este límite?

  4. Nuevamente, ¿debo arrancar en primer lugar? Si sus resultados varían cada vez, ¿puedo confiar en sus resultados?

  5. ¿Tiene alguna otra idea en mente que pueda ayudarme con mi caso?

Muchas muchas gracias.

Vic
fuente

Respuestas:

21

Bootstrapping es un método de remuestreo para estimar la distribución de muestreo de sus coeficientes de regresión y, por lo tanto, calcular los errores estándar / intervalos de confianza de sus coeficientes de regresión. Esta publicación tiene una buena explicación. Para una discusión sobre cuántas réplicas necesita, consulte esta publicación.

  1. nveces. Así terminará con 10'000 coeficientes de regresión diferentes. Estos 10'000 coeficientes se pueden usar para calcular sus valores de confianza. Como se usa un generador de números pseudoaleatorios, puede establecer la semilla en un número arbitrario para asegurarse de que tiene exactamente los mismos resultados cada vez (vea el ejemplo a continuación). Para tener realmente estimaciones estables, sugeriría más de 1000 repeticiones, quizás 10'000. Podrías ejecutar el bootstrap varias veces y ver si las estimaciones cambian mucho si haces 1000 o 10'000 repeticiones. En inglés simple: debe tomar replicaciones hasta llegar a la convergencia. Si sus estimaciones de arranque varían entre sus estimaciones y el modelo único observado, esto podría indicar que el modelo observado no refleja adecuadamente la estructura de su muestra.bootR, por ejemplo, resalta el "sesgo", que es la diferencia entre los coeficientes de regresión de su modelo único y la media de las muestras de bootstrap.
  2. Al realizar el bootstrap, no está interesado en una sola muestra de bootstrap, sino en la distribución de estadísticas (por ejemplo, coeficientes de regresión) sobre, digamos, 10'000 muestras de bootstrap.
  3. Yo diría que 10'000 es mejor que 1000. Con las computadoras modernas, esto no debería representar un problema. En el ejemplo a continuación, mi PC tardó alrededor de 45 segundos en extraer 10'000 muestras. Esto varía con el tamaño de su muestra, por supuesto. Cuanto mayor sea el tamaño de la muestra, mayor será el número de iteraciones para garantizar que se tenga en cuenta cada observación.
  4. ¿Qué quiere decir "los resultados varían cada vez"? Recuerde que en cada paso de arranque, las observaciones se dibujan nuevamente con reemplazo. Por lo tanto, es probable que termine con coeficientes de regresión ligeramente diferentes porque sus observaciones difieren. Pero como he dicho: no estás realmente interesado en el resultado de una sola muestra de arranque. Cuando su número de repeticiones es lo suficientemente alto, el bootstrap debería producir intervalos de confianza y estimaciones puntuales muy similares cada vez.

Aquí hay un ejemplo en R:

library(boot)

mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")

head(mydata)

mydata$rank <- factor(mydata$rank)

my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")

summary(my.mod)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept) -3.989979   1.139951  -3.500 0.000465 ***
gre          0.002264   0.001094   2.070 0.038465 *  
gpa          0.804038   0.331819   2.423 0.015388 *  
rank2       -0.675443   0.316490  -2.134 0.032829 *  
rank3       -1.340204   0.345306  -3.881 0.000104 ***
rank4       -1.551464   0.417832  -3.713 0.000205 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

# Set up the non-parametric bootstrap

logit.bootstrap <- function(data, indices) {

  d <- data[indices, ]
  fit <- glm(admit ~ gre + gpa + rank, data = d, family = "binomial")

  return(coef(fit))
}

set.seed(12345) # seed for the RNG to ensure that you get exactly the same results as here

logit.boot <- boot(data=mydata, statistic=logit.bootstrap, R=10000) # 10'000 samples

logit.boot

Bootstrap Statistics :
        original        bias    std. error
t1* -3.989979073 -7.217244e-02 1.165573039
t2*  0.002264426  4.054579e-05 0.001146039
t3*  0.804037549  1.440693e-02 0.354361032
t4* -0.675442928 -8.845389e-03 0.329099277
t5* -1.340203916 -1.977054e-02 0.359502576
t6* -1.551463677 -4.720579e-02 0.444998099

# Calculate confidence intervals (Bias corrected ="bca") for each coefficient

boot.ci(logit.boot, type="bca", index=1) # intercept
95%   (-6.292, -1.738 )  
boot.ci(logit.boot, type="bca", index=2) # gre
95%   ( 0.0000,  0.0045 ) 
boot.ci(logit.boot, type="bca", index=3) # gpa
95%   ( 0.1017,  1.4932 )
boot.ci(logit.boot, type="bca", index=4) # rank2
95%   (-1.3170, -0.0369 )
boot.ci(logit.boot, type="bca", index=5) # rank3
95%   (-2.040, -0.629 )
boot.ci(logit.boot, type="bca", index=6) # rank4
95%   (-2.425, -0.698 )

La salida de arranque muestra los coeficientes de regresión originales ("original") y su sesgo, que es la diferencia entre los coeficientes originales y los de arranque. También da los errores estándar. Tenga en cuenta que son un poco más grandes que los errores estándar originales.

A partir de los intervalos de confianza, generalmente se prefiere el sesgo corregido ("bca"). Da los intervalos de confianza en la escala original. Para intervalos de confianza para las razones de posibilidades, simplemente exponga los límites de confianza.

COOLSerdash
fuente
¡GRACIAS por la respuesta perfecta! :) Permítanme responder de esta manera: 1. Estaba un poco familiarizado con su noción (que trata de calcular la media de 1000 coeficientes diferentes en 1000 modelos diferentes (remuestreados)). Gracias por aclarar esa cuestión de "sesgo" y que tales variaciones suceden y deberíamos aumentar el número de intentos. :) 2. Por "modelo bootstrapped" no me refería a un solo modelo remuestreado. Sin embargo, quise decir la media de esas 1000 iteraciones. En realidad, he arrancado mi modelo 10 veces, cada una para 1000 iteraciones. Así que tengo a mano 10 modelos de bootstrapped.
Vic
Cada uno de ellos muestra un resultado "diferente". Pero probaría tres o cuatro modelos bootstrapped con 10,000 resamplings para ver si el número de iteraciones es de 10,000, los diferentes modelos bootstrapped (cada uno con 10000) son similares o debería aumentar esos 100000 aún más.
Vic
@Vic Gracias por tu comentario. No haría 10 bootstraps cada uno con 1000 iteraciones, sino solo uno con, digamos 10'000 o incluso más iteraciones (50'000?). Esto debería proporcionarle estimaciones estables e intervalos de confianza.
COOLSerdash
3. Claro que eso no es un problema. Solo quería saber sobre qué base debería uno elegir ese número. Creo que la base puede ser que si ejecuto dos bootstrappings de 1000 intentos cada uno y veo que difieren, eso significa que necesito más pruebas de remuestreo (por ejemplo, 5000 o 10000).
Vic
4. "¿Qué quiere decir con" los resultados varían cada vez "? Cuando el número de repeticiones es lo suficientemente alto, el bootstrap debería producir intervalos de confianza muy similares y estimaciones puntuales cada vez".
Vic