अपडेट : एक और अपडेट के लिए क्षमा करें, लेकिन मुझे आंशिक पॉलीओनॉमियल और प्रतिस्पर्धी जोखिम-पैकेज के साथ कुछ संभावित समाधान मिल गए हैं जिनकी मुझे कुछ मदद चाहिए।
समस्या
मुझे समय पर निर्भर गुणांक विश्लेषण करने का एक आसान तरीका नहीं मिल रहा है। आर में है। मैं अपने चर को गुणांक लेने में सक्षम होना चाहता हूं और यह एक समय पर निर्भर गुणांक (चर नहीं) में करना चाहता हूं और फिर समय के खिलाफ भिन्नता की साजिश कर सकता हूं:
संभव समाधान
1) डेटासेट विभाजित करना
मैंने इस उदाहरण को देखा है (प्रयोगशाला सत्र का से भाग 2) लेकिन एक अलग डेटासेट का निर्माण जटिल, कम्प्यूटेशनल रूप से महंगा और बहुत सहज नहीं लगता है ...
2) कम रैंक मॉडल - coxvc पैकेज
Coxvc पैकेज समस्या से निपटने का एक सुंदर तरीका प्रदान करता है - यहाँ एक है मैनुअल । समस्या यह है कि लेखक अब पैकेज विकसित नहीं कर रहा है (अंतिम संस्करण 05/23/2007 के बाद से है), कुछ ई-मेल वार्तालाप के बाद मैंने काम करने के लिए पैकेज प्राप्त कर लिया है, लेकिन मेरे डाटासेट पर एक घंटे में 5 घंटे लग गए (140 000) प्रविष्टियाँ) और अवधि के अंत में अत्यधिक अनुमान देता है। आप यहां थोड़ा अद्यतन पैकेज पा सकते हैं - मैंने ज्यादातर प्लॉट फ़ंक्शन को अपडेट किया है।
यह सिर्फ ट्वीकिंग का सवाल हो सकता है लेकिन चूंकि सॉफ्टवेयर आसानी से विश्वास अंतराल प्रदान नहीं करता है और इस प्रक्रिया में इतना समय लगता है कि मैं अन्य समाधानों में अभी देख रहा हूं।
3) टाइमरेग पैकेज
प्रभावशाली टाइमेरेग पैकेज भी समस्या का समाधान करता है, लेकिन मैं इसका उपयोग करने के तरीके के बारे में निश्चित नहीं हूं और यह मुझे एक चिकनी साजिश नहीं देता है।
4) आंशिक बहुपद समय (FPT) मॉडल
मुझे अनिका बुचोलज़ का "समय का आकलन-उपचारों और रोग-संबंधी कारकों के दीर्घकालिक-अलग-अलग प्रभावों पर उत्कृष्ट शोध " मिला, जो विभिन्न मॉडलों को कवर करने के लिए एक उत्कृष्ट काम करता है। वह निष्कर्ष निकालती है कि Sauerbrei et al's प्रस्तावित FPT समय-निर्भर गुणकों के लिए सबसे उपयुक्त प्रतीत होता है:
एफपीटी समय-भिन्न प्रभावों का पता लगाने में बहुत अच्छा है, जबकि कम रैंक दृष्टिकोण के परिणामस्वरूप बहुत अधिक जटिल मॉडल होते हैं, क्योंकि इसमें समय-भिन्न प्रभावों का चयन शामिल नहीं है।
अनुसंधान बहुत पूरा लगता है, लेकिन यह मेरे लिए पहुंच से थोड़ा बाहर है। मैं भी थोड़ा हैरान हूं क्योंकि वह सॉरेबी के साथ काम करती है। यह ध्वनि लगता है और मुझे लगता है कि विश्लेषण mfp पैकेज के साथ किया जा सकता है लेकिन मुझे यकीन नहीं है कि कैसे।
5) cmprsk पैकेज
मैं अपने प्रतिस्पर्धी जोखिम विश्लेषण करने के बारे में सोच रहा हूं, लेकिन गणना समय लेने वाली है इसलिए मैंने नियमित कॉक्स प्रतिगमन पर स्विच किया। सीआरआर समय निर्भर covariates के लिए एक विकल्प thoug है:
....
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
....
द्विघात उदाहरण है, लेकिन मैं वास्तव में दिखाई देने वाले समय का बिल्कुल पालन नहीं कर रहा हूं और मुझे यकीन नहीं है कि इसे कैसे प्रदर्शित किया जाए। मैं भी test.R फ़ाइल पर देखा है, लेकिन उदाहरण वहाँ मूल रूप से एक ही है ...
मेरा उदाहरण कोड
यहां एक उदाहरण है जिसका उपयोग मैं विभिन्न संभावनाओं का परीक्षण करने के लिए करता हूं
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))
इन ग्राफ़ों में कोड परिणाम: कॉक्स पीवीसी और कॉक्स पीवीसी और टाइमकोक्स भूखंडों के लिए विभिन्न सेटिंग्स की तुलना । मुझे लगता है कि परिणाम ठीक हैं, लेकिन मुझे नहीं लगता कि मैं टाइमकोक्स ग्राफ की व्याख्या कर पाऊंगा - यह जटिल लगता है ...
मेरे (वर्तमान) सवाल
- मैं आरपीटी में एफपीटी विश्लेषण कैसे करूं?
- मैं cmprsk में समय कोवरिएट का उपयोग कैसे करूं?
- मैं परिणाम की साजिश कैसे कर सकता हूं (अधिमानतः आत्मविश्वास अंतराल के साथ)?
y~x
y~x*(t+t^2)-t
y~x+x:t+x:t^2