R中特定原因风险模型与多状态模型结果差异的技术咨询
问题:竞争风险场景下多状态Cox模型与特定原因Cox模型结果差异原因?
我参考了survival包的竞争风险示例文档,基于真实数据集开展竞争风险分析:患者仅会因pcm(浆细胞骨髓瘤)或死亡两种互斥原因结局,属于传统竞争风险场景。
数据集构建代码
library(survival) data(mgus2) mgus2$etime <- with(mgus2, ifelse(pstat == 0, futime, ptime)) event <- with(mgus2, ifelse(pstat == 0, 2 * death, 1)) mgus2$event <- factor(event, 0:2, labels = c("censor", "pcm", "death"))
建模方式
- 拟合多状态Cox模型:
得到pcm(转移1:2)和death(转移1:3)的参数估计。coxph(Surv(etime, event) ~ sex, data = mgus2, id = id) - 分别拟合两个特定原因Cox模型:
coxph(Surv(etime, event == "pcm") ~ sex, data = mgus2, id = id) coxph(Surv(etime, event == "death") ~ sex, data = mgus2, id = id)
疑问
两种建模方式结果相近但不完全一致,尤其是death结局的z值、p值存在差异。想知道:
- 为何结果会有差异?
- 是否误解了多状态模型的拟合逻辑?
- 我需要单独建模以开展亚组分析及使用emmeans进行后估计,目前仅单结局Cox模型可实现该需求,是否可行?
回答
1. 结果差异的原因
在传统竞争风险(单一初始状态、互斥结局、无重复事件)的理论框架下,多状态Cox模型与两个独立的特定原因Cox模型是等价的,但survival包的实现细节导致了数值上的细微差异:
- 多状态模型是同时估计所有结局的参数,共享部分似然的计算框架与数值优化过程;而单独的特定原因Cox模型是针对每个结局独立计算部分似然并优化。
- 两者在处理事件时间相同情况的tie-breaking逻辑、数值收敛的精度控制上存在细微差别,最终导致参数估计的z值、p值出现小幅度差异。
- 你添加的
id参数在这个场景下(每个患者仅一次事件)不会改变核心逻辑,但多状态模型对id的解析逻辑与单结局模型略有不同,也可能放大这种数值差异。
2. 对多状态模型拟合逻辑的理解没有偏差
你认为“传统竞争风险下多状态模型等价于两个特定原因Cox模型”的结论是正确的。这种数值差异是软件实现层面的细节问题,而非理论逻辑的错误。
3. 单独建模的可行性
完全可以使用单独的特定原因Cox模型开展亚组分析与emmeans后估计:
- 理论上两者等价,数值差异极小,不会影响最终结论的可靠性;
- 单结局Cox模型更灵活,适配emmeans等工具的后处理需求,也更便于拆分亚组进行分析。
内容的提问来源于stack exchange,提问作者jackahall
相关产品推荐
相关产品推荐

