You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何运行mantelhaen.test()及准备对应数据?附数据格式求助

解决Mantel-Haenszel检验的数据格式问题

首先明确:mantelhaen.test()用于分层的2x2列联表分析,需要包含分层变量(如不同亚组、不同场景),每个分层内有处理/暴露变量和结局变量的交叉分类。你的当前数据仅有group和Survived两个变量加频数,需要分两种情况处理:

情况1:仅需比较A、B组的存活率差异

如果你的目标是对比两组存活情况,这属于单个2x2列联表分析,无需使用Mantel-Haenszel检验,用卡方检验即可。转换格式并执行的代码如下:

# 加载你的数据
df <- structure(list(Freq = c(41L, 31L, 11L, 0L), 
                     group = structure(c(1L, 1L, 2L, 2L), .Label = c("A", "B"), class = "factor"), 
                     Survived = structure(c(2L, 1L, 2L, 1L), .Label = c("No", "Yes"), class = "factor")), 
                row.names = c(NA, 4L), class = "data.frame")

# 生成2x2列联表
tab <- xtabs(Freq ~ Survived + group, data = df)

# 执行卡方检验
chisq.test(tab)

情况2:确实需要执行Mantel-Haenszel检验

若你有明确的分层变量(如不同年龄组、不同医院),需要先补充分层变量的数据,再整理为三维列联表格式。

示例:补充分层变量后的处理

假设补充分层变量Layer后的数据如下(仅为示例):

FreqgroupSurvivedLayer
20AYesL1
15ANoL1
21AYesL2
16ANoL2
5BYesL1
0BNoL1
6BYesL2
0BNoL2

执行检验的代码:

# 生成三维列联表(结局~处理~分层)
tab_3d <- xtabs(Freq ~ Survived + group + Layer, data = df_with_layer)

# 运行Mantel-Haenszel检验
mantelhaen.test(tab_3d)

如果你的数据是原始个体数据(无Freq列),可直接传入三个因子变量:

mantelhaen.test(x = 处理变量, y = Survived, z = 分层变量)

关键说明

你当前的数据集缺少分层变量,不满足Mantel-Haenszel检验的设计要求。若没有分层需求,卡方检验更适合你的分析场景;若需使用该检验,请补充分层变量对应的分组数据。

内容的提问来源于stack exchange,提问作者Ben

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:44:51