临床医学与生存分析
竞争风险模型 (CIF/CSH)
在互斥终点并存时估计目标事件的累积发病率,并用原因特异性回归看协变量如何改变该终点的瞬时风险。
这篇能回答什么
竞争风险分析回答两件相关但不同的事。第一件是描述:「到时刻 t,真正发生目标终点(复发、心血管死亡等)的累积比例是多少」——这是累积发病率 CIF,用 Aalen–Johansen 估计,并且承认另一个终点一旦发生,目标终点就不可能再出现。第二件是回归:在处理删失的同时,协变量如何改变目标终点的瞬时发生率——这是原因特异性风险(Cause-Specific Hazard, CSH),StatsX 用把竞争编码当作删失的 Cox 来估 CSH-HR。
适合:随访时间为正的持续时间,事件列为多状态:0 = 删失,1 = 目标终点,2 = 竞争终点。协变量可空,最多 30 个。本教学绑定把「竞争事件」列当作多状态结局,协变量只放「年龄」。
什么时候不该用
只有一种终点、其余全是失访或研究结束时,Kaplan-Meier 的 S(t) 与 1−CIF 互补,不必上竞争风险。要在控制多个因素后报告普通 Cox 的 HR、且你愿意把其他死亡一律当删失,用Cox 比例风险回归并在方法学里写清「原因特异性」。本页不是 Fine–Gray 亚分布风险模型,不要把表里的 CSH-HR 写成 SHR。要把模型做成床旁打分尺,衔接列线图。
如何选择方法
先数终点种类。一种终点 + 删失:KM 描述、Cox 调混杂。两种互斥终点(复发 vs 移植相关死亡、肿瘤死亡 vs 其他死亡):CIF 必须用竞争风险;回归再决定要 CSH 还是亚分布。StatsX 这一页给出 CIF 图 + CSH 表,不拟合 Fine–Gray。连续暴露的弯曲轨迹另看限制性立方样条。
竞争风险 (CIF/CSH):1 个时间、1 个 0/1/2 事件、0–30 个协变量;图为两条 CIF 阶梯,表为 CSH-HR。
Kaplan-Meier:把非目标状态一律当删失,1−KM 会把竞争终点的人「假装还能发生目标事件」。
Cox:事件必须是 0/1;得到的也是原因特异性 HR,只是没有 AJ 的 CIF 图。
列线图:把回归翻译成可加分数,不替代 CIF。
输入、输出与限制
输入
随访时间一列定量。多状态事件一列定类,约定 1 必须出现(目标),2 表示竞争;没有 2 时程序仍跑,但竞争 CIF 画成一条零线,并在洞察里标明单事件模式。协变量定量或定类均可。
随访时间:最少 1 个,最多 1 个,定量。
多状态事件:最少 1 个,最多 1 个,定类。
协变量:最少 0 个,最多 30 个,定量或定类。
输出
表只报告目标终点的 CSH:各协变量的原因特异性 HR、95% CI、P 值,以及「显著预后因素 / 不显著」。表注给出总 N、目标例数、竞争例数,并写明竞争在 CSH 里被视作删失。图是 Aalen–Johansen 的目标 CIF 与竞争 CIF(含风险集刻度)。未放协变量时表可以为空,图仍然给出两条累积发病率。
产品限制
有效行(时间、事件、所用协变量按行删缺失)至少 20。
事件编码必须出现 1;否则直接报错。没有 2 时退化为单事件 CIF,并不虚构竞争例。
CSH 用 lifelines 的 CoxPHFitter;不收敛时表内给出错误说明而不是假 HR。
不做 Fine–Gray、不做 CIF 回归(如 Fine–Gray 或 logit 链接的伪观测),也不输出 Gray 检验。
AJ 曲线在实现里关闭了方差带(calculate_variance=False),图上没有 CIF 的置信带。
案例
研究问题。 随访中途有人因为另一种终点离开了风险集,这种离开会让目标终点再也无法发生。若把这些人标成普通删失再画 1−KM,目标终点的累积发生会被抬高。需要 CIF 还原「实际发生了多少」,并在此基础上看年龄是否改变目标终点的瞬时风险。
同一份临床 xlsx 的 survival 表有 280 行。请用「竞争事件」列而不是旁边那列二元「事件」:0 共 222 人仍删失,1 共 12 人是目标终点,2 共 46 人是竞争终点。协变量勾选年龄。目标 12 例配 1 个协变量已经偏紧,年龄 CSH 不显著是预期,不是界面坏了。下载后按时间 = 随访时间、多状态 = 竞争事件、协变量 = 年龄复现。
在 StatsX 中操作
步骤 1 · 上传表格
打开工作台,导入临床教学 xlsx,工作表选 survival。单文件不超过 20 MB。
步骤 2 · 查看画像与质量
确认「竞争事件」出现 0、1、2 三档。「事件」列只有 0/1,拿去跑本方法会变成单事件模式,丢掉 46 例竞争信息。
步骤 3 · 选择「竞争风险模型 (CIF/CSH)」
目录搜「竞争」或 CIF,不要点成 Kaplan-Meier 或普通 Cox。
步骤 4 · 指定变量并运行
随访时间 = 随访时间;多状态事件 = 竞争事件;协变量勾选年龄(可留空只看 CIF)。点击运行分析。
步骤 5 · 阅读结果
先对表注里的 12 与 46,确认事件列没拿错;再看 CIF 两条阶梯是否在后期被竞争终点抬起;最后读 CSH-HR 是否跨过 1。




