使用JMBayes2进行随访时间外预测的技术问题咨询
使用JMBayes2包生成长期预测的问题
我正在用JMBayes2包模拟数据范围外的结局,研究包含认知功能替代指标的纵向结局,以及认知功能“状态改变”的二分类结局,操作中遇到两个核心问题:
- 无法提取联合模型的基线风险:从GitHub代码来看,模型始终采用样条,但不知道如何提取相关信息。联合模型对象
$statistics下的bs_gammas似乎与基线风险样条相关,但没法根据这些信息确定基线风险——如果能获取样条方程,我可以自行生成生存概率。 predict.jm函数无法对建模数据的最大范围外做预测:请求预测超出数据最大随访时间的点时,结果里不会包含该点。
解决其中任意一个问题,都能帮我生成长期预测。
演示代码
library(JMbayes2) library(dplyr) pbc2$years %>% max ## 最大随访时间为14.3年 pbc2.id$status2 <- as.numeric(pbc2.id$status != 'alive') SurvFit <- survreg(Surv(years, status2) ~ sex, data = pbc2.id, dist = "weibull") fm1 <- lme(log(serBilir) ~ ns(year, 3) * sex, data = pbc2, random = ~ ns(year, 3) | id, control = lmeControl(opt = 'optim')) jointFit <- jm(CoxFit, fm1, time_var = "year") ## 选择需要预测的患者数据 t0 <- 3 ND <- pbc2[pbc2$id %in% c(2, 25), ] ND <- ND[ND$year < t0, ] ND$status2 <- 0 ND$years <- t0 # 基于新数据预测纵向结局 predLong1 <- predict(jointFit, newdata = ND, return_newdata = TRUE , process = "event" , times = 14:15 ## 一个在最大随访时间内,一个超出 ) predLong1 %>% dplyr::select(id, year, pred_CIF)
输出结果
id year pred_CIF 6 2 3 0.0000000 6.1 2 14 0.5943413 171 25 3 0.0000000 171.1 25 14 0.2668998
可以看到,请求的第15年随访数据未出现在结果中。
补充说明
我更倾向于让联合模型使用参数化基线风险分布,但即便在输入生存模型时指定了Weibull分布,JMBayes2似乎还是会生成样条。
后续补充(时隔一年)
始终没能实现JMBayes2的超数据范围预测。用JM包的系数可以轻松构建风险函数并做预测,但JMBayes2在模型估计中做了我无法复现的缩放处理,导致没法用它的系数完成同样操作。
内容的提问来源于stack exchange,提问作者Pieter van der Veere
相关产品推荐
相关产品推荐

