如何计算R中的个人限制性平均生存时间(RMST)?

时间:2019-09-04 03:46:38

标签: r survival

在计算R中的受限平均生存时间(RMST)时遇到了一些问题,我做了一些尝试。

这是我尝试自己计算RMST的想法。

i)我拟合了cox回归模型以获取h(t)的估计函数,并部署了各个协变量来计算h(t);

ii)我根据上述个体h(t)得出了个体生存曲线S(t);

iii)然后,我通过上述个体S(t)用以下公式计算出个体RMST:RMST = 0到tau的积分(S(t))。 (我不知道如何在此处输入正式公式,我敢肯定您会理解我的意思)。

我已经尝试过使用以下R代码来计算单个RMST的方法:

# load R package
library(survRM2)
library(survival)

# generate example
D <- rmst2.sample.data()
time <- D$time
status <- D$status
x <- D[,c(4,6,7)]

# fit cox regression model with weibull baseline
fit<-survreg(Surv(time,status)~ x[[1]] + x[[2]]+ x[[3]],data = D,dist = "weibull")

# get cox regression coefficients of covariables
beta=fit$coefficients

# get paramaters within baseline hazard
gamma.weibull=fit$scale

# cutomize a function to calculate individual hazard
hazard <- function(u,x1,x2,x3) {

  gamma.weibull*u^(gamma.weibull-1)*exp(beta[1]+beta[2]*x1+beta[3]*x2+beta[4]*x3)

}

# cutomize a function to calculate individual survival
surv <-function(t,x1,x2,x3) {

  sapply(t,function(z){
    exp(-integrate(hazard,lower=0,upper=z,x1=x1,x2=x2,x3=x3)$value)
    }
  )
}


rmst <- c() # genrate a empty vector
for(i in 1:312) { # 312 is the sample size

  rmst[i]=integrate(surv,0,5,x1=x[[1]][i],x2=x[[2]][i],x3=x[[3]][i])$value

}

# Error in integrate(surv, 0, 5, x1 = x[[1]][i], x2 = x[[2]][i], x3 = x[[3]][i]) : 
#   the integral is probably divergent

我有三个问题:

1)我的想法或计算过程有什么问题吗?

2)在步骤iii)中,某些情况下积分是不可积分的(即,积分不收敛)。有什么解决办法,还是应该使用近似评估?

3)最后一枪,有没有更好的方法来计算此单个RMST?

0 个答案:

没有答案