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

如何在ggplot2中绘制控制第三变量的偏相关图?

在ggplot2中绘制偏相关图(结合ggpubr)

偏相关的核心是控制协变量Z的影响后,展示X与Y的净关联,实现思路是先计算X、Y去除Z影响后的残差,再对残差做常规的相关可视化,同时标注偏相关系数与p值。

步骤1:计算残差(去除协变量Z的影响)

先对X和Y分别以Z为自变量做线性回归,提取残差——这部分残差就是去除Z影响后的X、Y值:

library(dplyr)
library(ggplot2)
library(ggpubr)
library(ppcor)

# 示例数据(替换成你的数据集)
set.seed(123)
data <- tibble(
  X = rnorm(100),
  Z = rnorm(100),
  Y = 0.6*X + 0.3*Z + rnorm(100, 0, 0.5)
)

# 计算残差
data <- data %>%
  mutate(
    X_resid = residuals(lm(X ~ Z, data = .)),
    Y_resid = residuals(lm(Y ~ Z, data = .))
  )

步骤2:绘制偏相关散点图+拟合线

用残差替代原始X、Y绘制散点图,拟合线反映的就是控制Z后的X-Y线性关系:

p <- ggplot(data, aes(x = X_resid, y = Y_resid)) +
  geom_point(alpha = 0.6) +
  stat_smooth(method = lm, color = "blue", se = FALSE) +
  labs(x = "X(去除Z影响后残差)", y = "Y(去除Z影响后残差)", title = "偏相关图(控制Z)") +
  theme_bw()

步骤3:添加偏相关系数与显著性标注

有两种方式实现:

方式1:手动计算偏相关后用annotate添加

直接用ppcor::pcor.test计算结果,然后自定义标注文本:

# 计算偏相关
pcor_result <- pcor.test(data$X, data$Y, data$Z, method = "pearson")

# 格式化标注文本(匹配你之前的显著性风格)
p_label <- cut(pcor_result$p.value,
               breaks = c(-Inf, 0.0001, 0.001, 0.01, 0.05, Inf),
               labels = c("***", "***", "**", "*", "ns"))
cor_label <- paste0("r = ", round(pcor_result$estimate, 2), " ", p_label)

# 添加到图中
p + annotate("text", x = max(data$X_resid)*0.8, y = max(data$Y_resid)*0.8, 
             label = cor_label, size = 5, color = "red")

方式2:用stat_cor直接对残差计算(等价于偏相关)

因为残差的Pearson相关系数就是偏相关系数,所以可以直接用stat_cor对残差计算:

p + stat_cor(aes(label = paste(label, cut(..p.., 
                                          breaks = c(-Inf, 0.0001, 0.001, 0.01, 0.05, Inf),
                                          labels = c("'***'", "'***'", "'**'", "'*'", "'ns'"))), 
                 sep = "~"), 
             method = "pearson", cor.coef.name = "r")

关键说明

  • 残差的线性拟合趋势 = 控制Z后X与Y的偏回归趋势,和lm(Y ~ X + Z)中X的系数对应
  • 残差的Pearson相关系数 = 偏相关系数,两种计算方式结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:35:45