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

Cox 比例风险回归 Cox Proportional Hazards Regression (Cox PH)

用半参数比例风险模型估计治疗组风险比及置信区间,并可按随机分层因素分层或校正协变量。

统计原理

对风险层 ss 中协变量为 XX 的受试者,分层 Cox 模型写作:

hs(tX)=h0s(t)exp(βtrtIDrug A+βageAGE).h_s(t\mid X)=h_{0s}(t)\exp\left(\beta_{\mathrm{trt}}I_{\mathrm{Drug\ A}}+\beta_{\mathrm{age}}\,\mathrm{AGE}\right).

h0s(t)h_{0s}(t) 是第 ss 层自己的、无需指定形状的基线风险;各层共享治疗和年龄系数。治疗 HR 为

HRDrug A/Placebo=exp(βtrt).\mathrm{HR}_{\mathrm{Drug\ A/Placebo}}=\exp(\beta_{\mathrm{trt}}).

HR 比较的是任一时点“仍处于风险集的人下一瞬间发生事件的速率”,不是累计发生率之比,也不是中位生存期之比。HR=0.57 表示在 PH 假设下,Drug A 的瞬时事件风险约为 Placebo 的 57%。Cox 的偏似然主要利用事件发生顺序估计 β\beta;Efron 法近似分配同一时点的并列事件,通常比 Breslow 更精细。

PH 假设要求同一协变量的 HR 不随时间系统变化。assess ph 的 p 值、Schoenfeld 残差趋势和 log(-log) 曲线应结合判断;诊断“不显著”只是未发现违反证据,并不能证明假设永远成立。

生存曲线与风险

播放 36 名确定性模拟受试者的观察过程:事件使 KM 曲线下降,删失只移出后续风险集;可拖动旋转、滚轮缩放。

接近视口后加载交互场景…
月份 0.0 / 12.0

Drug A 风险集

18

Placebo 风险集

18

最新观察

等待播放:尚无事件或删失。

已处理 0 / 36 名受试者

Drug A

Placebo

事件:曲线垂直下降

×删失:曲线保持水平

HR 改变 Drug A 的潜在事件速度;拖动滑杆会重建时间线并回到第 0 月。

交互场景尚未初始化。

什么时候用

终点是 OS、PFS、MACE 时间等时间-事件变量,需要用一个相对效应量概括治疗差异,或需要在模型中校正预先指定的协变量时,用 Cox 比例风险回归。它最常见的交付是 HR、95% CI 和 p 值。

SAP 里长这样:

A Cox proportional hazards model, with treatment as an explanatory variable and baseline age as a covariate, stratified by the IxRS baseline risk group, will be used to estimate the hazard ratio and its two-sided 95% confidence interval for Drug A versus placebo. The Efron method will be used to handle tied event times.

看到 Cox proportional hazards / hazard ratio / stratified by / ties=Efron,即可定位到本页。先确认 SAP 要的是未调整、协变量调整,还是按随机分层因素分层的 Cox;三种模型不能混写。

适用条件速查卡

条件
终点类型时间-事件;每条记录包含分析时间与事件/删失状态
分析数据范围先按目标 PARAMCD(示例为 OS)和 ANL01FL='Y' 限定;每名受试者对该参数恰好一条分析记录
事件/删失方向本页 ADTTE 约定 CNSR=0 为事件、CNSR=1 为删失,因此 SAS 写 model aval*cnsr(1)=...
核心假设各协变量的风险比随时间恒定(PH 假设);删失非信息性;连续协变量的函数形式正确
分层要求strata 各层允许不同基线风险,但治疗系数在各层共享;每层应有足够事件支持估计
不满足时治疗效应明显非比例 → SAP 预设的时间交互、分段 HR 或 RMST;竞争风险 → 原因别 Cox 或 Fine-Gray

核心 SAS 代码

ods graphics on;
ods output HazardRatios=cox_hr
           ParameterEstimates=cox_parameters;

proc phreg data=adtte(
    where=(paramcd='OS' and anl01fl='Y')
  );
  class trt01p (ref='Placebo') / param=ref;
  model aval*cnsr(1) = trt01p age
        / ties=efron risklimits=wald;
  strata stratum1;                    /* IxRS 风险组:分层,不估计其 HR */
  hazardratio trt01p / diff=ref cl=wald;
  assess ph / resample seed=20260821; /* PH 诊断;不显著不等于证明 PH 成立 */
