Qual modelo de regressão com inicialização inicial devo escolher?

10

Eu tenho um modelo de regressão logística binária com um DV (doença: sim / não) e 5 preditores (dados demográficos [idade, sexo, tabagismo (sim / não)], um índice médico (ordinal) e um tratamento aleatório [sim / não ]). Também modelei todos os termos de interação bilateral. As principais variáveis ​​estão centralizadas e não há sinal de multicolinearidade (todos os VIFs <2,5).

Eu tenho algumas questões:

  1. O bootstrapping é vantajoso em relação ao meu modelo único? se então,

  2. qual modelo de inicialização devo escolher? Eu só queria ver se os algoritmos de bootstrapping seguem métodos aleatórios para criar novas amostras ou se eles têm algoritmos rígidos. Portanto, fiz uma nova amostragem por 1000 vezes em cada tentativa (portanto, tenho vários modelos de inicialização, cada um com 1000 tentativas). No entanto, cada vez que os coeficientes do modelo de inicialização são diferentes (embora o número de tentativas seja constantemente 1000). Então, eu me pergunto qual devo escolher para o meu relatório? Algumas mudanças são pequenas e não afetam a significância de meus coeficientes, mas algumas tornam alguns de meus coeficientes não significativos (apenas aqueles com valores de P próximos a 0,05 no modelo original que mudam para 0,06, por exemplo).

  3. Devo escolher um número maior, como 10.000? Como posso determinar esse limite?

  4. Mais uma vez eu deveria iniciar em primeiro lugar? Se os resultados variarem a cada vez, posso confiar nos resultados?

  5. Você tem outras idéias em mente que possam me ajudar com o meu caso?

Muitíssimo obrigado.

Vic
fonte

Respostas:

21

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.

  1. 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.bootR, 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.
  2. 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.
  3. 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.
  4. 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.

COOLSerdash
fonte
OBRIGADO pela resposta perfeita! :) Deixe-me responder da seguinte maneira: 1. Eu estava um pouco familiarizado com sua noção (de que ela tenta calcular a média de 1000 coeficientes diferentes em 1000 modelos diferentes (reamostrados)). Obrigado por esclarecer que "viés" e que tais variações acontecem e devemos aumentar o número de tentativas. :) 2.Por "modelo de inicialização", não quis dizer um único modelo reamostrado. No entanto, eu quis dizer a média dessas 1000 iterações. Na verdade, eu iniciei meu modelo por 10 vezes, cada uma por 1000 iterações. Então, eu tenho 10 modelos de inicialização em mãos.
23413 Vic
Cada um deles mostra um resultado "diferente". Mas eu tentaria três ou quatro modelos de inicialização com 10.000 reamostragens para ver se o número de iterações é 10.000, os diferentes modelos de inicialização (cada um com 10000) são semelhantes ou devo aumentar ainda mais esses 100000?
23413 Vic
@ Vic Obrigado pelo seu comentário. Eu não faria 10 bootstraps cada um com 1000 iterações, mas apenas um com, digamos 10'000 ou até mais iterações (50'000?). Isso deve fornecer estimativas estáveis ​​e intervalos de confiança.
COOLSerdash
3. Claro que isso não é um problema. Eu só queria saber em que base alguém deveria escolher esse número? Penso que a base pode ser que, se eu executar dois bootstraps de 1000 tentativas cada e ver que eles diferem, isso significa que preciso de mais testes de reamostragem (por exemplo, 5000 ou 10000).
23413 Vic
4. "O que você quer dizer com" os resultados variam a cada vez "? Quando o seu número de repetições é alto o suficiente, o autoinicializador deve gerar intervalos de confiança muito semelhantes e estimativas pontuais todas as vezes."
23413 Vic