如何查看R中lmer与emmeans处理缺失数据后的替代值及计算数据集?
查看lmer模型及emmeans使用的数据
1. 查看模型拟合时实际用到的观测数据
lmer在拟合混合模型时,会自动排除因变量(dv)缺失或固定效应自变量有缺失的观测(随机效应变量如subject缺失的观测也会被排除)。你可以通过model.frame()函数直接提取模型拟合时使用的数据集:
# 假设你的模型名为model used_data <- model.frame(model) # 查看前几行数据 head(used_data) # 对比原始数据,找出被排除的观测 original_data <- dat # 替换为你的原始数据框名 excluded_data <- original_data[!rownames(original_data) %in% rownames(used_data), ] excluded_data
这个used_data就是模型拟合时实际纳入的所有非缺失观测,你可以直接查看哪些被试的前测/后测数据被保留或排除。
2. 查看emmeans计算边际均值的参考网格与底层逻辑
emmeans的边际均值不是基于某个“处理后数据集”的直接均值,而是基于模型参数,在固定效应的所有水平组合上生成的**参考网格(reference grid)**进行预测得到的。你可以通过以下方式查看参考网格及计算结果:
查看参考网格
# 获取模型的参考网格 rg <- ref_grid(model) # 打印参考网格信息 rg # 转换为数据框格式查看 rg_df <- as.data.frame(rg) rg_df
参考网格包含了condition×time的所有水平组合(比如两组被试×前后测,共4种组合),emmeans就是在这些组合上计算边际均值。
查看emmeans的具体计算结果
你可以直接将emmeans的结果转换为数据框,查看计算出的边际均值及相关统计量:
# 计算condition×time的边际均值 emm <- emmeans(model, ~ condition * time) # 转换为数据框 emm_df <- as.data.frame(emm) emm_df
关键说明
lmer默认使用**全信息极大似然估计(FIML)**处理缺失数据,不是简单的列表删除——模型会利用所有可用的非缺失观测进行拟合,而非删除整个被试的数据(除非该被试的所有观测都缺失)。因此emmeans的边际均值是基于模型拟合出的参数预测得到的,而非直接对某个子集的原始数据求均值。
内容的提问来源于stack exchange,提问作者Elad Nosugref
相关产品推荐
相关产品推荐

