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

Tipping-point 敏感性分析 Tipping-Point Sensitivity Analysis (Tipping Point)

对试验组缺失连续结局施加一系列 MNAR delta shift,寻找主结论首次翻转所需的缺失值偏离程度。

统计原理

先在 MAR 下为缺失的目标访视值生成预测值 Yi,MAR(m)Y_{i,\text{MAR}}^{(m)},再只对指定治疗组的缺失值施加 shift:

Yi,δ(m)=Yi,MAR(m)+δ,i{Drug A 且 AVAL 缺失}.Y_{i,\delta}^{(m)}=Y_{i,\text{MAR}}^{(m)}+\delta, \qquad i\in\{\text{Drug A 且 AVAL 缺失}\}.

本页终点数值越大越好,所以 δ<0\delta<0 表示假设 Drug A 的未观察结局比 MAR 预测更差。对每个 δ\delta 都重新生成多套数据、拟合相同 ANCOVA 并按 Rubin 规则合并,得到治疗差 θ^(δ)\hat\theta(\delta)、95% CI 和 p 值。

逐步偏移缺失值假设

改变缺失结局的假定偏移量,找到主要结论首次翻转的临界点。

“临界点”是预设结论第一次翻转的 shift,例如两侧 p 值首次达到 0.05 或 95% CI 首次包含 0。它回答的是:Drug A 缺失者必须比 MAR 预测差多少,主结论才不再成立? 临界 shift 是否临床可信,必须结合量表范围、已观测变化及停药原因解释。

什么时候用

主分析依赖 MAR,而方案要求在 MNAR 假设下检验结论稳健性时使用。最常见场景是连续终点有差异性缺失,针对试验组或各组缺失者施加 delta adjustment。

SAP 里长这样:

A tipping-point sensitivity analysis will be performed. Following multiple imputation under MAR, a shift parameter from 0 to -8 points will be applied to imputed Week 8 values for missing subjects in the Drug A group. The ANCOVA model will be repeated at each shift, and the shift at which the treatment conclusion is reversed will be reported.

必须明确:修改哪一组、只改缺失值还是全部值、shift 正负方向、网格、插补模型、分析模型和“翻转”的判据。

适用条件速查卡

条件
本页终点连续 AVAL,数值越大越好
基准假设条件于 TRTAN 与 BASE 的 MAR 多重插补
MNAR 偏离仅 Drug A 缺失 AVAL 加 shift
网格0, -1, …, -8;程序计算后按 0 到 −8 展示
对照组缺失保持 MAR,不加 shift
分析模型每套数据 AVAL = TRTAN + BASE
翻转判据预设两侧 p≥0.05 或 95% CI 包含 0;不能分析后改口径

核心 SAS 代码

%macro tipping(data=adeff, smin=-8, smax=0, sinc=1);
  %local ncase j shift;
  %let ncase=%sysfunc(floor(%sysevalf((&smax-&smin)/&sinc)));

  ods select none;
  %do j=0 %to &ncase;
    %let shift=%sysevalf(&smin+&j*&sinc);

    proc mi data=&data seed=14823 nimpute=25 out=outmi;
      class trtan;
      monotone reg;
      mnar adjust(aval / shift=&shift adjustobs=(trtan='1'));
      var trtan base aval;
    run;

    proc reg data=outmi;
      model aval=trtan base;
      by _imputation_;
      ods output ParameterEstimates=regparm;
    run;

    proc mianalyze parms=regparm;
      modeleffects trtan;
      ods output ParameterEstimates=miparm;
    run;

    data miparm;
      set miparm;
      shift=&shift;
    run;
    /* 完整下载程序把每次 MIPARM 依次累积为 TIP_RESULTS。 */
  %end;
  ods select all;
%mend;
  • ADJUSTOBS=(TRTAN='1') 把偏移限定在 Drug A 且被插补的 AVAL;已观察 AVAL 不会被修改。
  • 每个 shift 都从同一 seed 重新插补,使网格间随机噪声尽量可比;正式分析仍应设置足够插补次数。
  • MODELEFFECTS TRTAN 只合并治疗系数,形成每个 shift 的治疗差、CI 和 p 值。

变量解释表

变量含义典型来源
USUBJID受试者唯一标识ADSL.USUBJID
TRT01P治疗显示标签ADSL.TRT01P
TRTANDrug A=1,Placebo=0;也是偏移选择条件ADSL.TRT01PN
BASE完整基线值ADEFF.BASE
AVAL目标访视值,部分缺失ADEFF.AVAL
SHIFT只加到 Drug A 缺失 AVAL 的 delta敏感性分析网格
PROBT每个 shift 下 Rubin 合并治疗效应的两侧 p 值PROC MIANALYZE

输出对照

本页 9 个 shift 已在 SAS 9.4 TS1M8 / SAS/STAT 15.3 实跑。正式结果应保留完整网格,而不是只报最有利或最不利的一点;下表展示关键节点。

SHIFTESTIMATE95% CIPROBT
05.5448(5.2948, 5.7948)<.0001
−44.4782(3.5396, 5.4167)<.0001
−83.4115(1.5811, 5.2419)0.0003

SHIFT 映射 Drug A 缺失值相对 MAR 的假设偏移;ESTIMATE 与 CI 映射治疗差;PROBT 映射 H0:θ=0H_0:\theta=0 的两侧 p-value。本例扫描至 −8 仍未翻转,因此结论是“在预设范围内未达到临界点”,不是外推为任何 MNAR 情形下都稳健。

SHIFT=0,-1,…,-8 展示,在第一行 PROBT≥0.05(或 CI 首次包含 0,依 SAP)处标记 tipping point。若扫描至 −8 仍未翻转,应写“在预设范围内未达到临界点”,不能外推为永远稳健。

示例数据与程序

  • example.csv — 30 例、Drug A 缺失较多的原创连续终点数据
  • example.sas — 9 个 shift 的 MI、ANCOVA、Rubin 合并和汇总完整程序

常见坑

Tipping point 是假设压力测试,不是调参工具

  • shift 方向写反:本页越大越好,所以负 shift 才是对 Drug A 不利;越小越好的终点要重新定义。
  • 把 shift 加到所有人:delta adjustment 通常只作用于被插补的指定记录,不能改动已观察数据。
  • 只扫到刚好显著:网格、步长和停止规则应预设,并展示结论两侧的邻近点。
  • 混淆 estimand:插补对象与 intercurrent event 策略不一致时,漂亮的临界图也回答错问题。
  • 只报 p 值:临床解释需要 shift 的量纲、治疗差和 CI;“需要差 6 分才翻转”才可与量表意义比较。
  • 把未翻转说成证明 MAR:结果只说明对已扫描的 MNAR 偏离稳健,不会验证真实缺失机制。

SAS 实现依据:PROC MIANALYZE Tipping-Point 官方示例。敏感性分析边界依据:ICH E9(R1)EMA Missing Data Guideline

相关方法

  • 重复测量混合模型 联合分析多个访视的连续终点,建模受试者内相关性并估计目标访视的组间差。
  • 多重插补 在明确缺失机制和插补模型后生成多套完整数据,逐套执行同一分析,再用 Rubin 规则合并估计和不确定性。