什么是相关系数?
相关系数是衡量两个变量之间线性关系强度的指标。通常,相关系数值的范围为 -1 到 1:
- 1 = 强正线性关系。这意味着,对于一个变量中的每一次正增长,另一个变量中就会出现成比例的正增长。例如,腰带尺寸的增加几乎与腰围尺寸完全相关。
- -1 = 强负线性关系。换句话说,对于一个变量的每一次正增长,另一个变量就会出现成比例的负减少。例如,车辆油箱中的油量几乎与速度完全相关。
- 0 = 变量之间没有线性关系。
相关系数的绝对值表示关系的强度。绝对值越大,表示关系越强。例如,-.75|= .75,则比 .65 具有更强的关系。“有意义”的相关性取决于学科的不同 。例如,在物理学中,相关系数应该在 -0.95 到 0.95 之间,而在社会科学中,-0.6 到 0.6 之间的结果是有意义的。
相关系数用于衡量两个变量之间的关系强度。相关系数有几种类型,但最受欢迎的是 Pearson 相关系数。(也称为 Pearson R)是线性回归中常用的相关系数。
Pearson 相关系数(也称为 Pearson 的 r)和 Spearman 秩相关是使用最广泛的相关系数 。但是,还有许多其他因素,包括类内相关性和 Moran I。如果您的数据看起来大致像一条直线,则可以使用 Pearson 的 r。如果它是随机的,或者遵循任何其他形状(U 形、S 形等),则不应计算相关系数。
Pearson 相关系数
什么是 Pearson 相关?
数据集之间的相关性是衡量它们相关性的指标。统计中最常见的相关性度量是 Pearson Correlation。全称是 Pearson Product Moment Correlation (PPMC)。它显示了两组数据之间的线性关系
Pearson 相关性的潜在问题
PPMC 无法区分因变量和自变量。例如,如果您试图找到高热量饮食与糖尿病之间的相关性,您可能会发现0.8 的高相关性。但是,您也可以在切换变量的情况下获得相同的结果。换句话说,你可以说糖尿病会导致高热量饮食。这显然没有意义。因此,作为研究人员,您必须了解您插入的数据。此外,PPMC 不会为您提供有关线路斜率的任何信息;它只告诉你是否存在关系。
现实生活中的例子:皮尔逊相关用于数以千计的现实生活情况。例如,中国的科学家想知道杂草稻种群的遗传差异是否存在关系。目标是找出水稻的进化潜力。分析了两组之间的 Pearson 相关性。它显示杂草稻群的 Pearson 乘积矩正相关在 0.783 和 0.895 之间。这个数字相当高,这表明存在相当强的关系。
如何求 Pearson 的相关系数
手工
示例问题:从下表中查找相关系数的值:
序号 | 年龄 x | 葡萄糖水平 y |
---|---|---|
1 | 21 | 65 |
2 | 42 | 75 |
3 | 59 | 81 |
第 1 步:制作图表。 使用给定的数据,并再添加三列: x y xy xy、 x 2 x^2 x2和 y 2 y^2 y2.
序号 | 年龄 x | 葡萄糖水平 y | x y xy xy | x 2 x^2 x2 | y 2 y^2 y2 |
---|---|---|---|---|---|
1 | 21 | 65 | |||
2 | 42 | 75 | |||
3 | 59 | 81 |
第 2 步:将 x 和 y 相乘以填充 xy 列。例如,第 1 行将是 43 × 99 = 4,257。
序号 | 年龄 x | 葡萄糖水平 y | x y xy xy | x 2 x^2 x2 | y 2 y^2 y2 |
---|---|---|---|---|---|
1 | 21 | 65 | 1365 | ||
2 | 42 | 75 | 3150 | ||
3 | 59 | 81 | 4779 |
步骤3: 取 x 列中数字的平方,并将结果放在 x 中2列。
序号 | 年龄 x | 葡萄糖水平 y | x y xy xy | x 2 x^2 x2 | y 2 y^2 y2 |
---|---|---|---|---|---|
1 | 21 | 65 | 1365 | 441 | |
2 | 42 | 75 | 3150 | 1764 | |
3 | 59 | 81 | 4779 | 3481 |
步骤4: 取 y 列中数字的平方,并将结果放在 y 中2列。
序号 | 年龄 x | 葡萄糖水平 y | x y xy xy | x 2 x^2 x2 | y 2 y^2 y2 |
---|---|---|---|---|---|
1 | 21 | 65 | 1365 | 441 | 4225 |
2 | 42 | 75 | 3150 | 1764 | 5625 |
3 | 59 | 81 | 4779 | 3481 | 6561 |
第 5 步:将列中的所有数字相加,并将结果放在列的底部。希腊字母 sigma (Σ) 是 “sum of” 或 summation 的缩写。
序号 | 年龄 x | 葡萄糖水平 y | x y xy xy | x 2 x^2 x2 | y 2 y^2 y2 |
---|---|---|---|---|---|
1 | 21 | 65 | 1365 | 441 | 4225 |
2 | 42 | 75 | 3150 | 1764 | 5625 |
3 | 59 | 81 | 4779 | 3481 | 6561 |
Σ | 247 | 486 | 20485 | 11409 | 40022 |
第 6 步:使用以下相关系数公式。
Pearsons 相关系数答案是:2868 / 5413.27 = 0.529809 从我们的表格中:
- σ x = 247 σx = 247 σx=247
- σ y = 486 σy = 486 σy=486
- σ x y = 20 , 485 σxy = 20,485 σxy=20,485
- σ x 2 = 11 , 409 σx^2= 11,409 σx2=11,409
- Σ y 2 = 40 , 022 Σy^2= 40,022 Σy2=40,022
- n 是样本量,在我们的例子中 n = 6
相关系数 = 6(20,485) – (247 × 486) / [√[[6(11,409) – (2472)] × [6(40,022) – 4862]]] = 0.5298
相关系数的范围是从 -1 到 1。我们的结果是 0.5298 或 52.98%,这意味着变量具有中等正相关。
Python 代码
在 Python 中,可以使用 numpy
或 scipy
库来计算 Pearson 相关系数。以下是两种方法的示例代码:
使用 numpy
import numpy as np
# 示例数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
# 计算 Pearson 相关系数
correlation_matrix = np.corrcoef(x, y)
pearson_corr = correlation_matrix[0, 1]
print(f"Pearson Correlation Coefficient: {pearson_corr}")
使用 scipy
from scipy.stats import pearsonr
# 示例数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 计算 Pearson 相关系数
pearson_corr, _ = pearsonr(x, y)
print(f"Pearson Correlation Coefficient: {pearson_corr}")
MATLAB 代码
在 MATLAB 中,可以使用 corrcoef
函数来计算 Pearson 相关系数。以下是示例代码:
% 示例数据
x = [1, 2, 3, 4, 5];
y = [2, 4, 6, 8, 10];
% 计算 Pearson 相关系数
correlation_matrix = corrcoef(x, y);
pearson_corr = correlation_matrix(1, 2);
disp(['Pearson Correlation Coefficient: ', num2str(pearson_corr)])
解释
-
Python 代码:
- 使用
numpy
:np.corrcoef
函数返回一个相关系数矩阵,对角线上的值是 1(表示变量与自身的相关性),非对角线上的值是两个变量之间的 Pearson 相关系数。 - 使用
scipy
:pearsonr
函数返回一个元组,第一个元素是 Pearson 相关系数,第二个元素是 p 值(用于检验相关性的显著性)。
- 使用
-
MATLAB 代码:
corrcoef
函数返回一个相关系数矩阵,对角线上的值是 1,非对角线上的值是两个变量之间的 Pearson 相关系数。
示例输出
对于给定的示例数据 [1, 2, 3, 4, 5]
和 [2, 4, 6, 8, 10]
,Pearson 相关系数应该是 1,因为这两个变量之间存在完全的线性关系。
参考文献