Cochran-Mantel-Haenszel 检验 Cochran-Mantel-Haenszel Test (CMH)
在预先规定的中心或随机分层因素内比较治疗组二分类结局,并给出分层校正检验与共同 OR。
统计原理
CMH 先在每个层 内比较治疗与结局的关联,再把“观察到的 Drug A 应答数”与无关联假设下的期望值合并:
对于分层 2×2 表,共同优势比的 Mantel-Haenszel 估计为:
它回答的是“控制分层因素后,治疗与结局是否仍有关联”,而不是把层变量当作连续协变量拟合一条回归线。
先得到层内关联,再组合为分层校正后的总体证据。
什么时候用
终点是二分类或有序分类,试验设计或 SAP 指定了中心、基线严重程度等分层因素,需要在这些层内比较治疗组,再合并得到分层校正结论时使用 CMH。
SAP 里长这样:
The response rates at Week 8 will be compared between treatment groups using a Cochran-Mantel-Haenszel test, stratified by pooled site. The general association statistic and the Mantel-Haenszel common odds ratio will be presented.
看到 CMH / stratified by / pooled site / general association 等词,即可定位到本页。
适用条件速查卡
| 项 | 条件 |
|---|---|
| 终点类型 | 本页主例为二分类;有序分类需按 SAP 选 Row Mean Scores 等统计量 |
| 组数 | 本页代码和 OR 方向说明限定 2 个治疗组 |
| 分层因素 | 层在分析前定义,各受试者只属于一个层;层内必须能形成治疗×结局表 |
| 输入范围 | 已限定分析集、目标参数和目标访视,每名受试者一条记录 |
| 关键假设 | 各层治疗效应可用一个共同方向概括;极稀疏层的处理规则由 SAP 规定 |
| 不适用时 | 需要连续协变量或多个协变量 → Logistic;无分层因素 → 卡方/Fisher |
核心 SAS 代码
proc freq data=adeff order=data;
/* 三维表顺序必须是:层 * 治疗组(行) * 结局(列) */
tables sitegr1*trt01p*avalc / cmh;
run;
SITEGR1*TRT01P*AVALC的顺序不可随意交换:第一维是层,第二维是行变量,第三维是列变量。- 本页数据让
Drug A和应答Y首先出现;order=data因而使共同 OR 大于 1 表示 Drug A 的应答优势。 - 二分类主例读取 General Association 行;有序终点是否读取 Row Mean Scores,必须以 SAP 的评分和统计量定义为准。
变量解释表
| 变量 | 含义 | 典型来源 |
|---|---|---|
| USUBJID | 受试者唯一标识 | ADSL.USUBJID |
| SITEGR1 | 预先定义的合并中心/分层因素 | ADSL.SITEGR1 |
| TRT01P | 计划治疗组;本页第一行是 Drug A | ADSL.TRT01P |
| AVALC | 二分类结局;Y=应答,N=未应答 | ADEFF.AVALC |
输出对照
以下数值由本页 40 例模拟数据在 SAS 9.4 TS1M8(SAS/STAT 15.3)实跑获得;表格样式为关键输出的精简展示。
各层应答计数
| SITEGR1 | Drug A, Y/N | Placebo, Y/N |
|---|---|---|
| S01 | 8/10 (80.0%) ① | 4/10 (40.0%) ② |
| S02 | 6/10 (60.0%) ① | 3/10 (30.0%) ② |
CMH Statistics / Common Odds Ratio
| 输出行 | Value | 95% CI | Pr > ChiSq |
|---|---|---|---|
| General Association | 4.7744 ③ | — | 0.0289 ④ |
| Mantel-Haenszel Common Odds Ratio | 4.5000 ⑤ | (1.1635, 17.4045) ⑥ | — |
| Shell 行 | 填入 |
|---|---|
| Response, n/N (%) — 各治疗组 | 从层合并后的治疗组频数表填写 |
| Stratified CMH p-value | ④ |
| Common odds ratio(若 shell 要求) | ⑤,95% CI 为 ⑥;按输出标签确认 Drug A vs Placebo 的方向 |
示例数据与程序
- example.csv — 40 例原创模拟受试者,两个合并中心
- example.sas — 读入数据并运行分层 CMH 分析
常见坑
实战边界
- tables 顺序:必须核对“层×行×列”;交换治疗和结局会改变 OR 标签与解释。
- 层定义不能事后改:中心合并阈值、随机分层变量和缺失层的处理必须来自 SAP/ADaM 规范。
- 共同效应不是自动成立:若各层 OR 方向明显冲突,应检查数据和异质性,不能只报一个合并 OR。
- 统计量选择:General Association、Row Mean Scores 等并非可互换;按终点尺度和 SAP 指定行取值。
相关方法
- 卡方检验 / Fisher 精确检验 比较两个独立治疗组的二分类结局比例,并按期望频数选择 Pearson 卡方或 Fisher 精确检验。
- Logistic 回归 对二分类应答概率建模,校正基线和中心等协变量,并输出治疗组调整后 OR、95% CI 与 p 值。
- 率差及 Miettinen-Nurminen 置信区间 估计两个独立治疗组的应答率差及非对称 Miettinen-Nurminen 置信区间,并说明非分层适用边界。