Cox 比例风险回归 Cox Proportional Hazards Regression (Cox PH)
用半参数比例风险模型估计治疗组风险比及置信区间,并可按随机分层因素分层或校正协变量。
统计原理
对风险层 中协变量为 的受试者,分层 Cox 模型写作:
是第 层自己的、无需指定形状的基线风险;各层共享治疗和年龄系数。治疗 HR 为
HR 比较的是任一时点“仍处于风险集的人下一瞬间发生事件的速率”,不是累计发生率之比,也不是中位生存期之比。HR=0.57 表示在 PH 假设下,Drug A 的瞬时事件风险约为 Placebo 的 57%。Cox 的偏似然主要利用事件发生顺序估计 ;Efron 法近似分配同一时点的并列事件,通常比 Breslow 更精细。
PH 假设要求同一协变量的 HR 不随时间系统变化。assess ph 的 p 值、Schoenfeld 残差趋势和 log(-log) 曲线应结合判断;诊断“不显著”只是未发现违反证据,并不能证明假设永远成立。
播放 36 名确定性模拟受试者的观察过程:事件使 KM 曲线下降,删失只移出后续风险集;可拖动旋转、滚轮缩放。
Drug A 风险集
Placebo 风险集
最新观察
等待播放:尚无事件或删失。
已处理 / 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 对 Placebo | ADSL.TRT01P → ADTTE.TRT01P |
| STRATUM1 | IxRS 基线风险分层;进入 strata 语句 | ADSL.STRATUM1 → ADTTE.STRATUM1 |
| AGE | 基线年龄;作为连续协变量进入 model 右侧 | ADSL.AGE → ADTTE.AGE |
| PARAMCD | 时间-事件参数代码;本页仅分析 OS | ADTTE.PARAMCD |
| AVAL | 从 SAP 规定起点到事件/删失的分析时间 | ADTTE.AVAL |
| CNSR | 删失标记;本页 0=事件,1=删失 | ADTTE.CNSR |
| ANL01FL | 主分析记录标记;本页仅取 Y | ADTTE.ANL01FL |
| EVNTDESC | 事件或删失原因的可读说明,用于 QC | ADTTE.EVNTDESC |
输出对照
下面是贴近 PROC PHREG 输出结构的示意数值,用于说明抄数位置;正式 TFL 必须使用经验证程序对正式 ADTTE 的实际输出。
Hazard Ratios
| Description | Hazard Ratio | 95% Wald Lower CL | 95% Wald Upper CL |
|---|---|---|---|
| Drug A vs Placebo | 0.57 ① | 0.32 ② | 0.99 ② |
Analysis of Maximum Likelihood Estimates
| Parameter | ClassVal0 | Estimate | Standard Error | Pr > ChiSq |
|---|---|---|---|---|
| TRT01P | Drug A | -0.562 | 0.286 | 0.0492 ③ |
| AGE | 0.018 | 0.015 | 0.2280 |
Supremum Test for Proportional Hazards Assumption
| Effect | Pr > MaxAbsVal |
|---|---|
| TRT01P Drug A | 0.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 或分析版本:模型输入必须同时限定目标
PARAMCD、ANL01FL=‘Y’,并检查一人一条目标记录。 - 把 strata 当 covariate:
strata stratum1允许各层不同基线风险且不输出其 HR;写在model右侧则估计共同系数。严格照 SAP 区分。 - 忽略 PH 假设:曲线明显交叉或残差随时间有趋势时,单一 HR 可能掩盖早晚期相反效应。替代分析应预先写入 SAP,不能事后挑选。
- ties 方法不一致:并列事件多时 Efron/Breslow 差异可能可见;程序、SAP 和 CSR 必须使用同一方法。
- 把 HR 当绝对获益:HR 不告诉读者延长了多少天,也不等于风险下降百分比的绝对值;应同时查看 KM 曲线、中位数和指定时点生存率。
相关方法
- Kaplan-Meier 生存分析 估计时间-事件终点的生存曲线、中位时间和指定时点生存率,并用 log-rank 检验比较组间曲线。