如何使用R包MSTATE计算每个非吸收状态下的平均停留时间

如何使用R包MSTATE计算每个非吸收状态下的平均停留时间,r,survival-analysis,markov-chains,R,Survival Analysis,Markov Chains,我正在进行生存分析,似乎不知道该怎么做 在MSTATE教程中,下面是一段简单Cox回归的代码如何计算每个非吸收状态下的平均停留时间 代码: library(mstate) data(ebmt3) tmat <- trans.illdeath(names=c("Tx","PR","RelDeath")) ebmt3$prtime <- ebmt3$prtime/365.25 ebmt3$rfstime <- ebmt3$rfstime/365.25 covs <- c("d

我正在进行生存分析,似乎不知道该怎么做

在MSTATE教程中,下面是一段简单Cox回归的代码
如何计算每个非吸收状态下的平均停留时间

代码:

library(mstate)
data(ebmt3)
tmat <- trans.illdeath(names=c("Tx","PR","RelDeath"))
ebmt3$prtime <- ebmt3$prtime/365.25
ebmt3$rfstime <- ebmt3$rfstime/365.25
covs <- c("dissub", "age", "drmatch", "tcd", "prtime")
msbmt <- msprep(time = c(NA, "prtime", "rfstime"), status = c(NA, "prstat", "rfsstat"), data = ebmt3, trans = tmat, keep = covs)
expcovs <- expand.covs(msbmt, covs[2:3], append = FALSE)
msbmt <- expand.covs(msbmt, covs, append = TRUE, longnames = FALSE)
c1 <- coxph(Surv(Tstart, Tstop, status) ~ dissub1.1 + dissub2.1 +
 age1.1 + age2.1 + drmatch.1 + tcd.1 + dissub1.2 + dissub2.2 +
 age1.2 + age2.2 + drmatch.2 + tcd.2 + dissub1.3 + dissub2.3 +
 age1.3 + age2.3 + drmatch.3 + tcd.3 + strata(trans), data = msbmt,
 method = "breslow")

newd <- data.frame(dissub = rep(0, 3), age = rep(0, 3), drmatch = rep(0,
 3), tcd = rep(0, 3), trans = 1:3)
 newd$dissub <- factor(newd$dissub, levels = 0:2, labels = levels(ebmt3$dissub))
 newd$age <- factor(newd$age, levels = 0:2, labels = levels(ebmt3$age))
 newd$drmatch <- factor(newd$drmatch, levels = 0:1, labels = levels(ebmt3$drmatch))
 newd$tcd <- factor(newd$tcd, levels = 0:1, labels = levels(ebmt3$tcd))
 attr(newd, "trans") <- tmat
 class(newd) <- c("msdata", "data.frame")
 newd <- expand.covs(newd, covs[1:4], longnames = FALSE)
 newd$strata = 1:3
 newd
 msf1 <- msfit(c1, newdata = newd, trans = tmat)
库(mstate)
数据(ebmt3)

tmat我认为您正在寻找MSState中的ELOS函数-它代表在一个状态中的预期停留时间-要完成您的示例,您需要使用probtrans计算转移概率,然后您可以计算每个状态的ELOS

pt <- probtrans(msf1,predt=0)
# ELOS until last observed time point
ELOS(pt)

我假设这是家庭作业?您应该首先描述转移矩阵的结构。对于不同的协变量值,转换将不同。如果需要转移概率(从中导出平均逗留值,因为这是一个马尔可夫模型),则需要指定所需的协变量值。阅读
?msfit
。家庭作业-我希望如此!见鬼,那么我可以去问教授诺普,我是自学成才的,所以我在与波动的术语作斗争。我可以看到转移概率,但是你怎么计算逗留时间呢?那我们两个就这样了。一旦你有了转移矩阵,我相信这是一个相当简单的方法。所以我再说一遍。。。。指定协变量。好,现在您可以看到
tmat
是转移矩阵,我拟合了
msf1
。顺便说一句,这对我来说并不简单:)不幸的是,对象的msf1$trans组件不是转移概率矩阵。它实际上只是状态到状态转换的标签。一个转移概率矩阵(这是我在过去看到的被称为“转移矩阵”的数学对象)的行和都等于1。此软件包有绘图方法,因此
plot(msf1)
可能会提供信息。我认为这些数据需要通过msm或半马尔可夫包进行处理,以获得标准的转移(概率)矩阵。