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.
- 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.
boot
R
, 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.
- 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.
- 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.
- ¿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.