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
相关产品推荐
相关产品推荐

