R中的偏相关值大于正常相关
Posted
技术标签:
【中文标题】R中的偏相关值大于正常相关【英文标题】:Partial correlation values are larger than normal correlation in R 【发布时间】:2018-12-16 14:04:18 【问题描述】:我正在处理一个大型数据集(700 万行),试图了解各个自变量与因变量之间的相关性。当我运行 pcor(dataset) 时,如果在运行 cor(dataset) 时进行比较,则会产生更高的相关性。
我的数据集有 6 个因变量和 84 个自变量。我发现 每个 因变量以及 84 个独立变量的偏相关性。
我的自变量是文本类型(75 个类别)的字数,以及其他一些社会变量(所有数字)等性别。
我的问题是:我不确定为什么在 R 中使用 pcor() 时相关性很高,而使用 cor() 时相关性非常弱。这是偏相关的正常行为吗?
【问题讨论】:
pcor
不是基本 R 函数。 pcor
属于哪个包,有什么作用?
Google 告诉我pcor
是包ppcor
、RVAideMemoire
和ggm
的一部分;你用的是哪一个?此外,在偏相关中,您正在测量两个变量之间的相关性,同时控制其他混杂变量。显然,这会给您带来与使用 cor
不同的结果。
相关性和部分相关性之间没有一般的顺序。举个例子x=rnorm(10000)
、y=rnorm(10000)
和 z=(x+y)/2
。那么cor(x,y)
几乎为零,而pcor(x,y|z)
是正数。其他顺序也是可能的。
我在 R 中使用 ppcor 包
【参考方案1】:
如果您想知道偏相关系数是否可以大于比“完全”相关系数,请考虑以下示例。
我们来看看ppcor
reference manual的样本数据
df <- data.frame(
hl = c(7,15,19,15,21,22,57,15,20,18),
disp = c(0.000,0.964,0.000,0.000,0.921,0.000,0.000,1.006,0.000,1.011),
deg = c(9,2,3,4,1,3,1,3,6,1),
BC = c(1.78e-02,1.05e-06,1.37e-05,7.18e-03,0.00e+00,0.00e+00,0.00e+00 ,4.48e-03,2.10e-06,0.00e+00))
根据原论文,数据涵盖了酵母蛋白中序列和功能进化的关系,可从[Drummond et al., Molecular Biology and Evolution 23, 327–337 (2006)]获取。
我们有兴趣探索hl
和disp
之间的相关性。
hl
和 disp
之间的线性关系
让我们首先将hl
绘制为disp
的函数
library(ggplot2)
ggplot(df, aes(hl, disp)) +
geom_point()
标准(“完整”)皮尔逊乘积矩相关系数由下式给出
with(df, cor(hl, disp))
#[1] -0.2378724
从绘图和cor
结果可以明显看出,在不控制任何其他变量的情况下,hl
与disp
之间的线性关系不是很强。
偏相关
概括一下定义:在给定混杂变量 Z 的情况下,X 和 Y 之间的部分相关性定义为 X 对 Z 和 Y 对 Z 的线性回归所产生的残差的相关性。
让我们通过绘制两个对应的线性模型hl ~ deg + BC
和disp ~ deg + BC
的残差来可视化偏相关。
ggplot(data.frame(
res.x = lm(hl ~ deg + BC, df)$residuals,
res.y = lm(disp ~ deg + BC, df)$residuals)) +
geom_point(aes(res.x, res.y))
两个残差的线性相关性非常明显,表明hl
和disp
之间存在显着的偏相关。让我们通过计算hl
和disp
之间的偏相关性来确认,同时控制来自deg
和BC
的混杂效应
pcor.test(df$hl, df$disp, df[, c("deg","BC")])
# estimate p.value statistic n gp Method
#1 -0.6720863 0.06789202 -2.223267 10 2 pearson
结论
当我们控制混杂变量时,hl
和 disp
之间的 Pearson 乘积矩相关系数大于我们不控制混杂变量时的相关系数。
【讨论】:
偏相关 pcor() 与标准 cor() 有不同的符号是否正常?我在运行 pcor(A, B | Other_variables) 时得到正相关,但在运行 cor(A, B) 时得到负相关(对于相同的两个变量)@Maurits @AKD 是的,这绝对会发生。我认为这是Simpson's paradox 的一个例子。有关更多详细信息,也许还可以查看交叉验证上的有趣(和相关)帖子:Regression coefficients that flip sign after including other predictors。以上是关于R中的偏相关值大于正常相关的主要内容,如果未能解决你的问题,请参考以下文章