Menafsirkan model regresi logistik dengan beberapa prediktor


12

Saya melakukan regresi logistik multivariat dengan variabel dependen Yadalah kematian di panti jompo dalam periode masuk tertentu dan mendapatkan hasil berikut (perhatikan jika variabel yang dimulai di Adalamnya adalah nilai yang berkelanjutan sedangkan yang mulai dalam Bkategori):

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

Seperti yang Anda lihat, semua variabel "signifikan" karena nilai p mereka di bawah ambang biasa 0,05. Namun melihat koefisien, saya tidak yakin apa yang membuat hasil ini. Tampaknya meskipun variabel-variabel ini berkontribusi pada model, melihat rasio odds, mereka tampaknya tidak benar-benar memiliki banyak kekuatan prediksi. Sebagai catatan, ketika saya menghitung AUC, saya mendapat sekitar 0,8.

Dapatkah saya mengatakan bahwa model ini lebih baik dalam memprediksi terhadap kematian (misalnya memprediksi bahwa manula akan hidup melewati periode yang ditentukan) dibandingkan dengan memprediksi kematian?


4
Ini bukan model "multivarian" karena Anda hanya memiliki satu variabel hasil / dependen. Menyesuaikan model dengan beberapa prediktor disebut regresi "berganda".
Gala

Saya sangat menghargai komentar dan jawaban - saya pasti akan mengintip paket rms. Namun pertanyaan saya masih melekat - sebagian besar rasio odds adalah <1, apakah itu menyiratkan bahwa variabel-variabel dalam model ini lebih baik dalam memprediksi hasil?
oort

Jawaban:


18

Saya menyarankan agar Anda menggunakan paket rms yang sangat baik dari Frank Harrell . Ini berisi banyak fungsi yang berguna untuk memvalidasi dan mengkalibrasi model Anda. Sejauh yang saya tahu, Anda tidak dapat menilai kinerja prediksi hanya berdasarkan koefisien. Lebih lanjut, saya akan menyarankan Anda menggunakan bootstrap untuk memvalidasi model. AUC atau konkordansi-indeks (indeks-c) adalah ukuran yang berguna untuk kinerja prediksi. Indeks-c cukup tinggi tetapi seperti pada banyak model prediksi, kecocokan model Anda cenderung terlalu optimistik (overfitting). Overoptimisme ini dapat dinilai menggunakan bootstrap. Tapi izinkan saya memberi contoh: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 

Di bagian bawah Anda melihat koefisien regresi biasa dengan nilai sesuai . Di kanan atas, Anda melihat beberapa indeks diskriminasi. Yang menunjukkan indeks-c (AUC), dan indeks-c dari menunjukkan pemisahan acak sedangkan indeks-c dari menunjukkan prediksi sempurna. adalah korelasi peringkat Somers antara probabilitas yang diprediksi dan respons yang diamati. memiliki hubungan sederhana dengan indeks-c: . Sebuah dari terjadi ketika prediksi model yang acak dan ketika , model sempurna diskriminasi. Dalam hal ini, indeks-c adalah0,5 1 D x y D x y D x y = 2 ( c - 0,5 ) D x y 0 D x y = 1 0,693 > 0,8pC0.51DxyDxyDxyDxy=2(c0.5)Dxy0Dxy=10.693 yang sedikit lebih baik dari kebetulan tetapi indeks-c cukup baik untuk memprediksi hasil individu.>0.8

Seperti yang dikatakan di atas, model ini cenderung terlalu optimis. Kami sekarang menggunakan bootstrap untuk mengukur optimisme:

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

Mari kita berkonsentrasi pada yang ada di atas. Kolom pertama menunjukkan indeks asli, yaitu . Kolom yang disebut menunjukkan jumlah perkiraan yang terlalu tinggi oleh model. Kolom adalah perkiraan awal dikurangi optimisme. Dalam hal ini, yang bias dikoreksi sedikit lebih kecil dari aslinya. C-index bias-dikoreksi (AUC) adalah . 0,3857 D x y c = 1 + D x yDxy0.3857optimismindex.correctedDxyc=1+Dxy2=0.6749

Kami juga dapat menghitung kurva kalibrasi menggunakan resampling:

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

Kalibrasi LogReg

Plot memberikan beberapa bukti bahwa model kami overfitting: model meremehkan probabilitas rendah dan melebih-lebihkan probabilitas tinggi. Ada juga perkiraan yang terlalu sistematis sekitar .0.3

Pembuatan model prediktif adalah topik besar dan saya sarankan membaca catatan kursus Frank Harrell .


5
Terima kasih banyak untuk contoh-contoh luar biasa dan caranya untuk rmspaket @COOLSerdash dan Nick.
Frank Harrell

Terima kasih banyak atas jawaban Anda, itu juga banyak membantu saya! Saya punya pertanyaan singkat, apa yang Anda maksud dengan estimasi lebih sistematis sekitar 0,3? Dan bisakah Anda melihat grafik saya? s23.postimg.org/9cucdg6e3/calibration_curve.png Bagaimana saya menginterpretasikan output ini
CanCeylan

2
@CanCeylan Dalam grafik saya, ada kurva kecil di garis sekitar 0,3 (garisnya di bawah garis ideal). Mengenai grafik Anda: Harap tambahkan grafik Anda ke pertanyaan awal Anda sehingga orang lain dapat melihatnya juga. Sepertinya model Anda meremehkan probabilitas secara sistematis di seluruh ruang.
COOLSerdash

@COOLSerdash terima kasih. Saya juga memperbarui pertanyaan saya. Tetapi dari sana, bagaimana saya harus memutuskan apakah akan membatalkan model atau menggunakannya? Karena nilai c tidak buruk (0,7755), Kesalahan absolut rata-rata (0,002) dan Kesalahan kuadrat rata-rata (5e-05) sangat kecil, tetapi grafik kalibrasi terlihat seperti buruk. \
CanCeylan

@CanCeylan Terima kasih telah memperbarui pertanyaan Anda. Hm, saya tidak yakin. Alur kalibrasi terlihat tidak terlalu bagus. Saya akan menunggu lebih banyak pendapat (dari Frank Harrell atau yang lain). Saya tidak merasa cukup percaya diri untuk memberikan rekomendasi yang pasti, maaf.
COOLSerdash

6

Catatan tentang interpretasi koefisien: ingat mereka tergantung pada bagaimana prediktor ditulis sebagai angka. Jadi untuk variabel kontinu mereka bergantung pada unit di mana mereka diukur; untuk prediktor kategori, skema pengkodean. Jangan tergoda untuk berpikir bahwa, katakanlah, A9 'tidak penting' hanya karena koefisiennya 0,003453 kecil — A9 mungkin berkisar pada beberapa urutan besarnya dalam beberapa populasi yang diminati sementara prediktor lain hanya sedikit berbeda, atau mungkin saja mudah diatur ke nilai yang sangat tinggi atau rendah sementara yang lain sulit untuk berubah banyak.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.