跳到主要内容

医学统计模型

分层卡方分析

按分类混杂因素切开四格表,用 Mantel-Haenszel 合并各层关联并检查层间是否同向。

更新日期 2026-08-29 组间差异

这篇能回答什么

分层卡方(Mantel-Haenszel)回答的是:「把第三个定类混杂因素当成层切开之后,暴露与结局还能不能合成一个公共关联」。每一层先做自己的四格表,再按层样本量加权,得到公共优势比(OR)与合并 χ²。它针对的是混杂,不是把三张表的 p 值平均一下。

适合:吸烟 × 疾病并按年龄段分层、疗法 × 是否有效并按医院分层、以及问卷里「学生性别 × 学校办学性质、就读年级当层」这类定类暴露、定类结局、定类层。只想看格子人数用列联(交叉)分析;没有第三因素、只问两变量是否独立,用卡方检验。

什么时候不该用

层是连续年龄或收入、要同时控制多个协变量时,改二元 Logistic 回归,不要把连续变量任意切成三层再硬做 MH。同一人前后两次阴阳性是配对设计,应走配对卡方检验。结局是有序疗效等级、关心相对位置时看Ridit分析。

如何选择方法

先画一张「有没有必须控制的分类混杂」。没有 → 普通独立性卡方或Fisher精确检验。有一层、且层内基本是 2×2 → 本过程。层间 OR 明显反向 → 先报告交互/齐性,不要强行给一个公共 OR。格子普遍极稀 → 层内改精确方法,或合并过薄的层。

  • 分层卡方分析:暴露、结局、层三个定类角色;合并各层四格,关注公共 OR 与齐性。

  • 卡方检验:只有两个定类变量,不问第三因素。

  • Fisher精确检验:单张小表、期望过小,不分层合并。

  • 二元 Logistic 回归:混杂是连续的,或一次要控制多个协变量。

输入、输出与限制

输入

统计角色是三列定类:暴露(行)、结局(列)、层(混杂)。工作台把它们放在同一个「分析变量」清单里勾选。教学操作勾选学生性别、就读年级、学校办学性质,其中年级承担层的含义。

  • 分析变量:最少 1 个,界面上限 20 个;分层卡方至少需要 3 个定类列才能形成「暴露 × 结局 | 层」。

  • 层:每个水平内部应能排出四格;过薄的层会让该层 OR 不稳定。

输出

教学结果表按层给出频数与占比,并给出有效样本 N。阅读顺序是:各层 n → 哪一层最重 → 再读公共 OR / 合并 χ²(若表中出现)与齐性。交叉热力图只表示组 × 水平的密度,不能代替层权重。

产品限制

  • 界面不单独标注「层」槽位,需要你自己指定哪一列是混杂因素。

  • 方法卡片提示大约 5 列更易读;把量表连续分勾进来没有分层意义。

  • 编号 / 疑似 ID 列会被隐藏,不能充当层。

  • 层水平过多会把样本切碎,合并前应先合并稀有层。

案例

研究问题。 学生问卷里,性别与办学性质的交叉可能被年级结构带着走:某个年级公立更集中、另一个年级私立更多。分层卡方把就读年级当作混杂层,在层内看性别 × 办学性质,再问合并后的关联是否还在。

教学口径把三个年级层记为类别 A / B / C:A 67 人(32.37%)、B 41 人(19.81%)、C 99 人(47.83%),合计有效 207。层 C 最厚,层 B 最薄。下载学生问卷后勾选同一组定类列可走通操作路径;本页层人数是分层教学口径,不必和全表 500 行对账。

下载教学示例表(学生问卷)

在 StatsX 中操作

  1. 步骤 1 · 上传表格

    打开工作台,将 Excel / CSV / JSON 拖入上传区。本案例使用学生问卷 xlsx,确认工作表为「有效样本数据」。单文件不超过 20 MB。

  2. 步骤 2 · 查看画像与质量

    确认学生性别、就读年级、学校办学性质都是定类。年级将作为层,先看三档人数是否会切出过薄的层。

  3. 步骤 3 · 选择「分层卡方分析」

    在算法目录搜索「分层卡方」或 Mantel-Haenszel,点选分层卡方分析。标记为「可用」仍可运行,适合/可用只是数据画像提示。

  4. 步骤 4 · 指定变量并运行

    分析变量勾选学生性别、就读年级、学校办学性质。心里明确:性别与办学性质是要合并的关联,年级是层。点击运行分析。

  5. 步骤 5 · 阅读结果

    先读三个层的 n 与占比,确认层 B 是否过薄;再看公共 OR 方向是否与最厚的层 C 一致;最后看齐性,决定能不能只报一个合并值。

