Regresi Logistik dengan splines regresi dalam R

12

Saya telah mengembangkan model regresi logistik berdasarkan data retrospektif dari database trauma nasional cedera kepala di Inggris. Hasil utama adalah kematian 30 hari (dilambangkan sebagai ukuran "Bertahan"). Langkah-langkah lain dengan bukti yang diterbitkan berpengaruh signifikan pada hasil dalam penelitian sebelumnya termasuk:

Year - Year of procedure = 1994-2013
Age - Age of patient = 16.0-101.5
ISS - Injury Severity Score = 0-75
Sex - Gender of patient = Male or Female
inctoCran - Time from head injury to craniotomy in minutes = 0-2880 (After 2880 minutes is defined as a separate diagnosis)

Menggunakan model-model ini, mengingat variabel dependen dikotomis, saya telah membangun regresi logistik menggunakan lrm.

Metode pemilihan variabel model didasarkan pada pemodelan literatur klinis yang ada diagnosis yang sama. Semua telah dimodelkan dengan linear fit dengan pengecualian ISS yang telah dimodelkan secara tradisional melalui polinomial pecahan. Tidak ada publikasi yang mengidentifikasi interaksi signifikan yang diketahui antara variabel-variabel di atas.

Mengikuti saran dari Frank Harrell, saya telah melanjutkan dengan menggunakan regresi splines untuk memodelkan ISS (ada keuntungan dari pendekatan ini yang disorot dalam komentar di bawah). Model dengan demikian ditentukan sebelumnya sebagai berikut:

rcs.ASDH<-lrm(formula = Survive ~ Age + GCS + rcs(ISS) +
    Year + inctoCran + oth, data = ASDH_Paper1.1, x=TRUE, y=TRUE)

Hasil dari model adalah:

> rcs.ASDH

Logistic Regression Model

lrm(formula = Survive ~ Age + GCS + rcs(ISS) + Year + inctoCran + 
    oth, data = ASDH_Paper1.1, x = TRUE, y = TRUE)

                      Model Likelihood     Discrimination    Rank Discrim.    
                         Ratio Test            Indexes          Indexes       
Obs          2135    LR chi2     342.48    R2       0.211    C       0.743    
 0            629    d.f.             8    g        1.195    Dxy     0.486    
 1           1506    Pr(> chi2) <0.0001    gr       3.303    gamma   0.487    
max |deriv| 5e-05                          gp       0.202    tau-a   0.202    
                                           Brier    0.176                     

          Coef     S.E.    Wald Z Pr(>|Z|)
Intercept -62.1040 18.8611 -3.29  0.0010  
Age        -0.0266  0.0030 -8.83  <0.0001 
GCS         0.1423  0.0135 10.56  <0.0001 
ISS        -0.2125  0.0393 -5.40  <0.0001 
ISS'        0.3706  0.1948  1.90  0.0572  
ISS''      -0.9544  0.7409 -1.29  0.1976  
Year        0.0339  0.0094  3.60  0.0003  
inctoCran   0.0003  0.0001  2.78  0.0054  
oth=1       0.3577  0.2009  1.78  0.0750  

Saya kemudian menggunakan fungsi kalibrasi dalam paket rms untuk menilai akurasi prediksi dari model. Hasil-hasil berikut diperoleh:

plot(calibrate(rcs.ASDH, B=1000), main="rcs.ASDH")

Kurva kalibrasi bootstrap dihukum karena overfitting

Setelah menyelesaikan desain model, saya membuat grafik berikut untuk menunjukkan pengaruh Tahun kejadian pada kelangsungan hidup, mendasarkan nilai median dalam variabel kontinu dan mode dalam variabel kategori:

ASDH <- Predict(rcs.ASDH, Year=seq(1994,2013,by=1),Age=48.7,ISS=25,inctoCran=356,Other=0,GCS=8,Sex="Male",neuroYN=1,neuroFirst=1)
Probabilities <- data.frame(cbind(ASDH$yhat,exp(ASDH$yhat)/(1+exp(ASDH$yhat)),exp(ASDH$lower)/(1+exp(ASDH$lower)),exp(ASDH$upper)/(1+exp(ASDH$upper))))
names(Probabilities) <- c("yhat","p.yhat","p.lower","p.upper")
ASDH<-merge(ASDH,Probabilities,by="yhat")
plot(ASDH$Year,ASDH$p.yhat,xlab="Year",ylab="Probability of Survival",main="30 Day Outcome Following Craniotomy for Acute SDH by Year", ylim=range(c(ASDH$p.lower,ASDH$p.upper)),pch=19)
arrows(ASDH$Year,ASDH$p.lower,ASDH$Year,ASDH$p.upper,length=0.05,angle=90,code=3)

