How can assign an offset term in coxph function in R, which later can be used in the “mstate” package?

江枫思渺然 提交于 2021-01-28 11:51:22

问题


I am trying to use mstate package in R, for which I have to use coxph function using strata command. Here is a sample code:

library(mstate)
tmat <- trans.illdeath()
tg <- data.frame(stt=rep(0,6),sts=rep(0,6), illt=c(1,1,6,6,8,9),ills=c(1,0,1,1,0,1),
             dt=c(5,1,9,7,8,12),ds=c(1,1,1,1,1,1))
tg$patid <- factor(2:7,levels=1:8,labels=as.character(1:8))
tt <- matrix(c(rep(NA,6),tg$illt,tg$dt),6,3)
st <- matrix(c(rep(NA,6),tg$ills,tg$ds),6,3)
mslong<-msprep(time=tt,status=st,trans=tmat)
models <- coxph(Surv(Tstart, Tstop, status) ~ strata(trans), data=mslong, method='breslow')

I would like to assign an offset term only in the model for transition=3 (i.e. transition from illness to death) so that I can estimate the impact of different treatment effects by changing the offset term. Now, I can assign an offset term for all strata by

mslong$c1<-0
models<-coxph(Surv(Tstart, Tstop, status) ~ strata(trans)+offset(2*c1), data=mslong, method='breslow')

My question is how I can assign an offset term, for example, with coefficient=2 in the above code only for transition = 3 or strata=3? Note that I plan to run the following code from mstate package after. I would really appreciate any help on this.

fit <- msfit(models, trans=tmat)
pt <- probtrans(fit, predt=0)

回答1:


You can technically do it as follows:

# define c1 as an indicator for transition 3
mslong$c1<-ifelse(mslong$trans == 3, 1, 0)
model <-coxph(Surv(Tstart, Tstop, status) ~ strata(trans)+offset(2*c1), data=mslong, method='breslow')

However, statistically this does not make sense. The offset will be completely masked by the strata baseline hazard for transition 3. You can verify that regardless of offset, the likelihood remains the same:

Original model:

> coxph(Surv(Tstart, Tstop, status) ~ strata(trans), data=mslong, method='breslow')
Call:  coxph(formula = Surv(Tstart, Tstop, status) ~ strata(trans), 
    data = mslong, method = "breslow")

Null model
  log likelihood= -7.742402 
  n= 16 

Offset model:

> coxph(Surv(Tstart, Tstop, status) ~ strata(trans)+offset(2*c1), data=mslong, method='breslow')
Call:  coxph(formula = Surv(Tstart, Tstop, status) ~ strata(trans) + 
    offset(2 * c1), data = mslong, method = "breslow")

Null model
  log likelihood= -7.742402 
  n= 16 


来源:https://stackoverflow.com/questions/56049616/how-can-assign-an-offset-term-in-coxph-function-in-r-which-later-can-be-used-in

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!