如何解释相关系数
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,我怎么知道哪个变量在减少,那个变量在增加?
考虑以下脚本,它只是比较 mpg
和 disp
:
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 标准差减少(增加)相关。您可以使用下面的代码以图形方式查看。
黑线是 disp
与 mpg
回归的回归线。这与相关系数有关,因为回归斜率等于相关系数乘以 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")
你也可以把图中mpg
和disp
的角色互换,结果是等价的:
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")
请记住,相关系数所暗示的关系是基于线性关系的假设,如图中的回归线所体现的那样。如果实际数据中的关系不是线性的(这里似乎就是这种情况),则相关系数(或等价地,单变量回归)可能无法很好地预测自变量的值。
我试图在 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,我怎么知道哪个变量在减少,那个变量在增加?
考虑以下脚本,它只是比较 mpg
和 disp
:
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 标准差减少(增加)相关。您可以使用下面的代码以图形方式查看。
黑线是 disp
与 mpg
回归的回归线。这与相关系数有关,因为回归斜率等于相关系数乘以 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")
你也可以把图中mpg
和disp
的角色互换,结果是等价的:
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")
请记住,相关系数所暗示的关系是基于线性关系的假设,如图中的回归线所体现的那样。如果实际数据中的关系不是线性的(这里似乎就是这种情况),则相关系数(或等价地,单变量回归)可能无法很好地预测自变量的值。