Interpretasi dan validasi model regresi bahaya proporsional Cox menggunakan R dalam Bahasa Inggris

13

Bisakah seseorang menjelaskan model Cox saya kepada saya dalam bahasa Inggris?

Saya memasang model regresi Cox berikut untuk semua data saya menggunakan cphfungsi. Data saya disimpan di objek yang disebut Data. Variabel w,, xdan ykontinu; zadalah faktor dua level. Waktu diukur dalam bulan. Beberapa pasien saya kehilangan data untuk variabel z( NB : Saya telah mencatat saran Dr. Harrell, di bawah, bahwa saya menyalahkan nilai-nilai ini untuk menghindari bias model saya, dan akan melakukannya di masa depan).

> fit <- cph(formula = Surv(time, event) ~ w + x + y + z, data = Data, x = T, y = T, surv = T, time.inc = 12)

Cox Proportional Hazards Model
Frequencies of Missing Values Due to Each Variable
Surv(time, event)    w    x    y    z 
                0    0    0    0   14 

                Model Tests          Discrimination 
                                            Indexes        
Obs       152   LR chi2      8.33    R2       0.054    
Events     64   d.f.            4    g        0.437    
Center 0.7261   Pr(> chi2) 0.0803    gr       1.548    
                Score chi2   8.07                      
                Pr(> chi2) 0.0891                      

                   Coef    S.E.   Wald Z   Pr(>|Z|)
         w      -0.0133  0.0503    -0.26     0.7914  
         x      -0.0388  0.0351    -1.11     0.2679  
         y      -0.0363  0.0491    -0.74     0.4600  
         z=1     0.3208  0.2540     1.26     0.2067

Saya juga mencoba menguji asumsi bahaya proporsional dengan menggunakan cox.zphperintah di bawah ini, tetapi tidak tahu bagaimana menafsirkan hasilnya. Memutar plot()perintah memberikan pesan kesalahan.

 cox.zph(fit, transform="km", global=TRUE)
            rho chisq      p
 w      -0.1125 1.312 0.2520
 x       0.0402 0.179 0.6725
 y       0.2349 4.527 0.0334
 z=1     0.0906 0.512 0.4742
 GLOBAL      NA 5.558 0.2347

Masalah pertama

  • Adakah yang bisa menjelaskan hasil keluaran di atas kepada saya dalam bahasa Inggris? Saya memiliki latar belakang medis dan tidak ada pelatihan formal dalam statistik.

Masalah kedua

  • Seperti yang disarankan oleh Dr. Harrell, saya ingin memvalidasi model saya secara internal dengan melakukan 100 iterasi cross-validasi 10 kali lipat menggunakan rmspaket (dari apa yang saya pahami, ini akan memerlukan pembuatan 100 * 10 = 1000model yang berbeda dan kemudian meminta mereka untuk memprediksi waktu hidup pasien yang belum pernah mereka lihat).

    Saya mencoba menggunakan validatefungsi, seperti yang ditunjukkan.

    > v1 <- validate(fit, method="crossvalidation", B = 10, dxy=T)
    > v1
          index.orig training    test optimism index.corrected  n
    Dxy      -0.2542  -0.2578 -0.1356  -0.1223         -0.1320 10
    R2        0.0543   0.0565  0.1372  -0.0806          0.1350 10
    Slope     1.0000   1.0000  0.9107   0.0893          0.9107 10
    D         0.0122   0.0128  0.0404  -0.0276          0.0397 10
    U        -0.0033  -0.0038  0.0873  -0.0911          0.0878 10
    Q         0.0155   0.0166 -0.0470   0.0636         -0.0481 10
    g         0.4369   0.4424  0.6754  -0.2331          0.6700 10

    Bagaimana Anda melakukan resampling 100x? Saya pikir kode saya di atas hanya melakukan validasi silang sekali.

  • Saya kemudian ingin tahu seberapa bagus model saya di prediksi. Saya mencoba yang berikut ini:

    > c_index <- abs(v1[1,5])/2 + 0.5
    > c_index
    [1] 0.565984

    Apakah ini berarti bahwa model saya hanya sedikit lebih baik daripada membalik koin?

Masalah ketiga

Dr. Harrell menunjukkan bahwa saya mengasumsikan linearitas untuk efek kovariat, dan bahwa jumlah kejadian dalam sampel saya hampir tidak cukup besar untuk cocok dengan model yang andal jika semua efek kovariat kebetulan linear.

  • Apakah ini berarti saya harus memasukkan semacam istilah interaksi dalam model saya? Jika demikian, ada saran untuk apa yang harus dimasukkan?
