我正在尝试使用R包R2BayesX来拟合多状态模型。我怎样才能正确地这样做?手册中没有示例。这是我的尝试。
- 活动为1/0,即状态
- 时间就是时间
- 患者id是我想要的随机效果
f <- activity ~ sx(time,bs="baseline")+sx(PatientId, bs="re")
b <- bayesx(f, family = "multistate", method = "MCMC", data=df)
注意:创建了新的输出目录
警告信息:
在run.baesx(file.path(res$bayesx.prg$file.dir,prg.name=res$bayesx.prg$prg.name)中,:
bayesx运行时发生错误,请检查bayesx日志文件!
我不确定你到底想指定什么样的模型,但我试图提供一个人工的非敏感数据集,以使上述错误可重现:
set.seed(1)
df <- data.frame(
activity = rbinom(1000, prob = 0.5, size = 1),
time = rep(1:50, 20),
id = rep(1:20, each = 50)
)
也许,您可以提供一个改进的示例。然后我可以运行你的代码:
library("R2BayesX")
f <- activity ~ sx(time, bs = "baseline") + sx(id, bs = "re")
b <- bayesx(f, family = "multistate", method = "MCMC", data = df)
这导致了上面的警告,您可以通过检查BayesX的日志文件
bayesx_logfile(b)
告诉你的(以及其他信息):
ERROR: family multistate is not allowed for method regress
因此,这里似乎只支持REML估计,但是:
b <- bayesx(f, family = "multistate", method = "REML", data = df)
也会导致一个错误,日志文件显示:
ERROR: Variable state has to be specified as a global option!
因此,国家必须以不同的方式提供。我想你试图通过二进制响应来做到这一点,但似乎响应应该是时间变量(就像在生存模型中一样),然后需要以某种方式提供一个额外的状态指示器。不过,我在BayesX手册中找不到这样的例子。我建议您联系BayesX邮件列表和/或R2BayesX软件包维护人员,提出更具体的问题和可重复的示例。