分层 Log-rank 检验 Stratified Log-rank Test (Stratified log-rank)
在预先指定的随机分层因素内比较治疗组生存曲线,再合并各层观察与期望事件差得到总体检验。
统计原理
普通 log-rank 在每个事件时点比较治疗组观察事件数 与无治疗差异时的期望事件数 。分层 log-rank 先在每个预设层 内形成得分 和方差 ,再合并:
这样比较治疗组时控制了层间不同的基线风险,不要求各层共享同一基线生存曲线。检验原假设是各层控制后治疗组生存分布相同;它给出总体 p 值,但不估计 HR、时间差或生存率差。若需效应量,通常配套报告分层 Cox HR、KM 曲线和预设时点估计。
经典 log-rank 在各事件时点等权累加 ,其中期望事件数与方差由当时风险集决定;在比例风险近似成立时通常最有效。曲线明显延迟分离或交叉时,预设 RMST/加权检验可能更贴合 estimand,但不能事后因 p 值更小而更换主检验。
分层 log-rank 保留随机分层结构,避免层间基线风险差异混入治疗比较。
什么时候用
随机试验的时间-事件主要终点需要比较治疗组,且 SAP 指定按 IxRS/IRT 随机分层因素(如基线风险、既往治疗、地区)进行 stratified log-rank test 时使用。
SAP 里长这样:
Overall survival will be compared between treatment groups using a two-sided stratified log-rank test, stratified by the randomization factors of baseline risk (high versus low) and prior therapy (yes versus no), as recorded in the IxRS.
重点不只是“有分层变量”,而是确认使用随机化时记录值、CRF/ADSL 派生值还是合并层;层的定义、顺序和稀疏层规则必须按 SAP/统计编程说明。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 终点 | 右删失时间-事件数据;起点、事件和删失规则已冻结 |
| 状态方向 | 本页 CNSR=0 事件、CNSR=1 删失,SAS 写 time aval*cnsr(1) |
| 治疗变量 | TRT01P 是待比较组,放在 GROUP= 而不是分层变量列表 |
| 分层变量 | SAP 预先指定、分析前可得;各组合层有足够受试者和事件 |
| 主要前提 | 层内非信息性删失;治疗比较在层间可合理合并 |
| 估计方向 | 检验本身无方向性效应量;配套 Cox HR 应另行定义 Drug A / Placebo |
| 输入范围 | 单一 PARAMCD、主分析标记且每人一条分析记录 |
核心 SAS 代码
proc lifetest data=adtte_os plots=survival(atrisk);
time aval*cnsr(1);
strata stratum1 / group=trt01p order=internal;
run;
STRATUM1定义控制层,group=TRT01P定义要比较的治疗组。二者写反会变成“按治疗分层、比较风险组”。GROUP=使 PROC LIFETEST 在各STRATUM1层内构造治疗比较,再输出分层同质性检验。- 多个分层因素可写在
strata后形成组合层,例如strata region risk / group=trt01p;;正式层合并规则必须预设。 - 本页只实现检验。若 shell 要求分层 Cox HR,应另用
PROC PHREG的strata语句并核对相同层定义。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| USUBJID | 受试者唯一标识 | ADTTE.USUBJID |
| TRT01P | 计划治疗组;GROUP= 比较变量 | ADSL.TRT01P |
| STRATUM1 | 随机化基线风险层;STRATA 控制变量 | IxRS → ADSL → ADTTE |
| PARAMCD | 时间-事件参数;示例为 OS | ADTTE.PARAMCD |
| AVAL | 从分析起点到事件或删失的时间 | ADTTE.AVAL |
| CNSR | 0=事件, 1=删失 | ADTTE.CNSR |
| ANL01FL | 主分析记录标记 | ADTTE.ANL01FL |
输出对照
| SAS 输出 | 关键值 | Shell 行/用途 |
|---|---|---|
| Summary of Censored and Uncensored Values | 各层×治疗组 N、事件、删失 | 分析人数和事件数 QC |
| Rank Statistics / Covariance Matrix | 合并后的治疗组秩统计量与协方差 | 总体分层检验的独立 QC;通常不进主 TFL |
| Stratified Tests of Homogeneity | Log-Rank Chi-Square、DF、p 值 | Stratified log-rank p-value |
| KM 输出(按层×组) | 层内曲线 | 稀疏层与方向诊断,不替代总体未分层展示 |
主 shell 通常展示总体治疗组 KM 描述、分层 log-rank p 值及分层 Cox HR。三者来自相关但不同的计算对象,脚注应分别注明,不能把 Cox Wald p 值填到 log-rank 行。
示例数据与程序
- example.csv — 48 例原创模拟 OS 数据,含 High/Low 两个随机风险层
- example.sas — 数据筛选、层内事件核对和
GROUP=分层 log-rank 的完整程序
常见坑
分层值必须与随机化定义一致
- GROUP 与 STRATA 颠倒:治疗组放
GROUP=,预设风险因素放STRATA;语法能跑不代表问题设对。 - 使用随机化后的重算值:IxRS 值和 CRF/中心复核值可能不一致;主分析采用哪个版本应由 SAP 明确。
- 组合层过稀:层太多可出现单臂层或无事件层,使信息丢失或方差异常;合并策略不能看盲态结果临时制定。
- 把 p 值当效应量:检验不告诉 HR 或延长多少天,应与预设效应估计及 CI 一起解释。
- 层定义与 Cox 不一致:log-rank 和 Cox 若用不同层、不同缺失处理或不同输入集,会造成 TFL 内部不一致。
- PH 明显不成立仍只报单一检验:按 SAP 同时查看曲线与支持性 RMST;不能事后挑选检验。
相关方法
- Cox 比例风险回归 用半参数比例风险模型估计治疗组风险比及置信区间,并可按随机分层因素分层或校正协变量。
- Kaplan-Meier 生存分析 估计时间-事件终点的生存曲线、中位时间和指定时点生存率,并用 log-rank 检验比较组间曲线。
- 限制性平均生存时间 在预先指定限制时间内计算 KM 生存曲线下面积,用可解释的时间差比较治疗组且不依赖比例风险假设。