Pembaruan : Maaf untuk pembaruan lain tetapi saya telah menemukan beberapa solusi yang mungkin dengan polinomial fraksional dan paket risiko yang bersaing yang saya perlukan bantuan.
Masalah
Saya tidak dapat menemukan cara mudah untuk melakukan analisis koefisien dependen waktu dalam R. Saya ingin dapat mengambil koefisien variabel saya dan melakukannya menjadi koefisien dependen waktu (bukan variabel) dan kemudian plot variasi terhadap waktu:
Solusi yang memungkinkan
1) Memisahkan dataset
Saya telah melihat contoh ini (Se bagian 2 dari sesi lab) tetapi pembuatan dataset terpisah tampak rumit, komputasional mahal dan tidak terlalu intuitif ...
2) Model Reduced Rank - Paket coxvc
The paket coxvc menyediakan cara yang elegan untuk menangani masalah - di sini adalah panduan . Masalahnya adalah bahwa penulis tidak lagi mengembangkan paket (versi terakhir adalah sejak 23/5/2007), setelah beberapa percakapan email saya mendapatkan paket untuk bekerja tetapi satu kali berjalan membutuhkan 5 jam pada dataset saya (140 000 entri) dan memberikan perkiraan ekstrim pada akhir periode. Anda dapat menemukan paket yang sedikit diperbarui di sini - Saya baru saja memperbarui fungsi plot.
Mungkin hanya masalah penyesuaian tetapi karena perangkat lunak tidak mudah memberikan interval kepercayaan dan prosesnya sangat memakan waktu, saya sedang mencari solusi lain sekarang.
3) Paket penghitung waktu
Paket timereg yang mengesankan juga mengatasi masalah tetapi saya tidak yakin bagaimana menggunakannya dan itu tidak memberi saya alur yang mulus.
4) model Fractional Polynomial Time (FPT)
Saya menemukan disertasi Anika Buchholz yang sangat baik tentang "Penilaian efek jangka panjang yang bervariasi dari terapi dan faktor prognostik" yang melakukan pekerjaan luar biasa yang mencakup model yang berbeda. Dia menyimpulkan bahwa usulan FPT Sauerbrei et al tampaknya paling tepat untuk koefisien tergantung waktu:
FPT sangat baik dalam mendeteksi efek yang bervariasi waktu, sedangkan pendekatan Reduced Rank menghasilkan model yang terlalu rumit, karena tidak termasuk pemilihan efek yang bervariasi waktu.
Penelitian ini kelihatannya sangat lengkap tetapi sedikit di luar jangkauan saya. Saya juga sedikit bertanya-tanya karena dia kebetulan bekerja dengan Sauerbrei. Tampaknya terdengar baik dan saya kira analisis dapat dilakukan dengan paket mfp tapi saya tidak yakin bagaimana caranya.
5) Paket cmprsk
Saya sudah berpikir untuk melakukan analisis risiko saya yang bersaing, tetapi perhitungannya memakan waktu lama, jadi saya beralih ke regresi cox biasa. The crr memiliki thoug pilihan untuk waktu kovariat tergantung:
....
cov2 matrix of covariates that will be multiplied
by functions of time; if used, often these
covariates would also appear in cov1 to give
a prop hazards effect plus a time interaction
....
Ada contoh kuadrat tapi saya tidak cukup mengikuti di mana waktu sebenarnya muncul dan saya tidak yakin bagaimana menampilkannya. Saya juga sudah melihat file test.R tapi contohnya pada dasarnya sama ...
Contoh kode saya
Inilah contoh yang saya gunakan untuk menguji berbagai kemungkinan
library("survival")
library("timereg")
data(sTRACE)
# Basic cox regression
surv <- with(sTRACE, Surv(time/365,status==9))
fit1 <- coxph(surv~age+sex+diabetes+chf+vf, data=sTRACE)
check <- cox.zph(fit1)
print(check)
plot(check, resid=F)
# vf seems to be the most time varying
######################################
# Do the analysis with the code from #
# the example that I've found #
######################################
# Split the dataset according to the splitSurv() from prof. Wesley O. Johnson
# http://anson.ucdavis.edu/~johnson/st222/lab8/splitSurv.ssc
new_split_dataset = splitSuv(sTRACE$time/365, sTRACE$status==9, sTRACE[, grep("(age|sex|diabetes|chf|vf)", names(sTRACE))])
surv2 <- with(new_split_dataset, Surv(start, stop, event))
fit2 <- coxph(surv2~age+sex+diabetes+chf+I(pspline(stop)*vf), data=new_split_dataset)
print(fit2)
######################################
# Do the analysis by just straifying #
######################################
fit3 <- coxph(surv~age+sex+diabetes+chf+strata(vf), data=sTRACE)
print(fit3)
# High computational cost!
# The price for 259 events
sum((sTRACE$status==9)*1)
# ~240 times larger dataset!
NROW(new_split_dataset)/NROW(sTRACE)
########################################
# Do the analysis with the coxvc and #
# the timecox from the timereg library #
########################################
Ft_1 <- cbind(rep(1,nrow(sTRACE)),bs(sTRACE$time/365,df=3))
fit_coxvc1 <- coxvc(surv~vf+sex, Ft_1, rank=2, data=sTRACE)
fit_coxvc2 <- coxvc(surv~vf+sex, Ft_1, rank=1, data=sTRACE)
Ft_3 <- cbind(rep(1,nrow(sTRACE)),bs(sTRACE$time/365,df=5))
fit_coxvc3 <- coxvc(surv~vf+sex, Ft_3, rank=2, data=sTRACE)
layout(matrix(1:3, ncol=1))
my_plotcoxvc <- function(fit, fun="effects"){
plotcoxvc(fit,fun=fun,xlab='time in years', ylim=c(-1,1), legend_x=.010)
abline(0,0, lty=2, col=rgb(.5,.5,.5,.5))
title(paste("B-spline =", NCOL(fit$Ftime)-1, "df and rank =", fit$rank))
}
my_plotcoxvc(fit_coxvc1)
my_plotcoxvc(fit_coxvc2)
my_plotcoxvc(fit_coxvc3)
# Next group
my_plotcoxvc(fit_coxvc1)
fit_timecox1<-timecox(surv~sex + vf, data=sTRACE)
plot(fit_timecox1, xlab="time in years", specific.comps=c(2,3))
Hasil kode dalam grafik ini: Perbandingan pengaturan yang berbeda untuk coxvc dan coxvc dan plot timecox . Saya kira hasilnya ok tapi saya tidak berpikir saya akan bisa menjelaskan grafik timecox - sepertinya rumit ...
Pertanyaan saya (saat ini)
- Bagaimana saya melakukan analisis FPT di R?
- Bagaimana cara menggunakan kovariat waktu di cmprsk?
- Bagaimana saya memplot hasilnya (lebih disukai dengan interval kepercayaan)?
y~x
y~x*(t+t^2)-t
y~x+x:t+x:t^2