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

如何在ggplot2中绘制控制连续变量age的偏相关回归线散点图?

问题描述

我已经使用ppcor包的pcor.test()完成了连续变量的偏相关分析,分析结果如下:

pcor.test(data$comprehension, data$measure, 
          data$age, method = "pearson")

   estimate      p.value statistic  n gp   Method
1 0.3896185 0.0002968104  3.783869 83  1 pearson

我能够在ggplot2中绘制简单相关的散点图及回归线,代码如下:

data %>%
  ggplot(aes(y = comprehension, x = measure)) +
  geom_point() +
  geom_smooth(aes(color = measure), method = lm, se = TRUE, fullrange = TRUE)

但不清楚如何绘制能够控制第三连续变量age的偏相关回归线散点图,希望得到相关建议。
补充说明:age为连续变量。

解决方案

这里提供两种实用方法来实现控制age后的偏相关可视化:

方法1:残差法(贴合偏相关的本质)

偏相关的核心是排除age的影响后,comprehension和measure的剩余变异之间的相关。我们可以先分别用两个变量对age做回归,提取残差,再对残差做散点图和回归线:

# 计算控制age后的残差
data <- data %>%
  mutate(
    comp_resid = residuals(lm(comprehension ~ age, data = .)),
    meas_resid = residuals(lm(measure ~ age, data = .))
  )

# 绘制残差的散点图与回归线
data %>%
  ggplot(aes(y = comp_resid, x = meas_resid)) +
  geom_point(alpha = 0.6) +
  geom_smooth(method = lm, se = TRUE, color = "darkblue") +
  labs(
    x = "measure(控制age后的残差)",
    y = "comprehension(控制age后的残差)",
    title = "控制age后的偏相关散点图"
  )

这个图的回归线斜率和pcor.test()输出的estimate完全对应,因为残差的皮尔逊相关系数就是偏相关系数。

方法2:在模型中直接加入控制变量(保留原始变量刻度)

如果想保留原始变量的数值刻度,可以在geom_smooth的公式里直接加入age,拟合包含控制变量的线性模型:

data %>%
  ggplot(aes(y = comprehension, x = measure)) +
  geom_point(aes(color = age), alpha = 0.6) + # 用颜色区分不同age的样本
  geom_smooth(
    method = lm,
    se = TRUE,
    formula = y ~ x + age, # 加入age作为控制变量
    color = "darkred"
  ) +
  labs(
    x = "measure",
    y = "comprehension",
    title = "控制age后的回归线(原始变量刻度)",
    color = "age"
  )

这里的回归线展示的是当age保持不变时,measure每变化一个单位对comprehension的影响,和偏相关分析的结论一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 03:01:23