多重性控制 Multiplicity Control (FWER / Holm)
先定义假设家族和检验顺序,再用 Bonferroni、Holm 或预设层级策略控制确认性结论的总体一类错误率。
统计原理
若同一确认性家族包含 个真原假设,每个都按 单独检验,则“至少错拒一个”的概率(FWER)可能明显高于 。多重性控制不是把所有 p 值机械丢进一个函数,而是先回答三个问题:哪些假设属于同一个 family、每个结论在标签/决策中的角色、假设是否有预设顺序。
Bonferroni 用
控制 FWER。Holm 方法把原始 p 值升序排列为 ,逐步使用阈值 ;相应调整 p 值还要做单调化,因此通常不比 Bonferroni 更保守。Holm 在任意依赖结构下控制 FWER。
检验越多,未经校正的假阳性风险越高;校正方法控制整体第一类错误率。
层级检验(gatekeeping/fixed sequence)把可检验性沿预设路径传递:只有前一假设达到要求,下一假设才具有确认性检验资格。它不能由一列调整后 p 值自动重建,必须按 SAP 的图或决策规则实现。
什么时候用
- 同一研究有多个主要终点、关键次要终点、多个剂量或多个治疗比较,需要形成多个确认性结论。
- 方案规定 Bonferroni/Holm、固定序列、gatekeeping、闭合检验或 alpha recycling 时。
SAP 里长这样:
The familywise type I error rate will be controlled at a two-sided 5% level. The two primary endpoints and two key secondary endpoints constitute family F1. Holm’s step-down procedure will be applied within F1. Key secondary endpoints will be interpreted confirmatorily only according to the prespecified testing strategy.
看到 family / FWER / alpha allocation / hierarchical testing / gatekeeping / adjusted p-value,要先画出假设关系,再选程序。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 本页输入 | 已由各终点正确模型生成的 4 个原始 p 值 |
| family | 示例四个假设全部属于预设家族 F1 |
| 目标错误率 | 两侧 FWER 0.05 |
| 演示方法 | Holm step-down;同时输出 Bonferroni 供核对 |
| 依赖要求 | Holm 不要求假设独立;其他方法的适用条件须单独核对 |
| 不覆盖 | 复杂 gatekeeping、图形化 alpha recycling、多个嵌套 family 的完整执行引擎 |
| 关键前提 | family、顺序、alpha 和缺失/失败时的传递规则均在揭盲前固定 |
核心 SAS 代码
proc import datafile="example.csv" out=pvalues dbms=csv replace;
guessingrows=max;
run;
proc sort data=pvalues;
by ordern;
run;
proc multtest inpvalues(raw_p)=pvalues holm bonferroni out=adjusted;
run;
proc print data=adjusted noobs;
var endpoint family ordern raw_p stpbon_p bon_p;
run;
INPVALUES(raw_p)=明确指定原始 p 值变量;该模式只做调整,不重新拟合终点模型。STPBON_P是 Holm(step-down Bonferroni)调整 p 值,BON_P是单步 Bonferroni 调整 p 值。- 示例把一整个 family 一次送入程序。若有 F1/F2 两个独立规则,必须先按 SAP 分组处理,不能混成一个 。
变量解释表
| 变量 | 含义 | 来源 |
|---|---|---|
| ENDPOINT | 假设/终点的可读名称 | SAP 假设清单 |
| FAMILY | 多重性家族标识;本页均为 F1 | SAP 多重性策略 |
| ORDERN | 预设展示或固定序列编号;Holm 本身按 p 值排序 | SAP |
| RAW_P | 对应终点模型的未调整 p 值 | 各主要/关键次要分析输出 |
| STPBON_P | Holm FWER 调整 p 值 | PROC MULTTEST |
| BON_P | Bonferroni FWER 调整 p 值 | PROC MULTTEST |
输出对照
以下调整值由本页数据在 SAS 9.4 TS1M8 / SAS/STAT 15.3 实跑获得。输出映射强调“原始证据”和“可形成的确认性结论”分开记录。
| ENDPOINT | RAW_P | STPBON_P (Holm) | BON_P |
|---|---|---|---|
| Primary symptom score | 0.006 | 0.024 | 0.024 |
| Primary function score | 0.021 | 0.063 | 0.084 |
| Key secondary quality of life | 0.047 | 0.094 | 0.188 |
| Key secondary rescue medication | 0.120 | 0.120 | 0.480 |
因此在 F1/Holm、 下,仅第一项可拒绝原假设。ENDPOINT 映射 shell 假设名称,RAW_P 映射原始 p 值,STPBON_P 映射确认性 Holm-adjusted p 值。
正式 shell 还应有 family、方法、总 alpha、假设状态(可检验/未进入/拒绝/未拒绝)和结论用途。若采用固定序列,必须把“前序未通过导致未检验”与“检验后未显著”区分开。
示例数据与程序
- example.csv — 一个预设 family 的四个原创示例原始 p 值
- example.sas — Holm 与 Bonferroni 调整及可审计输出
常见坑
先定 family,再谈调整方法
- 把所有表中 p 值都放进一个 family:family 是确认性决策概念,不是输出库存。
- 原始 p<0.05 就写“显著”:确认性结论要按调整后 p 值或预设序列资格判断。
- 用 FDR 替代 FWER:探索性发现率控制不能自动满足确认性多终点的 FWER 要求。
- 分析后挑方法:比较 Bonferroni、Holm、Hochberg 后选最有利者会破坏预设错误率控制。
- 把 ORDERN 当成 Holm 顺序:Holm 按观察到的 p 值排序;固定序列则按临床预设顺序,两者不是一回事。
方法边界依据:FDA Multiple Endpoints in Clinical Trials;SAS 语法依据:PROC MULTTEST 官方文档。