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

分层 Log-rank 检验 Stratified Log-rank Test (Stratified log-rank)

在预先指定的随机分层因素内比较治疗组生存曲线,再合并各层观察与期望事件差得到总体检验。

统计原理

普通 log-rank 在每个事件时点比较治疗组观察事件数 OO 与无治疗差异时的期望事件数 EE。分层 log-rank 先在每个预设层 ss 内形成得分 Us=OsEsU_s=O_s-E_s 和方差 VsV_s,再合并:

U=sUs,V=sVs,χ2=U2V ˙ χ12.U=\sum_s U_s,\qquad V=\sum_s V_s,\qquad \chi^2=\frac{U^2}{V}\ \dot\sim\ \chi^2_1.

这样比较治疗组时控制了层间不同的基线风险,不要求各层共享同一基线生存曲线。检验原假设是各层控制后治疗组生存分布相同;它给出总体 p 值,但不估计 HR、时间差或生存率差。若需效应量,通常配套报告分层 Cox HR、KM 曲线和预设时点估计。

经典 log-rank 在各事件时点等权累加 OEO-E,其中期望事件数与方差由当时风险集决定;在比例风险近似成立时通常最有效。曲线明显延迟分离或交叉时,预设 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 PHREGstrata 语句并核对相同层定义。

变量解释表

变量含义典型来源
USUBJID受试者唯一标识ADTTE.USUBJID
TRT01P计划治疗组;GROUP= 比较变量ADSL.TRT01P
STRATUM1随机化基线风险层;STRATA 控制变量IxRS → ADSL → ADTTE
PARAMCD时间-事件参数;示例为 OSADTTE.PARAMCD
AVAL从分析起点到事件或删失的时间ADTTE.AVAL
CNSR0=事件, 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 HomogeneityLog-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 生存曲线下面积,用可解释的时间差比较治疗组且不依赖比例风险假设。