使用lsmeans绘制带标准误误差棒条形图报错object 'lsmean' not found如何解决
报错原因
报错的核心原因是ggplot()调用的原始数据集data中不存在lsmean、se这类lsmeans生成的统计量列,你需要先提取lsmeans的计算结果转为独立数据框,再传入ggplot绘图。
完整实现代码
1. 提取lsmeans统计结果
# 加载依赖包 library(lme4) library(emmeans) library(ggplot2) # 提取X1各水平的反转换后边际均值、标准误等统计量,转为数据框 X1_lsmeans_df <- as.data.frame(lsmeans(model, ~ X1, type = "response"))
2. 绘制带标准误误差棒的条形图
ggplot(X1_lsmeans_df, aes(x = X1)) + # 绘制条形图,y轴为反转换后的边际均值 geom_bar(aes(y = response), stat = "identity", fill = "skyblue", alpha = 0.5) + # 绘制标准误误差棒,如需改用95%置信区间,可将SE替换为对应置信区间列 geom_errorbar(aes(ymin = response - SE, ymax = response + SE), width = 0.4, colour = "orange", alpha = 0.9, size = 1.3) + labs(x = "X1", y = "反转换后Y的边际均值")
3. 输出5个X1水平的lsmeans结果用于报告
# 输出完整统计结果,包含均值、标准误、置信区间,保留3位小数 print(X1_lsmeans_df, digits = 3) # 如需查看组间两两比较结果,直接打印你之前生成的对象即可 print(X1.post)
注意事项
- 若你使用的是旧版lsmeans包,以上代码无需修改可直接运行
- 对数变换的反转换会由
type = "response"自动完成,无需手动计算 - 若需要用95%置信区间作为误差棒,将代码中
response - SE、response + SE替换为asymp.LCL、asymp.UCL即可,列名可通过colnames(X1_lsmeans_df)确认
内容的提问来源于stack exchange,提问作者PMan
相关产品推荐
相关产品推荐

