如何可视化线性混合效应模型中EDA_G_specific_responses与G_expressivity的关联?
可视化线性混合模型中EDA_G_specific_responses与G_expressivity的关联
针对你构建的线性混合模型,以下是几种直观展示EDA_G_specific_responses与G_expressivity关联的方法,均使用R语言常用工具实现:
方法1:原始数据散点图 + 模型拟合趋势线
这种方法能同时展示原始数据分布和模型预测的关联趋势,适合连续型的G_expressivity变量:
library(ggplot2) library(lme4) library(ggeffects) # 生成G_expressivity的边际预测值(自动控制其他协变量为均值/参考类别) pred <- ggpredict(model, terms = "G_expressivity [all]") # 绘图 ggplot(pred, aes(x = x, y = predicted)) + # 叠加原始数据散点(调小透明度避免重叠) geom_jitter(data = Model_df, aes(x = G_expressivity, y = EDA_G_specific_responses), alpha = 0.2, color = "gray") + # 添加模型拟合线和95%置信区间 geom_line(color = "darkblue", linewidth = 1) + geom_ribbon(aes(ymin = conf.low, ymax = conf.high), fill = "lightblue", alpha = 0.3) + labs(x = "讲故事者手势表达性 (G_expressivity)", y = "皮肤电活动响应阈值跨越情况 (EDA_G_specific_responses)", title = "G_expressivity与EDA响应的关联趋势") + theme_minimal()
方法2:分组分布箱线图 + 模型预测点
如果G_expressivity是分类变量,可通过箱线图展示不同水平下响应变量的分布,同时叠加模型预测值:
# 先将G_expressivity转换为因子(若原本为连续型可先分箱) Model_df$G_expressivity <- as.factor(Model_df$G_expressivity) # 计算各分类水平的预测值 pred_cat <- ggpredict(model, terms = "G_expressivity") # 绘图 ggplot(Model_df, aes(x = G_expressivity, y = EDA_G_specific_responses)) + geom_violin(fill = "lightgray", alpha = 0.5) + geom_jitter(alpha = 0.2, color = "darkgray") + # 添加模型预测点和置信区间 geom_point(data = pred_cat, aes(y = predicted), color = "darkblue", size = 3) + geom_errorbar(data = pred_cat, aes(ymin = conf.low, ymax = conf.high), width = 0.2, color = "darkblue") + labs(x = "讲故事者手势表达性 (G_expressivity)", y = "皮肤电活动响应阈值跨越情况 (EDA_G_specific_responses)", title = "不同G_expressivity水平下的EDA响应分布") + theme_minimal()
方法3:快速可视化固定效应系数
用sjPlot包直接生成模型固定效应的系数图,能清晰看到G_expressivity的效应大小与显著性:
library(sjPlot) # 绘制所有固定效应的系数及置信区间 plot_model(model, type = "est", show.values = TRUE, value.offset = 0.3) + labs(title = "线性混合模型固定效应系数", x = "系数值", y = "固定效应变量") + theme_minimal() # 单独绘制G_expressivity的预测效应 plot_model(model, type = "pred", terms = "G_expressivity") + labs(x = "讲故事者手势表达性 (G_expressivity)", y = "皮肤电活动响应阈值跨越情况 (EDA_G_specific_responses)", title = "G_expressivity对EDA响应的预测效应") + theme_minimal()
注意事项
- 你的响应变量是二分类(0/1),严格来说应使用广义线性混合模型(
glmer(..., family = binomial)),若之前误用lmer,建议先调整模型,上述方法同样支持glmer输出。 - 若需展示交互效应(如
G_expressivity与Role的关联),可在ggpredict的terms参数中添加变量,例如terms = c("G_expressivity", "Role")。
内容的提问来源于stack exchange,提问作者Chris Ruehlemann
相关产品推荐
相关产品推荐

