O bootstrapping é um método de reamostragem para estimar a distribuição amostral de seus coeficientes de regressão e, portanto, calcular os erros / intervalos de confiança padrão de seus coeficientes de regressão. Este post tem uma boa explicação. Para uma discussão de quantas réplicas você precisa, consulte este post.
- nvezes. Então você terá 10.000 coeficientes de regressão diferentes. Esses coeficientes de 10.000 podem então ser usados para calcular seus valores de confiança. Como um gerador de números pseudo-aleatórios é usado, você pode simplesmente definir a semente como um número arbitrário para garantir que você tenha exatamente os mesmos resultados todas as vezes (veja o exemplo abaixo). Para realmente ter estimativas estáveis, sugiro mais de 1000 repetições, talvez 10.000. Você pode executar o bootstrap várias vezes e ver se as estimativas mudam muito, se você faz 1000 ou 10'000 replicações. Em inglês simples: você deve fazer replicações até alcançar a convergência. Se suas estimativas de inicialização variarem entre suas estimativas e o modelo único observado, isso poderá indicar que o modelo observado não reflete adequadamente a estrutura da sua amostra.
boot
R
, por exemplo, coloca o "viés", que é a diferença entre os coeficientes de regressão do seu modelo único e a média das amostras de autoinicialização.
- Ao executar a inicialização, você não está interessado em uma única amostra de inicialização, mas na distribuição de estatísticas (por exemplo, coeficientes de regressão) sobre as, digamos, 10.000 amostras de inicialização.
- Eu diria que 10.000 é melhor que 1000. Com os computadores modernos, isso não deve representar um problema. No exemplo abaixo, o meu PC levou cerca de 45 segundos para coletar 10.000 amostras. Isso varia com o tamanho da amostra, é claro. Quanto maior o tamanho da amostra, maior o número de iterações para garantir que todas as observações sejam levadas em consideração.
- Como assim "os resultados variam cada vez"? Lembre-se de que em cada etapa do bootstrap, as observações são extraídas com a substituição. Portanto, é provável que você tenha coeficientes de regressão ligeiramente diferentes porque suas observações diferem. Mas como eu disse: você não está realmente interessado no resultado de uma única amostra de bootstrap. Quando o número de replicações for alto o suficiente, o bootstrap deverá gerar intervalos de confiança muito semelhantes e estimativas de pontos sempre.
Aqui está um exemplo em 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 )
O bootstrap-ouput exibe os coeficientes de regressão originais ("original") e seu viés, que é a diferença entre os coeficientes originais e os coeficientes de inicialização. Também fornece os erros padrão. Observe que eles são um pouco maiores que os erros padrão originais.
A partir dos intervalos de confiança, o viés corrigido ("bca") é geralmente preferido. Ele fornece os intervalos de confiança na escala original. Para intervalos de confiança para as razões de chances, apenas exponencie os limites de confiança.