如何阅读输出
下表是同一 280 人、目标 12、竞争 46 时,只放年龄的 CSH。年龄的原因特异性 HR = 0.9827,区间 [0.944, 1.023] 穿过 1,P = 0.390,结论列写「不显著」。表注强调:估这个 HR 时,46 例竞争被编码成删失——这是 CSH 的定义,不是漏处理。
| 预后特征 / 协变量 | 原因特异性 HR (CSH-HR) | 95% CI | P 值 | 统计学结论 |
|---|---|---|---|---|
| 年龄 | 0.9827 | [0.944, 1.023] | 0.390 | 不显著 |
左右滑动可查看完整表格
总样本量: 280。目标事件发生数: 12,竞争事件发生数: 46。在 CSH 模型中,竞争事件被视为删失,HR 反映了协变量对发生目标事件的瞬时相对风险贡献。


【竞争风险CIF】竞争事件数=46,Aalen-Johansen估计累积发病率,规避KM高估。
正确写法:在 46 例竞争终点存在时,用 AJ 描述目标终点的累积发生;年龄对目标终点的瞬时风险没有可检测的独立贡献。错误写法包括:把 CIF 叫成「生存率」、把 CSH-HR 叫成 Fine–Gray SHR、或用 1−KM 当发病率。若把「分组」放进协变量,那是方案的 CSH,不能代替本页年龄模型。目标仅 12 例,再堆协变量会立刻不稳。
理论与公式
原因特异性风险 λ_k(t) 是「活到 t 且尚未发生任何终点」的人,在接下来一瞬间发生第 k 类终点的速率。Aalen–Johansen 把总生存(尚未发生任何终点)与该类风险乘起来再累积,得到 CIF:
所有互斥终点的 CIF 加上仍未发生任何事件的概率,在每个 t 加总为 1。1−KM 把竞争终点当删失,相当于假设这些人将来仍按原风险发生目标终点,因而 F_1(t) 被抬高。原因特异性 Cox 把目标编码为 1、其余(含竞争)编码为 0,拟合:
exp(β) 是 CSH-HR:年龄每增加一岁,目标终点的瞬时发生率变为多少倍。它不直接等于 CIF 曲线的垂直距离比。Fine–Gray 改的是亚分布风险,对应的 SHR 才更接近「对 CIF 的协变量效应」;本页不估 SHR。本例年龄 HR 0.98、区间含 1,与 12 例目标终点的信息量相符。
注意事项
务必用 0/1/2 的多状态列。把竞争终点改成 0 再跑 KM 或本页单事件模式,CIF 与 1−KM 的差别会消失,高估也被藏起来。
CSH 显著不等于 CIF 在该协变量水平上分开同样大;解释时写「瞬时风险」而不是「累积发病比」。
目标例数很少时,CSH 区间很宽,「不显著」不能写成年龄无关。
时间原点仍须统一;把入院年龄误当随访时长会让风险集错位。
没有 Gray 检验:两条 CIF 的组间差别需要另做,或先用 KM 的 Log-rank 但须承认其假设不同。
图上无 CIF 置信带,不宜把阶梯的细小分离写成「发病率已经不同」。
常见问题
参考文献
Aalen, O. O., & Johansen, S. An Empirical Transition Matrix for Non-Homogeneous Markov Chains Based on Censored Observations[J]. Scandinavian Journal of Statistics, 1978, 5(3): 141–150.
Prentice, R. L., et al. The Analysis of Failure Times in the Presence of Competing Risks[J]. Biometrics, 1978, 34(4): 541–554.
Fine, J. P., & Gray, R. J. A Proportional Hazards Model for the Subdistribution of a Competing Risk[J]. Journal of the American Statistical Association, 1999, 94(446): 496–509.
Austin, P. C., Lee, D. S., & Fine, J. P. Introduction to the Analysis of Survival Data in the Presence of Competing Risks[J]. Circulation, 2016, 133(6): 601–609.
陈峰. 医用多元统计分析方法[M]. 中国统计出版社.