Lojistik regresyon modelini çoklu öngörücülerle yorumlama


12

YBelirli bir giriş döneminde bir bakımevinde bağımlı değişkenin ölüm olduğu çok değişkenli lojistik regresyon gerçekleştirdim ve aşağıdaki sonuçları aldım (içinde başlayan değişkenler kategorikken değişkenlerin Asürekli olarak başlayıp başlamadığına dikkat edin B):

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

Gördüğünüz gibi, tüm değişkenler "anlamlı" dır, çünkü p değerleri 0,05 olan normal eşiğin altındadır. Ancak katsayılara baktığımda, bu sonuçlardan ne yapacağımdan tam olarak emin değilim. Her ne kadar bu değişkenler modele katkıda bulunsalar da, olasılık oranlarına bakarak, aslında çok fazla tahmin gücüne sahip görünmüyorlar. AUC'yi hesapladığımda yaklaşık 0.8 aldım.

Bu modelin mortaliteyi öngörmede (ör. Yaşlıların öngörülen süreden sonra yaşayacaklarını tahmin etmede) mortalite tahminine kıyasla daha iyi olduğunu söyleyebilir miyim?


4
Yalnızca bir sonuca / bağımlı değişkene sahip olduğunuz için bu bir “çok değişkenli” model değildir. Birkaç öngörücüye sahip bir model takmaya “çoklu” regresyon denir.
Gala

Yorum ve cevapları gerçekten takdir ediyorum - kesinlikle rms paketine bir göz atacağım. Ancak sorum hala devam ediyor- olasılık oranlarının çoğu <1, bu modeldeki değişkenlerin sonuca karşı tahminlerde daha iyi olduğu anlamına mı gelir?
oort

Yanıtlar:


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

Yukarıda belirtildiği gibi, model muhtemelen aşırı genişlemelidir. Şimdi iyimserliği ölçmek için bootstrap kullanıyoruz:

#-----------------------------------------------------------------------------
# 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

Yeniden örnekleme kullanarak bir kalibrasyon eğrisi de hesaplayabiliriz:

#-----------------------------------------------------------------------------
# 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

LogReg Kalibrasyonu

0.3

Öngörülü model oluşturma büyük bir konudur ve Frank Harrell'in ders notlarını okumanızı öneririm .


5
rms@COOLSerdash ve Nick paketi için harika örnekler ve nasıl yapılır için çok teşekkürler .
Frank Harrell

Cevabınız için çok teşekkür ederim, bu da bana çok yardımcı oldu! Kısa bir sorum var, 0.3 civarında sistematik aşırı tahminle ne demek istiyorsun? Ve lütfen grafiğime bir göz atabilir misiniz? s23.postimg.org/9cucdg6e3/calibration_curve.png Bu çıktıyı nasıl yorumlamalıyım
CanCeylan

2
@CanCeylan Grafiğimde 0,3 civarında küçük bir eğri var (çizgi ideal çizginin altına iniyor). Grafiğinizle ilgili olarak: Lütfen başkalarının da görebilmesi için grafiğinizi orijinal sorunuza ekleyin. Modeliniz olasılıkları sistematik olarak tüm alan üzerinde hafife alıyor gibi görünüyor.
COOLSerdash

@COOLSerdash teşekkürler. Sorumu da güncelledim. Ancak oradan, modeli iptal edip etmemeye veya kullanmaya karar vermeliyim? C değeri kötü olmadığından (0.7755), Ortalama mutlak hata (0.002) ve Ortalama kare hatası (5e-05) çok küçüktür, ancak kalibrasyon grafiği kötü görünür. \
CanCeylan

@CanCeylan Sorunuzu güncellediğiniz için teşekkür ederiz. Hm, emin değilim. Kalibrasyon grafiği çok iyi görünmüyor. (Frank Harrell veya diğerlerinden) daha fazla görüş için beklemek istiyorum. Üzgünüm, kesin bir öneri verecek kadar kendimi güvende hissetmiyorum.
COOLSerdash

6

Katsayıların yorumlanmasına ilişkin bir not: yordayıcıların sayı olarak nasıl yazıldığına bağlı olduklarını hatırlayın. Dolayısıyla sürekli değişkenler için ölçüldükleri birimlere bağlıdırlar; kategorik öngörücüler için kodlama şeması. A9'un sadece 0.003453 katsayısının küçük olması nedeniyle `` önemsiz '' olduğunu düşünmek için cazip olmayın; A9, ilgilenilen bir popülasyonda birkaç büyüklük sırasına göre değişebilirken, diğer öngörücüler sadece biraz değişebilir veya Diğerlerini çok değiştirmek zorken, çok yüksek veya düşük değerlere ayarlamak kolaydır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.