如何用emmeans的pairs函数输出95%置信区间?
问题:emmeans的pairs结果无法提取置信区间
我希望用emmeans输出control_str2各组间的差异,但pairs函数仅显示均值±标准误,尝试提取置信区间时失败,相关代码如下:
# 计算各组em均值 em_means <- emmeans(ComPAS_MUAC115_LinearGrowth_ForAnalysis_completecases_2.1, specs = ~ control_str2, digits=1) # 计算组间两两差异 pairwise_diff <- pairs(em_means, conf.level=0.95, digits=1) # 尝试提取置信区间(执行失败) lower_CI <- pairwise_diff$lower.CL # 提取置信区间下限 upper_CI <- pairwise_diff$upper.CL # 提取置信区间上限 # 合并结果以便查看或后续处理 result <- data.frame(lower_CI, upper_CI) # 创建包含置信区间上下限的数据框 print(result)
解决方案
pairs()返回的是emmGrid类型对象,不是普通数据框,无法直接用$提取列。可以通过以下方式解决:
方法1:转换为数据框后提取
先把pairwise_diff转为数据框,再操作置信区间列:
# 转换为数据框 pairwise_df <- as.data.frame(pairwise_diff) # 提取置信区间上下限 lower_CI <- pairwise_df$lower.CL upper_CI <- pairwise_df$upper.CL # 合并结果 result <- data.frame(lower_CI, upper_CI) print(result)
方法2:用confint()直接生成置信区间结果
直接对pairwise_diff调用confint(),可以直接查看或转为数据框保存:
# 直接查看带置信区间的差异结果 confint(pairwise_diff, digits = 1) # 转为数据框 result <- as.data.frame(confint(pairwise_diff, digits = 1)) print(result)
额外技巧:让pairs()直接输出置信区间
如果希望调用pairs()时直接显示置信区间,添加infer = c(TRUE, TRUE)参数即可:
pairwise_diff <- pairs(em_means, conf.level=0.95, digits=1, infer = c(TRUE, TRUE)) print(pairwise_diff)
内容的提问来源于stack exchange,提问作者Grace Heymsfield
相关产品推荐
相关产品推荐

