相关性(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 偉倫
娇娇师娘(与爱同行)