相关性(Correlation)

相关性(Correlation) 指的是两个或多个变量之间随同变化的关系,是数据分析和机器学习中常用的概念。了解不同变量(或特征)之间的相关程度及其方向,对于特征选择、模型构建、多重共线性检测等具有重要意义。下面将从概念、度量方式、使用场景、注意事项等方面进行介绍。

1. 相关性的基本概念

线性相关性

最常见是指线性依赖关系:如果一个变量增大时,另一个变量也倾向增大(或减小),则我们说它们之间存在正(或负)相关。线性相关最常用的度量就是皮尔森相关系数(Pearson Correlation Coefficient)。 非线性相关性

有些变量之间可能存在非线性的依赖关系(如曲线、分段)。此时仅用 Pearson 相关系数无法完全捕捉,需要考虑斯皮尔曼相关系数(Spearman)、**肯德尔相关系数(Kendall)**或其它更通用的统计方法。 相关 != 因果

重要原则:“相关不代表因果”。即便两个变量高度相关,也不一定说明二者存在因果关系,可能存在第三个隐变量的影响或时间先后顺序等多种因素。

2. 常见的相关性度量方法

2.1 皮尔森相关系数(Pearson’s r)

定义:衡量两个连续变量间的线性关系强度和方向,取值范围

[

1

,

+

1

]

[-1, +1]

[−1,+1]。

r

>

0

r > 0

r>0,表示正相关;

r

<

0

r < 0

r<0,表示负相关;

r

|r|

∣r∣ 越接近 1,相关性越强。若

r

=

0

r = 0

r=0,表示线性无关;但不代表无任何关系,可能存在非线性关联。 适用条件:

变量为连续型并近似服从正态分布;两个变量的关系大致呈线性。 公式:

r

=

i

=

1

n

(

x

i

x

ˉ

)

(

y

i

y

ˉ

)

i

=

1

n

(

x

i

x

ˉ

)

2

i

=

1

n

(

y

i

y

ˉ

)

2

r = \frac{\sum_{i=1}^{n} (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum_{i=1}^{n} (x_i - \bar{x})^2 \sum_{i=1}^{n} (y_i - \bar{y})^2}}

r=∑i=1n​(xi​−xˉ)2∑i=1n​(yi​−yˉ​)2

​∑i=1n​(xi​−xˉ)(yi​−yˉ​)​ 其中

x

ˉ

\bar{x}

xˉ 和

y

ˉ

\bar{y}

yˉ​ 分别是 x、y 的样本均值。

2.2 斯皮尔曼秩相关系数(Spearman’s

ρ

\rho

ρ)

定义:基于变量的“秩”(Rank)来衡量关联,主要适用于非线性关系或有序变量。

对原始样本排序(赋予秩),然后计算在秩空间的皮尔森相关。 优点:

对异常值或非线性更加鲁棒;可以处理等级(ordinal)变量。 取值范围:同样是

[

1

,

+

1

]

[-1, +1]

[−1,+1]。

2.3 肯德尔秩相关系数(Kendall’s

τ

\tau

τ)

定义:也是基于排名的相关系数,但计算方式与斯皮尔曼不同,更关注样本对在秩上的一致性/不一致性。优点:

对小样本更稳定;对重复秩处理较好。

2.4 距离相关(Distance Correlation)等高级方法

距离相关:考虑到可能存在更一般的非线性关系,通过所有样本点间的距离矩阵来定义相关度,更全面。当数据分布复杂或关系高度非线性时,可以考虑此类方法。

3. 使用场景

特征选择

在机器学习前期,可能会对高相关的特征进行筛选或去冗余。如若两个特征相关系数过高(如

r

>

0.9

|r|>0.9

∣r∣>0.9),可保留对目标更有效的那个特征,以减少多重共线性。 多重共线性检测

在线性模型(如线性回归、Logistic 回归)中,如果变量之间高度相关,会影响回归系数的稳定性和解释性。可通过相关矩阵查看特征间相关程度。 探索性数据分析

在数据可视化或初步分析阶段,可计算特征与目标间的相关系数,直观判断哪些特征可能与目标有较强(线性)关系。 实验/研究验证

如果想证明两个变量的关系,可以用相关系数及其统计检验(p-value)来做初步判断。

4. 相关分析的注意事项

线性 vs. 非线性

Pearson 仅能捕捉线性趋势;若两个变量呈 U 型、指数型等非线性关系,Pearson 可能显示低相关,但实际上二者关系紧密。这时需考虑 Spearman、Kendall 或其他方法。 相关不代表因果

即便相关系数达到 0.9 以上,也不能简单地说“X 导致 Y”。需要有理论、实验、时间先后顺序等佐证因果关系。 离群点(outlier)

Pearson 对异常值敏感; Spearman、Kendall 更稳健一些。遇到离群值较多的场景,要先评估或清洗异常值,或采用秩相关系数。 数据规模

相关系数在小样本下不稳定;也可使用置信区间或 p-value 来评估统计显著性。若样本过大,统计显著性很容易通过;此时更要看实际相关系数数值的大小(效果量)。 类别型/有序型变量

类别变量若无序,仅能做列联表 + 卡方检验等;若有序(Ordinal),可用 Spearman/Kendall。

5. 代码示例(Python)

假设我们有两个数组 x、y,并想计算 Pearson、Spearman、Kendall 相关系数:

import numpy as np

from scipy.stats import pearsonr, spearmanr, kendalltau

# 生成示例数据

np.random.seed(42)

x = np.random.randn(100)

y = x * 0.5 + np.random.randn(100)*0.2 # 人为构造线性关系

pearson_corr, pearson_p = pearsonr(x, y)

spearman_corr, spearman_p = spearmanr(x, y)

kendall_corr, kendall_p = kendalltau(x, y)

print(f"Pearson correlation: {pearson_corr:.3f}, p-value={pearson_p:.3e}")

print(f"Spearman correlation: {spearman_corr:.3f}, p-value={spearman_p:.3e}")

print(f"Kendall correlation: {kendall_corr:.3f}, p-value={kendall_p:.3e}")

运行后会得到类似结果(随数据而变):

Pearson correlation: 0.900, p-value=1.23e-30

Spearman correlation: 0.867, p-value=2.45e-27

Kendall correlation: 0.754, p-value=1.10e-24

说明 x、y 明显呈正相关且在统计上非常显著。

6. 小结

相关性(Correlation) 描述变量间的随同变化关系,常用 Pearson(线性)、Spearman(基于秩) 和 Kendall(秩一致性)等系数加以量化,取值范围都在

[

1

,

+

1

]

[-1, +1]

[−1,+1]。相关不代表因果,相关分析只是初步探查变量间联系的工具。实际分析中要考虑非线性、离群值、样本大小、变量类型等因素,合理选择相关系数计算方法。在机器学习和数据分析中,相关性广泛应用于特征选择、多重共线性检测、探索性分析等方面,帮助我们理解数据内部结构和优化模型。


Wellent 偉倫
娇娇师娘(与爱同行)