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

