如何解释相关系数

How to interpret correlation coefficient

我试图在 R 中找到我的因变量和自变量之间的相关系数。

data("mtcars")
my_data <- mtcars[, c(1,3,4,5,6,7)]
res <- cor(my_data)
round(res, 2)

结果,我得到了一个相关矩阵,有些带有+ve或-ve。

例如:如果 mpg 和 disp 之间的相关系数是-0.85,我怎么知道哪个变量在减少,那个变量在增加?

考虑以下脚本,它只是比较 mpgdisp

res1 <- cor(mtcars$mpg,  mtcars$disp)
res2 <- cor(mtcars$disp, mtcars$mpg)
round(res1, 2)
round(res2, 2)

两次调用的输出都是 -0.85。换句话说,相关系数的性质与一个变量相对于另一个变量的顺序无关。相反,负相关系数意味着随着 mpg 的增加,disp 趋于减少。我们也可以说随着 disp 增加,mpg 趋于减少。

另一种思考方式是 -0.85 的相关系数告诉您任一变量的一个标准差增加(减少)与另一个变量的 0.85 标准差减少(增加)相关。您可以使用下面的代码以图形方式查看。

黑线是 dispmpg 回归的回归线。这与相关系数有关,因为回归斜率等于相关系数乘以 disp 的标准偏差除以 mpg 的标准偏差。 (如果我们切换了 x 和 y 变量并完成 lm(mpg ~ disp, data=mtcars),那么回归斜率将是相关系数乘以 mpg 的标准偏差除以 disp 的标准偏差。)

plot(mtcars$mpg, mtcars$disp)
abline(lm(disp ~ mpg, data=mtcars))
abline(v=mean(mtcars$mpg) + c(0, sd(mtcars$mpg)), col="red", lty="11")
abline(h=mean(mtcars$disp) + c(0, cor(mtcars$mpg, mtcars$disp)*sd(mtcars$disp)), col="red", lty="11")

您可以对这两个变量进行标准化(即缩放值,使它们以偏离均值的标准差为单位),这可能会使关系更加清晰。现在相关系数和回归斜率完全相同,因为两个变量都被缩放到相同的单位。请注意,mpgS 中 1 个标准差的变化与 dispS 中 -0.85 标准差的变化相关联:

# Standardized versions of mpg and disp
mtcars$mpgS = (mtcars$mpg - mean(mtcars$mpg))/sd(mtcars$mpg)
mtcars$dispS = (mtcars$disp - mean(mtcars$disp))/sd(mtcars$disp)

plot(mtcars$mpgS, mtcars$dispS)
abline(lm(dispS ~ mpgS, data=mtcars))
abline(v=c(0,1), col="red", lty="11")
abline(h=c(0, cor(mtcars$mpg, mtcars$disp)), col="red", lty="11")

你也可以把图中mpgdisp的角色互换,结果是等价的:

plot(mtcars$dispS, mtcars$mpgS)
abline(lm(mpgS ~ dispS, data=mtcars))
abline(v=c(0,1), col="red", lty="11")
abline(h=c(0, cor(mtcars$mpg, mtcars$disp)), col="red", lty="11")

请记住,相关系数所暗示的关系是基于线性关系的假设,如图中的回归线所体现的那样。如果实际数据中的关系不是线性的(这里似乎就是这种情况),则相关系数(或等价地,单变量回归)可能无法很好地预测自变量的值。