Alexander
sumber
2
Saya mengedit beberapa pertanyaan utama saya di atas, sekitar tiga jam setelah saya awalnya menanyakannya. Saya telah mencoba mengikuti saran Dr. Harrell yang sangat membantu. Saya masih akan sangat menghargainya jika seseorang mencoba menjelaskan hasil di atas cphkepada saya dalam bahasa Inggris, atau mengarahkan saya ke referensi yang akan melakukannya. Harrell, terima kasih banyak atas bantuan Anda sejauh ini!
Alexander

Jawaban:

12

Untuk memulai, pertimbangkan beberapa hal. Pertama, Anda mengecualikan terlalu banyak pengamatan dengan data yang hilang dan ini akan menyebabkan bias. Pertimbangkan beberapa imputasi. Kedua, ada metode plot untukcox.zphyang berguna dalam menilai bahaya proporsional. Ketiga, Anda mengasumsikan linearitas untuk efek kovariat. Keempat, jumlah acara dalam sampel pelatihan Anda hampir tidak cukup besar untuk disesuaikan dengan model yang andal jika semua efek kovariat terjadi linier (yang jarang terjadi). Dan sampel uji Anda mungkin harus memiliki 400 peristiwa sebelum itu akan menghasilkan penilaian akurasi prediksi yang dapat diandalkan. Tidak jelas bahwa Anda memiliki cukup data untuk membagi data menjadi dua bagian. Mengesampingkan validasi (100 pengulangan validasi silang 10 kali lipat, atau menggunakan bootstrap) adalah solusi yang lebih baik. Validasi eksternal asli Anda (fungsi rcorr.censdan val.surv) dan resampling validasi internal (fungsi validate, calibrate) diimplementasikan dalam rmspaket R. Studi kasus untukrms2×2 tabel tidak yang sesuai untuk digunakan dengan data kontinu.

Frank Harrell
sumber
1
Harrell, terima kasih banyak atas komentar Anda. Saya mencoba mengetik plot(cox.zph(fit[[1]], transform="km", global=TRUE)), namun ini menghasilkan Error in plot.cox.zph(cox.zph(fit[[1]], transform = "km", global = TRUE)) : Spline fit is singular, try a smaller degrees of freedom. Apakah saya menyebut fungsi ini salah?
Alexander
1
Jika saya menggabungkan data pelatihan dan validasi saya, saya memiliki 166 pengamatan dengan 75 acara. Seperti yang Anda sarankan, saya bisa menyalahkan nilai variabel "z" untuk 13 pengamatan saya yang kehilangan data itu, menghilangkan masalah itu. Saya suka saran Anda untuk melakukan validasi silang 100x 10 kali lipat. Jika Anda punya waktu, saya akan sangat menghargai jika Anda bisa memberikan lebih banyak petunjuk nyata tentang cara menggunakan paket rms untuk melakukan ini. Sementara itu, saya akan terus membaca situs web Anda. Saya ingin mengambil kursus Anda di masa depan. Sayangnya, saya di Eropa saat ini, agak terlalu jauh!
Alexander
2
Untuk masalah singularitas, lakukan plot(cox.zph(...), df=2). Lihat studi kasus dalam catatan kursus untuk rmscontoh atau instal paket (yang juga membutuhkan Hmiscpaket) dan ketik perintah-perintah ini untuk membuka file bantuan:?cph ?validate.cph ?calibrate.cph
Frank Harrell
2
Sekali lagi terima kasih atas bantuan Anda! Akhir pekan ini saya mencetak catatan kursus Anda dan akan menghabiskan minggu ini membacanya dan mengerjakan semua studi kasus.
Alexander
4

Output dari fungsi R cph, berdasarkan contoh yang relevan, dijelaskan dalam hal yang mudah diikuti ini makalah yang oleh J. Fox ini.

Saya akan sangat menyarankan membaca makalah ini jika Anda belum melakukannya.

Zhubarb
sumber
1
Bisakah Anda menjelaskan bagaimana makalah menyarankan menafsirkan cphoutput?
smillig
2
+1 Terima kasih atas referensi dan selamat datang di situs ini! Alangkah baiknya jika Anda juga bisa memberikan ikhtisar ringkas tentang isi makalah ini karena kami mengupayakan jawaban yang dapat berdiri sendiri.
Gala
Tautan ini tidak ada lagi
Marcin Kosiński
1
Tautan socialsciences.mcmaster.ca/jfox/Books/Companion-1E/… saat ini berfungsi dan tampaknya merupakan makalah yang sama yang dirujuk dalam jawaban ini.
dnlbrky