R:检验与协变量的相关性?

机器算法验证 r 相关性 广义线性模型 预测器 控制变量
2022-04-13 20:17:18

R:我在两个变量 x 和 y 之间存在线性相关性,但需要控制可能影响输出的第三个变量。我的问题是关于我应该/可以使用哪个测试。我可以使用皮尔逊相关性并添加协变量吗?如果是这样,怎么做?或者我应该使用带有协变量的 GLM?这些方法有何不同?我对 R 比较陌生,所以对代码的任何帮助也会有所帮助。谢谢!

1个回答

是的,您可以将相关性与协变量一起使用。这称为偏相关。它产生一个(部分)相关系数,该系数被归一化为 [-1, 1] 范围,就像常规相关系数一样,除了协变量在分析中是“控制的”——这个概念有点微妙,但是可以在此处找到有关其真正含义的一些很好的解释。

在 R 中获得部分相关性的一种方法是使用ppcor包:

# install/load 'ppcor' package for its pcor.test() function
if(!require("ppcor")){
  install.packages("ppcor", repos='http://cran.us.r-project.org')
  library(ppcor)
}

# make up data
x <- rnorm(50)
y <- rnorm(50)
z <- rnorm(50)

# partial correlation between x and y, controlling for z
pcor.test(x, y, z)
#      estimate   p.value  statistic  n gp  Method
# 1 -0.02288511 0.8752972 -0.1569335 50  1 pearson

您还询问这是否与使用带有协变量的线性模型不同。它没有!一探究竟:

summary(lm(y ~ x + z))
# Call:
# lm(formula = y ~ x + z)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -2.80457 -0.76631 -0.00539  0.64083  2.79261 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)
# (Intercept)  0.05163    0.17006   0.304    0.763
# x           -0.02486    0.15842  -0.157    0.876
# z            0.07098    0.15333   0.463    0.646
# 
# Residual standard error: 1.184 on 47 degrees of freedom
# Multiple R-squared:  0.005408,    Adjusted R-squared:  -0.03692 
# F-statistic: 0.1278 on 2 and 47 DF,  p-value: 0.8804

请注意,输出中“x”行的大多数数字lm()与我们从中得到的数字相匹配pcor.test()唯一的区别是“估计”pcor.test()是偏相关系数,而“估计”lm()是斜率。(这两个估计值恰好在数字上相似,但它们并不相同。)