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

如何在R语言中检验随机缺失(MAR)假设?

如何在R语言中检验随机缺失(Missing At Random,MAR)假设?

以下是用于检验完全随机缺失(Completely Missing At Random,MCAR)的示例数据与代码,以及基于MAR假设的缺失值插补代码。

# 示例问卷数据
set.seed(1)
Q1 <- sample(c(1:10, NA), 100, replace = TRUE)
Q2 <- sample(c(1:10, NA), 100, replace = TRUE)
Q3 <- sample(c(1:10, NA), 100, replace = TRUE)
Q4 <- sample(c(1:10, NA), 100, replace = TRUE)

questionnaire <- tibble::tibble(Q1, Q2, Q3, Q4)

# 检验完全随机缺失(MCAR)
naniar::mcar_test(questionnaire)

# 可视化各变量的缺失值数量
naniar::gg_miss_var(questionnaire)

如何检验随机缺失(MAR)?

与MCAR不同,MAR没有直接的统计检验方法——因为MAR假设缺失仅依赖于观测到的变量,无法直接验证未观测变量的影响。但可以通过以下间接方法推断:

1. 对比缺失组与非缺失组的变量分布

对每个存在缺失的变量,将数据分为「该变量缺失」和「该变量非缺失」两组,检验其他观测变量在两组间是否存在显著差异。如果差异显著,说明缺失可能与观测变量相关,支持MAR假设。

示例代码:

# 以Q1为例,检验Q2/Q3/Q4在Q1缺失组和非缺失组的差异
q1_missing <- is.na(questionnaire$Q1)

# 连续变量用t检验
t.test(questionnaire$Q2 ~ q1_missing)
t.test(questionnaire$Q3 ~ q1_missing)
t.test(questionnaire$Q4 ~ q1_missing)

2. 用逻辑回归建模缺失指示变量

为每个有缺失的变量创建一个0-1型缺失指示变量(1=缺失,0=非缺失),用其他观测变量作为预测因子拟合逻辑回归模型。如果模型整体显著,说明缺失依赖于观测到的变量,符合MAR特征。

示例代码:

# 创建Q1的缺失指示变量
questionnaire$Q1_miss <- as.integer(is.na(questionnaire$Q1))

# 拟合逻辑回归模型
model <- glm(Q1_miss ~ Q2 + Q3 + Q4, data = questionnaire, family = binomial)
summary(model)

# 模型整体显著性检验(似然比检验)
anova(model, test = "LRT")

3. 缺失模式可视化分析

通过可视化变量间的缺失组合模式,观察缺失是否集中在特定变量组合中,结合变量关联判断是否符合MAR。

示例代码:

# 可视化缺失模式的交集
naniar::gg_miss_upset(questionnaire)

基于MAR假设的缺失值插补

mice包是R中常用的基于MAR假设的多重插补工具,示例代码如下:

# 多重插补并提取插补后的数据(长格式)
questionnaire_imp <- mice::complete(mice::mice(questionnaire), action = "long")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:58:25