Interpretando um modelo de regressão logística com múltiplos preditores

12

Realizei regressão logística multivariada com a variável dependente Ysendo a morte em um lar de idosos dentro de um determinado período de entrada e obtive os seguintes resultados (observe se as variáveis ​​começam com Aum valor contínuo, enquanto as que iniciam Bsão categóricas):

Call:
glm(Y ~ A1 + B2 + B3 + B4 + B5 + A6 + A7 + A8 + A9, data=mydata, family=binomial)
Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.0728  -0.2167  -0.1588  -0.1193   3.7788  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)    
(Intercept)  20.048631  6.036637   3.321 0.000896 ***
A1           0.051167   0.016942   3.020 0.002527 ** 
B2          -0.664940   0.304299  -2.185 0.028878 *  
B3          -2.825281   0.633072  -4.463 8.09e-06 ***
B4          -2.547931   0.957784  -2.660 0.007809 ** 
B5          -2.862460   1.385118  -2.067 0.038774 *  
A6          -0.129808   0.041286  -3.144 0.001666 ** 
A7           0.020016   0.009456   2.117 0.034276 *  
A8          -0.707924   0.253396  -2.794 0.005210 ** 
A9           0.003453   0.001549   2.229 0.025837 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 485.10  on 2206  degrees of freedom
Residual deviance: 417.28  on 2197  degrees of freedom
AIC: 437.28

Number of Fisher Scoring iterations: 7

 (Intercept)           A1           B2           B3           B4           B5           A6           A7           A8           A9 
5.093426e+08 1.052499e+00 5.143045e-01 5.929197e-02 7.824340e-02 5.712806e-02 8.782641e-01 1.020218e+00 4.926657e-01 1.003459e+00 

                   2.5 %       97.5 %
(Intercept) 3.703525e+03 7.004944e+13
A1          1.018123e+00 1.088035e+00
B2          2.832698e-01 9.337710e-01
B3          1.714448e-02 2.050537e-01
B4          1.197238e-02 5.113460e-01
B5          3.782990e-03 8.627079e-01
A6          8.099945e-01 9.522876e-01
A7          1.001484e+00 1.039302e+00
A8          2.998207e-01 8.095488e-01
A9          1.000416e+00 1.006510e+00

Como você pode ver, todas as variáveis ​​são "significativas", pois seus valores de p estão abaixo do limite usual de 0,05. No entanto, olhando para os coeficientes, não sei bem o que fazer com esses resultados. Parece que, embora essas variáveis ​​contribuam para o modelo, observando as razões de chances, elas não parecem realmente ter muito poder preditivo. É importante notar que, quando calculei a AUC, obtive aproximadamente 0,8.

Posso dizer que esse modelo é melhor em prever a mortalidade (por exemplo, prever que os idosos viverão após o período prescrito) em comparação com a previsão da mortalidade?

oort
fonte
4
Este não é um modelo "multivariado", pois você possui apenas uma variável dependente / resultado. Ajustar um modelo com vários preditores é chamado de regressão "múltipla".
Gala19
Eu realmente aprecio os comentários e as respostas - definitivamente vou dar uma olhada no pacote rms. No entanto, minha pergunta ainda permanece - a maioria dos odds ratio é <1, isso implicaria que essas variáveis ​​neste modelo são melhores em prever o resultado?
oort

Respostas:

18

0.8

#-----------------------------------------------------------------------------
# Load packages
#-----------------------------------------------------------------------------

library(rms)

#-----------------------------------------------------------------------------
# Load data
#-----------------------------------------------------------------------------

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

mydata$rank <- factor(mydata$rank)

#-----------------------------------------------------------------------------
# Fit logistic regression model
#-----------------------------------------------------------------------------

mylogit <- lrm(admit ~ gre + gpa + rank, x=TRUE, y=TRUE, data = mydata)
mylogit

                      Model Likelihood     Discrimination    Rank Discrim.    
                         Ratio Test            Indexes          Indexes       
Obs           400    LR chi2      41.46    R2       0.138    C       0.693    
 0            273    d.f.             5    g        0.838    Dxy     0.386    
 1            127    Pr(> chi2) <0.0001    gr       2.311    gamma   0.387    
max |deriv| 2e-06                          gp       0.167    tau-a   0.168    
                                           Brier    0.195                     

          Coef    S.E.   Wald Z Pr(>|Z|)
