跳到主要内容
临床统计方法速查站
方法分类

竞争风险与累积发生函数 Competing Risks, Cumulative Incidence, and Fine-Gray Model (CIF / Gray / Fine-Gray)

在目标事件可能被另一事件阻止时估计累积发生函数,用 Gray 检验比较 CIF,并可用 Fine-Gray 模型估计亚分布风险比。

统计原理

竞争事件一旦发生,会使目标事件以后不可能被观察。例如分析疾病进展时,“未进展先死亡”会阻止后续进展。原因 kk 的累积发生函数(CIF)是绝对概率:

Fk(t)=P(T≤t,J=k)=∫0tS(u−) dΛk(u),F_k(t)=P(T\le t,J=k)=\int_0^t S(u-)\,d\Lambda_k(u),

其中 S(u−)S(u-) 是任何事件尚未发生的概率,Λk\Lambda_k 是原因 kk 的原因别累积风险。竞争事件既不计入目标事件,也不能像普通失访一样简单忽略;把它当普通删失后用 1−S^KM(t)1-\widehat S_{KM}(t) 会假想这些人仍可发生目标事件,通常高估目标事件的绝对累积概率。

Gray 检验比较两组目标事件 CIF 的整条曲线。Fine-Gray 模型则对亚分布风险施加比例假设:

λˉk(t∣X)=λˉk0(t)exp⁡(βX),\bar\lambda_k(t\mid X)=\bar\lambda_{k0}(t)\exp(\beta X),

exp⁡(β)\exp(\beta) 是亚分布风险比(sHR)。本页方向为 Drug A / Placebo;sHR<1 表示在模型假设下 Drug A 的目标事件 CIF 倾向较低,但 sHR 不是原因别 HR,也不是某时点 CIF 的简单比值。

本页模拟 example.csv · 可探索 目标事件与竞争事件共同决定 CIF

时间线来自本页 40 例 example.csv。目标事件 ● 增加 CIF,竞争事件 ◆ 会阻止此后再发生目标事件。

目标事件 CIF Drug A 与 Placebo 随时间的阶梯曲线,竖线表示当前时间。
受试者随访时间线 ● 事件 ◆ 竞争事件 × 删失 · 小屏可横向滑动
A001 Drug A 90 天,事件,分层 总体
A002 Drug A 140 天,事件,分层 总体
A003 Drug A 190 天,事件,分层 总体
A004 Drug A 250 天,事件,分层 总体
A005 Drug A 310 天,事件,分层 总体
A006 Drug A 420 天,事件,分层 总体
A007 Drug A 80 天,竞争事件,分层 总体
A008 Drug A 170 天,竞争事件,分层 总体
A009 Drug A 280 天,竞争事件,分层 总体
A010 Drug A 390 天,竞争事件,分层 总体
A011 Drug A 120 天,删失,分层 总体
A012 Drug A 210 天,删失,分层 总体
A013 Drug A 260 天,删失,分层 总体
A014 Drug A 330 天,删失,分层 总体
A015 Drug A 365 天,删失,分层 总体
A016 Drug A 410 天,删失,分层 总体
A017 Drug A 450 天,删失,分层 总体
A018 Drug A 480 天,删失,分层 总体
A019 Drug A 520 天,删失,分层 总体
A020 Drug A 560 天,删失,分层 总体
P001 Placebo 60 天,事件,分层 总体
P002 Placebo 85 天,事件,分层 总体
P003 Placebo 110 天,事件,分层 总体
P004 Placebo 145 天,事件,分层 总体
P005 Placebo 175 天,事件,分层 总体
P006 Placebo 205 天,事件,分层 总体
P007 Placebo 235 天,事件,分层 总体
P008 Placebo 270 天,事件,分层 总体
P009 Placebo 305 天,事件,分层 总体
P010 Placebo 340 天,事件,分层 总体
P011 Placebo 95 天,竞争事件,分层 总体
P012 Placebo 160 天,竞争事件,分层 总体
P013 Placebo 245 天,竞争事件,分层 总体
P014 Placebo 360 天,竞争事件,分层 总体
P015 Placebo 130 天,删失,分层 总体
P016 Placebo 220 天,删失,分层 总体
P017 Placebo 300 天,删失,分层 总体
P018 Placebo 400 天,删失,分层 总体
P019 Placebo 470 天,删失,分层 总体
P020 Placebo 540 天,删失,分层 总体

当前解释

Drug A 截至 270 天的目标事件 CIF=0.213;最近失败前 S(u−)=0.741。

核对本图使用的 example.csv

什么时候用

时间-事件终点存在会阻止目标事件的另一种事件,且需要报告目标事件的绝对累计概率或比较组间 CIF 时使用。常见场景包括移植后复发(无复发死亡为竞争事件)、心血管特定原因死亡(其他原因死亡为竞争事件)。

SAP 里长这样:

The cumulative incidence function for progression, treating death without prior progression as a competing event, will be estimated by treatment group. Groups will be compared using Gray’s test. A Fine-Gray proportional subdistribution hazards model will estimate the subdistribution hazard ratio (Drug A / placebo).

看到 competing risk / cumulative incidence / Gray / subdistribution hazard / Fine-Gray,应先确认每个状态代码、目标事件以及 estimand 对竞争事件的处理策略。

适用条件速查卡

