Bisakah seseorang menjelaskan model Cox saya kepada saya dalam bahasa Inggris?
Saya memasang model regresi Cox berikut untuk semua data saya menggunakan cph
fungsi. Data saya disimpan di objek yang disebut Data
. Variabel w
,, x
dan y
kontinu; z
adalah 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.zph
perintah 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
rms
paket (dari apa yang saya pahami, ini akan memerlukan pembuatan100 * 10 = 1000
model yang berbeda dan kemudian meminta mereka untuk memprediksi waktu hidup pasien yang belum pernah mereka lihat).Saya mencoba menggunakan
validate
fungsi, 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?
sumber
cph
kepada saya dalam bahasa Inggris, atau mengarahkan saya ke referensi yang akan melakukannya. Harrell, terima kasih banyak atas bantuan Anda sejauh ini!Jawaban:
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 untuk2×2 tabel tidak yang sesuai untuk digunakan dengan data kontinu.
cox.zph
yang 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 (fungsircorr.cens
danval.surv
) dan resampling validasi internal (fungsivalidate
,calibrate
) diimplementasikan dalamrms
paket R. Studi kasus untukrms
sumber
plot(cox.zph(fit[[1]], transform="km", global=TRUE))
, namun ini menghasilkanError 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?plot(cox.zph(...), df=2)
. Lihat studi kasus dalam catatan kursus untukrms
contoh atau instal paket (yang juga membutuhkanHmisc
paket) dan ketik perintah-perintah ini untuk membuka file bantuan:?cph
?validate.cph
?calibrate.cph
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.
sumber
cph
output?