업데이트 : 다른 업데이트에 대해 죄송하지만 분수 다항식과 도움이 필요한 경쟁 위험 패키지가있는 가능한 솔루션을 찾았습니다.
문제
시간 종속 계수 분석을 수행하는 쉬운 방법을 찾을 수 없습니다 .R입니다. 변수 계수를 가져 와서 시간 의존 계수 (변수가 아닌)로 수행 한 다음 시간에 대한 변동을 플롯 할 수 있기를 원합니다.
가능한 해결책
1) 데이터 셋 분할
이 예제 (실험실 세션의 2 부)를 살펴 봤지만 별도의 데이터 집합을 만드는 것은 복잡하고 계산 비용이 많이 들고 직관적이지 않은 것으로 보입니다.
2) 감소 된 순위 모델-coxvc 패키지
coxvc 패키지는 이 문제를 처리하는 우아한 방법을 제공합니다 - 여기의 매뉴얼 . 문제는 저자가 더 이상 패키지를 개발하지 않고 있다는 것입니다 (마지막 버전은 2007 년 5 월 23 일 이후 임). 전자 메일 대화 후 패키지가 작동했지만 데이터 세트에서 한 번의 실행에 5 시간이 걸렸습니다 (140 000 기간이 끝날 때 극단적 인 견적을 제공합니다. 약간 업데이트 된 패키지를 여기서 찾을 수 있습니다 -나는 대부분 플롯 기능을 업데이트했습니다.
그것은 조정의 문제 일지 모르지만 소프트웨어는 쉽게 신뢰 구간을 제공하지 않으며 프로세스가 너무 시간이 걸리기 때문에 지금 다른 솔루션을 찾고 있습니다.
3) timereg 패키지
인상적인 timereg 패키지 도 문제를 해결하지만 사용 방법을 잘 모르겠으며 매끄러운 음모를 나타내지 않습니다.
4) 분수 다항식 시간 (FPT) 모델
나는 다양한 모델을 다루는 훌륭한 일을하는 "시간의 평가 – 치료와 장기적 영향의 다양한 영향 평가"에 관한 Anika Buchholz의 훌륭한 논문을 발견했습니다 . 그녀는 Sauerbrei et al이 제안한 FPT 가 시간 의존 계수에 가장 적합한 것으로 보인다고 결론을 내립니다 .
FPT는 시변 효과를 감지하는 데 매우 뛰어나며 감소 된 순위 접근 방식은 시변 효과 선택을 포함하지 않기 때문에 너무 복잡한 모델을 생성합니다.
연구는 매우 완벽 해 보였지만 약간의 범위를 벗어났습니다. 그녀가 Sauerbrei와 함께 일한 이후로 조금 궁금합니다. 그래도 들릴 것 같고 mfp 패키지로 분석을 수행 할 수 있다고 생각 하지만 어떻게 해야할지 모르겠습니다.
5) cmprsk 패키지
경쟁 위험 분석을 생각하고 있었지만 계산에 시간이 많이 걸렸으므로 규칙적인 콕스 회귀 분석으로 전환했습니다. CRR은 시간 의존 공변량에 대한 옵션을 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))
이 그래프의 코드 결과 : 비교 coxvc에 대해 서로 다른 설정 과의 coxvc과 timecox의 플롯. 나는 결과가 괜찮다고 생각하지만 타임 콕스 그래프를 설명 할 수 없다고 생각합니다. 복잡한 것 같습니다 ...
내 (현재) 질문
- R에서 FPT 분석은 어떻게합니까?
- cmprsk에서 시간 공변량을 어떻게 사용합니까?
- 결과를 플롯하는 방법 (바람직하게는 신뢰 구간 포함)은 어떻게됩니까?
y~x
y~x*(t+t^2)-t
y~x+x:t+x:t^2