R:我在两个变量 x 和 y 之间存在线性相关性,但需要控制可能影响输出的第三个变量。我的问题是关于我应该/可以使用哪个测试。我可以使用皮尔逊相关性并添加协变量吗?如果是这样,怎么做?或者我应该使用带有协变量的 GLM?这些方法有何不同?我对 R 比较陌生,所以对代码的任何帮助也会有所帮助。谢谢!
R:检验与协变量的相关性?
机器算法验证
r
相关性
广义线性模型
预测器
控制变量
2022-04-13 20:17:18
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()是斜率。(这两个估计值恰好在数字上相似,但它们并不相同。)