StatsX 工作台上传学生问卷
将教学示例表拖入工作台上传区。
列画像确认性别、年级与办学性质
列画像用于确认三个定类字段及年级的水平数。
在目录中选择分层卡方分析
在算法目录中选定「分层卡方分析」。
为分层卡方勾选性别、年级与办学性质
分析变量勾选学生性别、就读年级、学校办学性质后运行。

如何阅读输出

把表中的类别 A / B / C 读成三个混杂层(教学上对应就读年级三档),而不是结局的三个等级。层 A 67(32.37%),层 B 41(19.81%),层 C 99(47.83%),有效 N=207。合并卡方的权重跟着各层四格的信息走,层 C 接近一半样本,公共 OR 会更像层 C;层 B 只有 41 人,单独看该层很容易「不显著」,但不妨碍它以较小权重进入 MH。

分层卡方分析结果表
项目类别统计量取值
分层卡方分析类别 A频数67
分层卡方分析类别 B频数41
分层卡方分析类别 C频数99
分层卡方分析合计有效样本 N207
分层卡方分析类别 A占比(%)32.37
分层卡方分析类别 B占比(%)19.81
分层卡方分析类别 C占比(%)47.83

左右滑动可查看完整表格

教学示例表在 StatsX 工作台中的计算结果口径。

分层卡方分析工作台结果表
工作台中的层构成表,层人数应与上表一致。
组与水平交叉的分层卡方密度热力图
热力图展示组 × 水平的格子密度;组 1 × 水平 A 为 46、组 3 × 水平 A 为 8。图合计不必等于表 N=207。

【分层 Mantel-Haenszel·年级为层】有效 207 人切成三层。层 C 占 47.83%,是公共 OR 的主引擎;层 B 占 19.81%(41 人),该层单独四格很容易稀疏。热力图里最浅的格子(组 3 × 水平 A = 8)提醒你:合并之前先检查层内期望,而不是只看边缘占比。若三层 OR 同向,报告公共 OR 与 MH p;若反向,先写清「哪一层把关联拧过去了」,不要用一个合并值抹平。

解读顺序:各层 n → 最厚层与最薄层 → 层内关联方向是否一致(齐性)→ 公共 OR / 合并 χ²。普通卡方忽略层,可能把年级结构造成的虚假关联当成「性别与办学性质有关」;MH 就是用来挡住这种混杂。它仍然不是因果识别:没分层的变量还可以继续混淆。

理论与公式

设第 k 层是一张 2×2 表,格子为 a_k(暴露且结局)、b_k、c_k、d_k,层合计 n_k。Mantel-Haenszel 公共优势比为各层 ad/n 与 bc/n 的比:

在「各层 OR=1」的原假设下,暴露且结局的期望与方差按超几何(固定边缘)写出,再对层求和。合并卡方为

c 取 0 或 0.5(连续性校正)。齐性(如 Breslow-Day)检验「各层 OR 是否同一」。本教学口径三层 n 为 67 / 41 / 99:层 B 的 Var(a_B) 往往更小,对分母贡献有限;拒绝齐性时,OR_MH 只是一个被最厚层拉过去的加权平均,不应再解释成「控制年级后的唯一效应」。

注意事项

  • MH 控制的是已放进层的那个定类因素,不是所有混杂。

  • 层间 OR 反向时,公共 OR 可能靠近 1,看起来「控制后没关联」,其实是正负抵消。

  • 最薄层(本例层 B=41)不要单独拿来下阴性结论,功效不足。

  • 把连续协变量随意切层会引入切点任意性,也损失信息。

  • 热力图九格不是三张四格表的堆叠,写论文引用层 n 与 OR,不要引用图上的 46 或 8 当作 MH 统计量。

  • 工作台智能解读若只复述有效样本,请用层权重与齐性来写结论,不要复制套话。

常见问题

参考文献

  • Mantel, N., Haenszel, W. Statistical aspects of the analysis of data from retrospective studies of disease. Journal of the National Cancer Institute, 1959, 22(4): 719–748.

  • Breslow, N. E., Day, N. E. Statistical Methods in Cancer Research. Volume 1. IARC, 1980.

  • Agresti, A. Categorical Data Analysis. Wiley.

  • 方积乾. 卫生统计学[M]. 人民卫生出版社.