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

lme4固定效应绘图:筛选效应项及添加lmerTest显著性p值问询

当然可以搞定这两个需求!我来一步步给你说怎么实现:

1. 只绘制部分固定效应

sjp.lmer() 里有个 terms 参数,专门用来指定你想展示的固定效应项,完美解决只画部分效应的问题。你只需要在原有代码里加上这个参数,把要展示的变量名(和模型里的变量名完全一致)放在向量里就行。比如你的模型里有 x1、x2、x3 三个固定效应,只想画 x1 和 x3,代码就改成:

sjp.lmer(model.name, type = "ri.pc", facet.grid = FALSE, terms = c("x1", "x3"))

如果是交互项(比如 x1:x2),也要准确写出交互项的名称哦。

2. 给图添加显著性p值

这里更推荐用sjPlot包的新版函数 plot_model(),它比 sjp.lmer() 更灵活,还能直接从 lmerTest 拟合的模型里提取p值并展示,省去手动提取的麻烦。

举个具体的例子,假设你想展示指定的固定效应,同时标注p值,代码可以这么写:

library(sjPlot)
library(lmerTest)

# 绘制指定固定效应+显示p值
plot_model(model.name, type = "est", terms = c("x1", "x3"), show.p = TRUE, facet.grid = FALSE)

这里 type = "est" 是专门展示固定效应估计值的类型(如果你之前用 type = "ri.pc" 是看随机效应的预测对比,那换成 "est" 更贴合你画固定效应的需求),show.p = TRUE 会自动把p值标注在每个效应旁边,还会根据显著性水平自动加星号(比如*p<0.05,**p<0.01这类)。

如果你坚持想用原来的 sjp.lmer(),也可以手动提取p值后用ggplot2的语法添加注释:

# 先画出基础图
p <- sjp.lmer(model.name, type = "ri.pc", facet.grid = FALSE, terms = c("x1", "x3"))
# 从模型结果中提取对应变量的p值
p_vals <- summary(model.name)$coefficients[c("x1", "x3"), "Pr(>|t|)"]
# 给每个效应添加p值注释(y轴位置需要根据你的图调整)
p$plot + annotate("text", x = 1:length(p_vals), y = 0.5, label = paste0("p=", round(p_vals, 3)))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:17:31