run;

ods output close;
ods graphics off;
  • where= 保证只分析目标终点的主分析记录。混入 PFS、敏感性记录或重复受试者会破坏风险集。
  • cnsr(1) 指定 1 是删失值,所以 CNSR=0 的记录才贡献事件。
  • class ... ref='Placebo'hazardratio ... diff=ref 共同确定 HR 为 Drug A 对 Placebo;HR<1 表示 Drug A 的瞬时事件风险较低。
  • strata stratum1 为每个风险层拟合不同的未指定基线风险,不给 STRATUM1 估计系数。若把变量写到 model 右侧,它就是协变量:会估计一个 HR,并假定该效应满足 PH。
  • ties=efron 处理并列事件时点。Breslow、Efron 或 exact 必须服从 SAP,不能看结果后选择。

变量解释表

变量含义典型来源
USUBJID受试者唯一标识ADTTE.USUBJID
TRT01P计划治疗组;本页 HR 为 Drug A 对 PlaceboADSL.TRT01P → ADTTE.TRT01P
STRATUM1IxRS 基线风险分层;进入 strata 语句ADSL.STRATUM1 → ADTTE.STRATUM1
AGE基线年龄;作为连续协变量进入 model 右侧ADSL.AGE → ADTTE.AGE
PARAMCD时间-事件参数代码;本页仅分析 OSADTTE.PARAMCD
AVAL从 SAP 规定起点到事件/删失的分析时间ADTTE.AVAL
CNSR删失标记;本页 0=事件,1=删失ADTTE.CNSR
ANL01FL主分析记录标记;本页仅取 YADTTE.ANL01FL
EVNTDESC事件或删失原因的可读说明,用于 QCADTTE.EVNTDESC

输出对照

下面是贴近 PROC PHREG 输出结构的示意数值,用于说明抄数位置;正式 TFL 必须使用经验证程序对正式 ADTTE 的实际输出。

Hazard Ratios

DescriptionHazard Ratio95% Wald Lower CL95% Wald Upper CL
Drug A vs Placebo0.57 ①0.32 ②0.99 ②

Analysis of Maximum Likelihood Estimates

ParameterClassVal0EstimateStandard ErrorPr > ChiSq
TRT01PDrug A-0.5620.2860.0492 ③
AGE0.0180.0150.2280

Supremum Test for Proportional Hazards Assumption

EffectPr > MaxAbsVal
TRT01P Drug A0.431 ④

对应 shell(Table 14.2.x Overall Survival — Cox Model):

Shell 行填入
Hazard Ratio (Drug A / Placebo)
95% CI for Hazard Ratio(②, ②)
Cox model p-value③;若 SAP 指定 log-rank 为主检验,须填 log-rank p,不能拿本行替代
PH assumption diagnostic④ 通常进入统计/QC 说明,不一定展示在主 TFL

示例数据与程序

  • example.csv — 32 例原创模拟 OS 记录,含治疗组、IxRS 风险层、年龄及 ADTTE 事件变量
  • example.sas — 数据导入、范围限定、分层 Cox、HR/CI 输出与 PH 假设诊断完整程序

常见坑

常见坑

  • CNSR 与参考组方向写反:先确认 0=事件、1=删失,再核对 HR 的比较标签确实是 Drug A/Placebo;任一处反向都会颠倒解释。
  • 混入多个 PARAMCD 或分析版本:模型输入必须同时限定目标 PARAMCDANL01FL=‘Y’,并检查一人一条目标记录。
  • 把 strata 当 covariatestrata stratum1 允许各层不同基线风险且不输出其 HR;写在 model 右侧则估计共同系数。严格照 SAP 区分。
  • 忽略 PH 假设:曲线明显交叉或残差随时间有趋势时,单一 HR 可能掩盖早晚期相反效应。替代分析应预先写入 SAP,不能事后挑选。
  • ties 方法不一致:并列事件多时 Efron/Breslow 差异可能可见;程序、SAP 和 CSR 必须使用同一方法。
  • 把 HR 当绝对获益:HR 不告诉读者延长了多少天,也不等于风险下降百分比的绝对值;应同时查看 KM 曲线、中位数和指定时点生存率。

相关方法

  • Kaplan-Meier 生存分析 估计时间-事件终点的生存曲线、中位时间和指定时点生存率,并用 log-rank 检验比较组间曲线。