Kode di atas menghasilkan output berikut:

Tren tahun dengan bawah dan atas

Pertanyaan saya yang tersisa adalah sebagai berikut:

1. Interpretasi Spline - Bagaimana saya bisa menghitung nilai p untuk splines digabungkan untuk variabel keseluruhan?

Dan Fountain
sumber
4
Kerja bagus. Untuk menampilkan efek Tahun, saya sarankan membiarkan variabel lain disetel pada nilai default (median untuk kontinu, mode untuk kategorikal) dan memvariasikan Tahun pada sumbu x, misalnya plot(Predict(rcs.ASDH, Year)),. Anda dapat membiarkan variabel lain bervariasi, membentuk kurva berbeda, dengan melakukan hal-hal seperti plot(Predict(rcs.ASDH, Year, age=c(25, 35))).
Frank Harrell
1
Saya tidak tahu mengapa - tetapi saya belum melihat banyak contoh kurva kalibrasi yang bias diperbaiki dalam literatur. Sepertinya ide yang bagus
charles
1
Untuk menguji hubungan keseluruhan dengan beberapa tes df, gunakan anova(rcs.ASDH).
Frank Harrell

Jawaban:

8

χ2

Dua cara yang direkomendasikan untuk menilai kecocokan model adalah:

  1. Kurva kalibrasi nonstrametrik smooth-overfitting yang terkoreksi (misalnya, * loess) untuk memeriksa akurasi absolut prediksi
  2. χ2

Ada beberapa keuntungan dari splines regresi dibandingkan polinomial fraksional, termasuk:

  1. 0
  2. Anda tidak perlu khawatir tentang asal prediktor. FP berasumsi bahwa nol adalah asal "ajaib" bagi prediktor, sedangkan splines regresi tidak berubah dengan menggeser prediktor dengan konstanta.

Untuk lebih lanjut tentang splines regresi dan penilaian linearitas dan aditivitas lihat handout saya di http://biostat.mc.vanderbilt.edu/CourseBios330 serta fungsi rmspaket R. rcsUntuk kurva kalibrasi bootstrap yang dihukum karena overfitting, lihat rms calibratefungsinya.

Frank Harrell
sumber
Saya telah mencoba untuk menentukan model dalam membuat model lengkap dengan semua variabel yang tersedia secara klinis termasuk yang awalnya dan yang diketahui relevan dengan diagnosis dan variabel hasil. Mereka semua variabel kontinu atau dikotomis linier dengan pengecualian ISS yang telah diidentifikasi studi sebelumnya dapat dimodelkan dengan polinomial pecahan. Metode yang saya gunakan untuk mengembangkan model yang saya yakini konsisten dengan "Pembuatan Model Multivarian" karya Willi Sauerbrei. Mungkin saya bisa menggunakan paket rms Anda dalam R untuk menilai kebaikan global yang sesuai? Jika demikian, formula apa yang akan Anda rekomendasikan?
Dan Fountain
Saya memperluas jawaban saya untuk mengatasi sebagian dari itu.
Frank Harrell
Bisakah Anda merekomendasikan paket untuk pelaksanaan 1 dan 2 untuk menilai kecocokan model? Bisakah saya menggunakan fungsi validasi di rms? Dalam hal splines regresi, saya membaca catatan kuliah Anda dan saat ini sedang mencoba untuk menemukan salinan buku Anda (saya akan membelinya jika saya bisa!) Apakah Anda dapat merekomendasikan paket R / fungsi lebih lanjut untuk pembuatan splines regresi untuk variabel kontinu non-linear dalam model ini? Terima kasih banyak atas semua bantuan Anda sejauh ini.
Dan Fountain
Mungkin paket bumi berdasarkan pada Splines Regresi Adaptif Multivariat Friedman?
Dan Fountain
Satu pertanyaan terakhir. Rumus untuk Skor Keparahan Cedera (ISS) adalah A ^ 2 + B ^ 2 + C ^ 2 di mana A, B dan C adalah bagian tubuh yang berbeda dengan skor keparahan trauma independen 1-5. Dengan demikian maksimum adalah 75 dan minimum 1 dalam set data ini. Dengan rumus ini, apakah polinomial pecahan akan menjadi representasi yang lebih dekat dengan bagaimana skor sebenarnya dihitung dibandingkan dengan splines regresi?
Dan Fountain