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

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

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

统计原理

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

Fk(t)=P(Tt,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 的原因别累积风险。竞争事件既不计入目标事件,也不能像普通失访一样简单忽略;把它当普通删失后用 1S^KM(t)1-\widehat S_{KM}(t) 会假想这些人仍可发生目标事件,通常高估目标事件的绝对累积概率。

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

λˉk(tX)=λˉ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 的简单比值。

竞争事件改变目标事件的累积发生率

发生竞争事件后不再可能观察目标事件,因此不能把它简单当作普通删失。

什么时候用

时间-事件终点存在会阻止目标事件的另一种事件,且需要报告目标事件的绝对累计概率或比较组间 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 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;
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。

变量解释表

变量含义典型来源
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 同一模型

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 做诊断或替代描述。
  • 把治疗后干预误当竞争事件:哪些事件阻止目标事件由 estimand 和 SAP 决定,不能仅凭数据方便性分类。

相关方法

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