如何绘制回归剔除A、B协变量效应后的Y与X关联图?
方法1:手动计算残差绘制偏回归图
你可以将Y、X分别与协变量A、B做回归,提取两者的残差(即排除A、B影响后的剩余变异),再对残差做散点拟合即可,该方法得到的拟合线斜率和你原有全模型lm(Y ~ A + B + X)中X的回归系数完全一致。
示例代码如下:
# 计算Y剔除A、B效应后的残差 resid_y <- lm(Y ~ A + B, data = data)$residuals # 计算X剔除A、B效应后的残差 resid_x <- lm(X ~ A + B, data = data)$residuals # 合并到原数据框 data <- cbind(data, resid_x, resid_y) # 绘制校正后的关联图 ggplot(data = data, aes(x = resid_x, y = resid_y)) + geom_point() + geom_smooth(method = "lm", se = FALSE) + labs(x = "X(校正A、B效应后)", y = "Y(校正A、B效应后)")
方法2:使用effects包快速生成校正拟合图
如果不需要呈现校正后的散点,只需要保留原始散点+校正协变量后的拟合线,可以直接用effects包提取校正后的预测值绘图,操作更便捷:
# 安装加载包 install.packages("effects") library(effects) # 基于全模型计算校正A、B到均值水平后X对应的Y预测值 x_effect <- effect("X", lm(Y ~ A + B + X, data = data)) effect_df <- as.data.frame(x_effect) # 绘图 ggplot() + # 原始数据散点,可按需调整透明度或删除 geom_point(data = data, aes(x = X, y = Y), alpha = 0.3) + # 校正后的拟合线 geom_line(data = effect_df, aes(x = X, y = fit), color = "blue", linewidth = 1) + # 可选:添加拟合线的95%置信区间 geom_ribbon(data = effect_df, aes(x = X, ymin = lower, ymax = upper), alpha = 0.2, fill = "blue")
内容的提问来源于stack exchange,提问作者Daphne
相关产品推荐
相关产品推荐