Intercept -3.9900 1.1400 -3.50  0.0005  
gre        0.0023 0.0011  2.07  0.0385  
gpa        0.8040 0.3318  2.42  0.0154  
rank=2    -0.6754 0.3165 -2.13  0.0328  
rank=3    -1.3402 0.3453 -3.88  0.0001  
rank=4    -1.5515 0.4178 -3.71  0.0002 

pC0.51DxyDxyDxyDxy=2(c0.5)Dxy0Dxy=10.693>0.8

Como dito acima, o modelo provavelmente é super otimista. Agora usamos o bootstrap para quantificar o otimismo:

#-----------------------------------------------------------------------------
# Validate model using bootstrap
#-----------------------------------------------------------------------------

my.valid <- validate(mylogit, method="boot", B=1000)
my.valid

          index.orig training    test optimism index.corrected    n
Dxy           0.3857   0.4033  0.3674   0.0358          0.3498 1000
R2            0.1380   0.1554  0.1264   0.0290          0.1090 1000
Intercept     0.0000   0.0000 -0.0629   0.0629         -0.0629 1000
Slope         1.0000   1.0000  0.9034   0.0966          0.9034 1000
Emax          0.0000   0.0000  0.0334   0.0334          0.0334 1000
D             0.1011   0.1154  0.0920   0.0234          0.0778 1000
U            -0.0050  -0.0050  0.0015  -0.0065          0.0015 1000
Q             0.1061   0.1204  0.0905   0.0299          0.0762 1000
B             0.1947   0.1915  0.1977  -0.0062          0.2009 1000
g             0.8378   0.9011  0.7963   0.1048          0.7331 1000
gp            0.1673   0.1757  0.1596   0.0161          0.1511 1000

Dxy0.3857optimismindex.correctedDxyc=1+Dxy2=0.6749

Também podemos calcular uma curva de calibração usando a reamostragem:

#-----------------------------------------------------------------------------
# Calibration curve using bootstrap
#-----------------------------------------------------------------------------

my.calib <- calibrate(mylogit, method="boot", B=1000)

par(bg="white", las=1)
plot(my.calib, las=1)

n=400   Mean absolute error=0.016   Mean squared error=0.00034
0.9 Quantile of absolute error=0.025

Calibração LogReg

0.3

A construção de modelos preditivos é um tópico importante e sugiro a leitura das notas do curso de Frank Harrell .

COOLSerdash
fonte
5
Muito obrigado pelos maravilhosos exemplos e instruções do rmspacote @COOLSerdash e Nick.
31813 Frank Harrell
Muito obrigado pela sua resposta, também me ajudou muito! Eu tenho uma pergunta rápida, o que você quer dizer com estimativa sistemática de excesso em torno de 0,3? E você pode dar uma olhada no meu gráfico? s23.postimg.org/9cucdg6e3/calibration_curve.png Como devo interpretar essa saída
CanCeylan
2
@ CanCeylan No meu gráfico, há uma pequena curva na linha em torno de 0,3 (a linha fica abaixo da linha ideal). Em relação ao seu gráfico: adicione seu gráfico à sua pergunta original para que outras pessoas possam vê-lo também. Parece que seu modelo está subestimando as probabilidades sistematicamente em todo o espaço.
COOLSerdash
@COOLSerdash thanks. Também atualizei minha pergunta. Mas a partir daí, como devo decidir se devo cancelar o modelo ou usá-lo? Como o valor de c não é ruim (0,7755), o erro médio absoluto (0,002) e o erro médio quadrático (5e-05) são muito pequenos, mas o gráfico de calibração parece ruim. \
CanCeylan
@CanCeylan Obrigado por atualizar sua pergunta. Hum, não tenho certeza. O gráfico de calibração não parece muito bom. Eu esperaria por mais opiniões (de Frank Harrell ou outros). Não me sinto confiante o suficiente para dar uma recomendação definitiva, desculpe.
COOLSerdash
6

Uma observação sobre a interpretação dos coeficientes: lembre-se de que eles dependem de como os preditores são escritos como números. Assim, para variáveis ​​contínuas elas dependem das unidades em que são medidas; para preditores categóricos, o esquema de codificação. Não fique tentado a pensar que, digamos, A9 é 'sem importância' apenas porque seu coeficiente de 0,003453 é pequeno - A9 pode variar em várias ordens de magnitude em alguma população de interesse, enquanto os outros preditores variam apenas um pouco, ou pode ser fácil definir valores muito altos ou baixos, enquanto os outros são difíceis de mudar muito.

Scortchi - Restabelecer Monica
fonte