【皮尔逊相关】它是什么、为什么、在哪里、如何使用及注意事项
在数据分析领域,我们经常需要了解两个变量之间是否存在某种关联。众多衡量关联的方法中,皮尔逊积矩相关系数(Pearson Correlation Coefficient)无疑是最知名、最常用的一种。它提供了一个标准化的数值,用以描述两个连续变量之间线性关系的强度和方向。
它究竟是什么?为什么如此常用?它的使用场景在哪里?如何计算和解读它的数值?在使用时又有哪些陷阱需要避免?本文将围绕这些实际问题展开,深入探讨皮尔逊相关的方方面面。
【它究竟是什么?】
简单来说,皮尔逊相关系数,常用符号 r 或 ρ (总体),是一个介于 -1 和 +1 之间的数值。它衡量的是两个变量随彼此线性变化的程度。
- r = +1:表示两个变量之间存在完美的正向线性关系。当一个变量增加时,另一个变量也以固定的比例增加。数据点在散点图上呈一条向上倾斜的直线。
- r = -1:表示两个变量之间存在完美的负向线性关系。当一个变量增加时,另一个变量以固定的比例减少。数据点在散点图上呈一条向下倾斜的直线。
- r = 0:表示两个变量之间不存在线性关系。这不代表两个变量完全无关,可能存在非线性关系,或者它们完全独立。散点图上的数据点可能看起来杂乱无章,或者呈现非线性模式。
- 0 < r < +1:表示两个变量之间存在正向线性关系,数值越接近 +1,关系越强。
- -1 < r < 0:表示两个变量之间存在负向线性关系,数值越接近 -1,关系越强。
关键点: 皮尔逊相关系数只捕捉线性关系。即使两个变量之间存在非常强的非线性关系(例如,一个变量是另一个变量的平方),皮尔逊相关系数也可能接近于 0。
【为何偏偏是它?】
皮尔逊相关之所以如此流行,主要原因在于:
- 标准化和易于理解: 它的值总是在 -1 到 +1 之间,这个范围是固定的,使得不同数据集之间的相关系数可以直接比较(只要数据类型和关系性质允许)。
- 概念直观: 正相关、负相关、无相关,这些概念与我们日常理解的“一起变化”或“反向变化”相符。
- 计算相对直接: 基于变量的均值、标准差和协方差计算,在各种统计软件和编程语言中都有内置函数。
- 广泛的理论基础: 作为参数统计方法,它在满足一定前提时具有良好的统计性质。
【它能告诉你什么?】
皮尔逊相关系数主要告诉你两件事:
- 关系的方向: 正值意味着同向变动,负值意味着反向变动。
- 线性关系的强度: 绝对值越接近 1,线性关系越强;越接近 0,线性关系越弱。
对于相关系数强度的解释没有绝对的标准,但在实践中常用以下大致的经验法则:
- |r| ≈ 0:几乎没有线性关系
- 0 < |r| ≤ 0.3:弱线性关系
- 0.3 < |r| ≤ 0.7:中等强度线性关系
- |r| > 0.7:强线性关系
- |r| = 1:完美线性关系
需要注意的是,这些阈值是主观的,实际应用中应结合具体领域的背景来判断相关性的强度。
【它的使用场景在哪里?】
皮尔逊相关系数的应用极其广泛,涵盖了几乎所有需要分析变量间数量关系的领域:
- 金融: 分析不同股票、基金或资产类别之间的收益率相关性,用于投资组合多样化或风险管理。
- 医疗健康: 研究吸烟量与肺活量、药物剂量与疗效、某种生物标志物水平与疾病严重程度的关联。
- 社会科学: 分析教育年限与收入水平、广告投入与销售额、社交媒体使用时长与幸福感评分的关系。
- 工程与制造: 考察生产过程中的温度与产品质量、设备运行时间与维护频率、材料属性与产品性能的相关性。
- 市场研究: 分析客户年龄与消费金额、网页停留时间与购买转化率等。
在这些场景中,皮尔逊相关系数可以帮助我们初步识别变量之间的潜在联系,为后续更复杂的分析(如回归分析)提供基础或指引。
【如何计算皮尔逊相关系数?】
皮尔逊相关系数的计算基于每对观测数据的均值、标准差和协方差。其理论公式可以表达为:
r = Cov(X, Y) / (StdDev(X) * StdDev(Y))
其中,Cov(X, Y) 是变量 X 和 Y 的协方差,StdDev(X) 和 StdDev(Y) 分别是 X 和 Y 的标准差。
【实际操作:如何使用工具?】
幸运的是,在大多数情况下,我们不需要手动计算。各种统计软件和编程语言都提供了便捷的函数来完成这项任务。
- 在 Microsoft Excel 中:
可以使用
CORREL
或PEARSON
函数。例如,要计算 A 列和 B 列数据的皮尔逊相关系数,可以在一个单元格中输入=CORREL(A1:A100, B1:B100)
或=PEARSON(A1:A100, B1:B100)
。 - 在 Python 中 (使用 Pandas 或 SciPy 库):
使用 Pandas 库:
import pandas as pd # 假设 df 是一个 Pandas DataFrame,包含两列数据 'Variable_X' 和 'Variable_Y' correlation = df['Variable_X'].corr(df['Variable_Y'], method='pearson') print(correlation)
或者使用 SciPy 库:
from scipy.stats import pearsonr # 假设 x 和 y 是两个包含数据的 NumPy 数组或列表 x = [1, 2, 3, 4, 5] y = [5, 4, 3, 2, 1] correlation_coefficient, p_value = pearsonr(x, y) print(f"皮尔逊相关系数: {correlation_coefficient}") # pearsonr 函数还会返回一个 p 值,用于检验相关系数是否在统计上显著异于零。 print(f"P 值: {p_value}")
- 在 R 中:
使用
cor()
函数:# 假设 data 是一个数据框,包含两列 var_x 和 var_y correlation <- cor(data$var_x, data$var_y, method = "pearson") print(correlation) # 或者使用 cor.test() 进行统计检验,它也会返回相关系数 cor_test_result <- cor.test(data$var_x, data$var_y, method = "pearson") print(cor_test_result$estimate) # 皮尔逊相关系数 print(cor_test_result$p.value) # P 值
通过这些工具,计算皮尔逊相关系数变得非常便捷。重要的是理解其含义和使用限制。
【使用它需要注意什么?】
尽管易于使用,但皮尔逊相关并非万能,存在一些重要的使用前提和常见误区:
【重要前提:线性关系!】
这是最关键的一点。皮尔逊相关系数只衡量线性关联。如果两个变量之间存在明显的非线性关系(例如抛物线、指数关系等),即使这种关系非常紧密,计算出的皮尔逊相关系数也可能接近于零,从而误导你认为它们之间没有关联。在计算皮尔逊相关系数之前,强烈建议绘制散点图,直观检查两个变量之间是否存在近似线性的趋势。
示例: 考虑变量 X=[1, 2, 3, 4, 5] 和 Y=[1, 4, 9, 16, 25] (Y=X²)。它们之间有完美的二次关系,但计算出的皮尔逊相关系数可能远小于 1。
【数据要求与假设】
严格来说,为了对相关系数进行统计推断(例如检验相关系数是否显著异于零),皮尔逊相关系数有一些统计假设,但对于仅仅计算和描述相关系数本身,主要要求数据满足:
- 连续变量: 两个变量都应该是连续的(或至少是间隔/比率尺度的)。
- 独立观测: 每个数据点都应该是独立的,不受其他数据点的影响。
- 双变量正态性 (用于推断): 虽然计算相关系数本身不强制要求,但如果想进行统计显著性检验,理论上假设两个变量联合服从双变量正态分布。然而,这个假设在实践中往往被放宽,中心极限定理在样本量大时可以提供一些支持。
【相关不等于因果!】
这是统计学中最常被强调的原则之一。皮尔逊相关系数只能告诉你两个变量是否倾向于一起变动,以及这种变动的方向和强度(在线性意义上)。它绝不能告诉你一个变量的变化是否导致了另一个变量的变化。
经典例子: 在夏季,冰淇淋的销量和溺水事故的数量往往都增加。它们之间可能存在很强的正相关。但这并不意味着吃冰淇淋会导致溺水,或者溺水增加了冰淇淋销量。共同的隐藏因素——天气炎热——导致了这两个现象的增加。这是隐藏变量(或称混淆变量)的典型影响。
【异常值的影响】
皮尔逊相关系数对异常值非常敏感。散点图中的一个或几个极端值可能会极大地扭曲相关系数的数值,即使大部分数据点显示出不同的趋势。在使用皮尔逊相关之前,检查并适当处理异常值(例如,删除异常值、进行数据转换或使用更稳健的相关方法如斯皮尔曼相关)非常重要。
【样本量大小】
样本量的大小会影响相关系数的可靠性。即使在总体中存在真实但微弱的关联,在小样本中可能无法检测到统计显著性;反之,在非常大的样本中,即使相关系数的绝对值非常小(例如 r=0.1),也可能在统计上显著异于零,但这并不意味着这种关联在实际中具有重要意义(即缺乏实际显著性)。
【与其它相关方法的区别?】
了解皮尔逊相关与其他方法的区别有助于选择合适的工具:
- 皮尔逊相关: 用于衡量连续变量之间的线性关系强度和方向。
- 斯皮尔曼等级相关 (Spearman Correlation): 衡量两个变量之间单调关系的强度和方向。它不要求关系是线性的,只要求一个变量增加时,另一个变量倾向于增加或减少(不一定是固定比例)。斯皮尔曼相关是基于变量的“等级”而不是原始数值计算的,因此对异常值不敏感,也能捕捉非线性但单调的关系。它适用于有序数据或不满足皮尔逊相关前提的连续数据。
- 肯德尔等级相关 (Kendall Correlation): 也是衡量变量之间单调关系的一种非参数方法,同样基于等级。它的计算方式和斯皮尔曼相关略有不同,在某些情况下(如数据中有较多并列等级时)可能比斯皮尔曼更合适。
选择哪种相关系数取决于你想要分析的关系类型(线性 vs 单调)以及数据是否满足相应的假设。
综上所述,皮尔逊相关系数是一个强大而实用的工具,用于探索连续变量之间的线性关联。然而,正确理解其含义、前提和局限性,并结合散点图等可视化手段,是有效利用这一工具的关键。