项条件
数据结构每名受试者对目标参数一条最早事件/竞争事件/删失记录
状态编码本页 STATUS=0 删失、1 目标事件、2 竞争事件
CIF 前提删失在给定信息下非信息性;目标/竞争事件分类互斥且时间定义一致
Gray 检验比较目标事件 CIF;不直接提供效应量
Fine-Gray亚分布风险满足比例假设;sHR 方向为 Drug A / Placebo
原因别 Cox回答当前无任何事件者的瞬时原因别风险,和 Fine-Gray 的 estimand 不同
输入范围目标 PARAMCD、分析集、ANL01FL='Y' 已限定且一人一条

核心 SAS 代码

proc lifetest data=adtte_ttp outcif=cif_estimates
    timelist=180 365 reduceout plots=cif(test);
  time aval*status(0) / eventcode=1;
  strata trt01p;
run;

proc sort data=adtte_ttp(keep=trt01p) out=fg_profiles nodupkey;
  by trt01p;
run;

proc phreg data=adtte_ttp plots(overlay=stratum)=cif;
  class trt01p(ref='Placebo') / param=ref;
  model aval*status(0)=trt01p / eventcode=1;
  hazardratio trt01p / diff=ref cl=wald;
  baseline covariates=fg_profiles out=fg_model_cif cif=_all_
           / rowid=trt01p seed=20260821;
run;
  • status(0) 只把 0 指定为删失;eventcode=1 指定 1 为目标事件,其他非零值自动作为竞争事件。
  • OUTCIF= 保存目标事件 CIF 与置信限;timelist= 应使用 SAP 预设时间点和正式时间换算规则。
  • plots=cif(test) 展示 CIF 并执行 Gray 同质性检验。
  • PHREG 中同一 eventcode=1 拟合 Fine-Gray 亚分布风险模型。参考组和 hazardratio 标签共同确定 sHR=Drug A / Placebo。
  • PLOTS=CIF 画的是 Fine-Gray 模型 CIF,不是前一个 LIFETEST 的经验 CIF。FG_PROFILES 从模型输入数据提取实际治疗水平,因此继承相同的长度与格式;BASELINE COVARIATES= 再显式给出 Drug A 和 Placebo 两组协变量设置。若省略,CLASS 变量默认使用参考水平,图中只有 Placebo 模型曲线。

变量解释表

变量含义典型来源
USUBJID受试者唯一标识ADTTE.USUBJID
TRT01P计划治疗组ADSL.TRT01P → ADTTE.TRT01P
PARAMCD目标参数;示例为 TTPADTTE.PARAMCD
AVAL从规定起点到首次目标/竞争事件或删失的时间ADTTE.AVAL
STATUS0=删失, 1=进展, 2=无进展死亡事件类型派生
ANL01FL主分析记录标记ADTTE.ANL01FL
EVNTDESC状态原因的可读说明,建议保留用于 QCADTTE.EVNTDESC

输出对照

SAS 输出关键值Shell 行
Summary of Failure Outcomes目标事件、竞争事件、删失人数每组 n / events / competing events
CIF_ESTIMATES指定时点 CIF、Lower/Upper CLCumulative incidence at Day 180/365, % (95% CI)
Gray’s TestChi-Square、DF、p 值Gray test p-value
FG_HAZARD_RATIOHazardRatio、HRLowerCL、HRUpperCLSubdistribution HR (Drug A / Placebo), 95% CI
FG_PARAMETERS系数、标准误、Wald p 值Fine-Gray model p-value;须与 sHR 同一模型
FG_MODEL_CIF / TRT01PDrug A 和 Placebo 各自的模型 CIF 及置信限模型支持性曲线;与经验 CIF 分开标注

CIF 应按百分比展示,sHR 是相对模型效应;二者不能互相替代。若 SAP 指定 Gray 检验为主检验而 Fine-Gray 仅为支持性分析,shell 和结论必须保持该层级。

示例数据与程序

  • example.csv — 40 例原创模拟记录,包含进展、无进展死亡和删失三种状态
  • example.sas — CIF、指定时点估计、Gray 检验和 Fine-Gray sHR 的完整程序

常见坑

竞争事件不是普通删失

  • 用 1-KM 当 CIF:在竞争风险存在时通常高估目标事件绝对概率,应使用 Aalen-Johansen/CIF 估计。
  • 状态代码写错:eventcode=1 必须和 ADTTE 规范一致;目标与竞争事件对换会完全改变问题。
  • 混淆 sHR 与原因别 HR:二者风险集、估计目标和临床解释不同,数值不应期望相等。
  • 只看 Gray p 值:p 值不说明差异大小;应同时给每组 CIF 和预设时点的绝对差异描述。
  • 忽略亚分布 PH 假设:单一 sHR 仍是比例模型参数;曲线效应随时间变化时应按 SAP 做诊断或替代描述。
  • 模型 CIF 未给协变量设置:没有 BASELINE COVARIATES= 时,CLASS 变量只使用参考水平;不能把只有 Placebo 的图称为“两组模型 CIF”。
  • 把治疗后干预误当竞争事件:哪些事件阻止目标事件由 estimand 和 SAP 决定,不能仅凭数据方便性分类。

原始方法与 SAS 实现依据:Fine & Gray (1999), A Proportional Hazards Model for the Subdistribution of a Competing Risk;SAS/STAT 15.3 PROC LIFETEST 官方文档;SAS/STAT 15.3 PROC PHREG 官方文档。

相关方法

  • Cox 比例风险回归 用半参数比例风险模型估计治疗组风险比及置信区间,并可按随机分层因素分层或校正协变量。
  • Kaplan-Meier 生存分析 估计时间-事件终点的生存曲线、中位时间和指定时点生存率,并用 log-rank 检验比较组间曲线。
  • 限制性平均生存时间 在预先指定限制时间内计算 KM 生存曲线下面积,用可解释的时间差比较治疗组且不依赖比例风险假设。