相关系数的公式:从基础定义到高级应用的全面指南

深入理解变量间的线性与非线性关系,掌握统计学中最核心的度量工具

什么是相关系数?

在统计学和数据科学领域,相关系数(Correlation Coefficient)是衡量两个变量之间线性关系强度和方向的标准化指标。它的值通常介于 -1 到 1 之间。理解相关系数的公式不仅是掌握统计学的基础,更是进行数据探索性分析(EDA)的关键步骤。

正相关 (+1)

当一个变量增加时,另一个变量也随之增加。例如:身高与体重。此时相关系数接近 1。

负相关 (-1)

当一个变量增加时,另一个变量随之减少。例如:车速与到达目的地所需时间。此时相关系数接近 -1。

不相关 (0)

两个变量之间没有明显的线性关系。例如:早餐吃的食物种类与当天的股票涨跌。此时相关系数接近 0。

⚠️ 重要提示: 相关系数仅衡量线性关系。即使相关系数为 0,变量之间仍可能存在强烈的非线性关系(如抛物线关系)。因此,在应用相关系数的公式之前,务必先绘制散点图进行观察。

皮尔逊相关系数 (Pearson Correlation Coefficient)

皮尔逊相关系数(通常记为 r 或 ρ)是最常用的相关系数,用于衡量两个连续变量之间的线性相关性。它基于协方差和标准差计算得出。

1. 数学公式

总体皮尔逊相关系数的公式如下:

ρX,Y = Cov(X,Y) / (σX σY)

其中:

样本皮尔逊相关系数的计算公式更为常用,表达式为:

r = Σ((xi - x̄)(yi - ȳ)) / √(Σ(xi - x̄)² Σ(yi - ȳ)²)

其中 x̄ 和 ȳ 分别是样本均值。

2. 适用条件

使用皮尔逊相关系数必须满足以下假设:

  1. 连续性:变量必须是连续型数据(如身高、体重、温度)。
  2. 正态性:两个变量应服从二元正态分布(或至少每个变量单独服从正态分布)。
  3. 线性:变量之间的关系必须是线性的。
  4. 无异常值:异常值对皮尔逊相关系数影响极大,需提前处理。

3. 计算示例

假设有以下两组数据:

变量 X (学习小时数) 变量 Y (考试分数)
260
470
680
890
10100

通过计算可知,X 和 Y 的相关系数 r = 1.0,表示完美的正线性相关。

斯皮尔曼等级相关系数 (Spearman's Rank Correlation)

当数据不符合正态分布,或者变量是等级数据(Ordinal Data)时,皮尔逊相关系数可能不适用。此时,应使用斯皮尔曼相关系数(记为 ρ 或 rs)。它衡量的是两个变量之间的单调关系,而不仅仅是线性关系。

1. 核心思想

斯皮尔曼相关系数不是直接使用原始数据,而是将数据转换为秩次(Rank),然后计算秩次之间的皮尔逊相关系数。

2. 计算公式

rs = 1 - (6 Σdi²) / (n (n² - 1))

其中:

3. 何时选择斯皮尔曼?

数据非正态

当数据严重偏斜,无法通过转换达到正态分布时。

存在异常值

数据中包含无法剔除的极端值,斯皮尔曼具有更强的鲁棒性。

等级数据

如满意度调查(非常满意、满意、一般...)或比赛名次。

4. 计算步骤示例

假设我们要分析“员工工龄”与“员工满意度评分”的关系:

员工 工龄 (X) 秩次 Rx 满意度 (Y) 秩次 Ry 差值 d d²
A53804-11
B21602-11
C84905-11
D105100500
E1250111

Σd² = 4, n = 5。代入公式:rs = 1 - (64)/(524) = 1 - 24/120 = 1 - 0.2 = 0.8。表明工龄与满意度存在较强的正单调关系。

肯德尔等级相关系数 (Kendall's Tau)

当样本量较小(n < 30)或数据中存在大量相同秩次(Ties)时,肯德尔相关系数(记为 τ)是比斯皮尔曼更优的选择。它基于一致对(Concordant Pairs)和不一致对(Discordant Pairs)的数量来计算。

1. 定义

2. 计算公式

τ = (C - D) / (C + D) = (C - D) / (n(n-1)/2)

其中 C 是一致对的数量,D 是不一致对的数量。

3. 肯德尔 Tau-b 与 Tau-c

当数据中存在大量并列秩次时,需要使用调整后的公式:

如何解读相关系数结果?

计算出相关系数只是第一步,正确的解读至关重要。许多初学者容易犯“相关即因果”的错误。

1. 强度解读表

|r| 范围 相关强度 说明
0.8 - 1.0极强变量间几乎存在确定的函数关系
0.6 - 0.8强存在明显的相关趋势
0.4 - 0.6中中等程度的相关
0.2 - 0.4弱存在微弱的相关,可能受其他因素影响
0.0 - 0.2极弱/无基本无线性关系

2. 显著性检验 (P值)

即使计算出较高的相关系数,也需要通过假设检验来判断其是否具有统计学意义。通常进行 t 检验:

t = r √((n-2) / (1-r²))

如果 P 值 < 0.05,我们拒绝原假设(原假设为 ρ=0),认为相关系数显著不为 0。

3. 常见误区

⚠️ 辛普森悖论 (Simpson's Paradox)

在分组比较中都占优势的一方,在总评中反而处于劣势。例如:某药物在男性和女性群体中均有效,但合并数据后可能显示无效甚至有害。这是因为忽略了潜在的混杂变量(如性别比例差异)。

编程实现:Python 与 R

在实际工作中,我们很少手动计算相关系数的公式,而是借助编程语言快速分析大数据集。

使用 Pandas 和 Scipy

import pandas as pd
import numpy as np
from scipy import stats

创建示例数据

data = { 'X': [2, 4, 6, 8, 10], 'Y': [60, 70, 80, 90, 100] } df = pd.DataFrame(data)

1. 皮尔逊相关系数

pearson_corr, pearson_p = stats.pearsonr(df['X'], df['Y']) print(f"Pearson r: {pearson_corr}, p-value: {pearson_p}")

2. 斯皮尔曼相关系数

spearman_corr, spearman_p = stats.spearmanr(df['X'], df['Y']) print(f"Spearman rho: {spearman_corr}, p-value: {spearman_p}")

3. 绘制相关矩阵热力图 (可选)

import seaborn as sns sns.heatmap(df.corr(), annot=True, cmap='coolwarm')

使用基础 R 函数

创建数据框

df <- data.frame( X = c(2, 4, 6, 8, 10), Y = c(60, 70, 80, 90, 100) )

1. 皮尔逊相关系数

cor(dfY, method = "pearson")

2. 斯皮尔曼相关系数

cor(dfY, method = "spearman")

3. 肯德尔相关系数

cor(dfY, method = "kendall")

4. 查看显著性 (使用 cor.test)

cor.test(dfY, method = "pearson")

Excel 操作步骤

  1. 启用分析工具库:文件 > 选项 > 加载项 > 转到 > 勾选“分析工具库”。
  2. 使用函数:
    • 皮尔逊:=CORREL(数组1, 数组2)
  3. 使用数据分析插件:
    • 数据 > 数据分析 > 相关系数 > 选择输入区域。

常见问题解答 (FAQ)

相关系数的公式中,r=0 意味着两个变量完全无关吗?

不一定。r=0 仅表示两个变量之间没有线性相关关系。它们之间可能存在强烈的非线性关系,例如二次函数关系(抛物线)。要确认是否完全无关,需要结合散点图和其他统计检验。

斯皮尔曼相关系数和皮尔逊相关系数哪个更好?

没有绝对的“更好”,只有“更合适”。如果数据符合正态分布且为线性关系,皮尔逊相关系数统计功效更高。如果数据是非正态分布、存在异常值或为等级数据,斯皮尔曼相关系数更稳健、更适用。

相关系数的显著性检验 P 值小于 0.05 是什么意思?

这意味着在 95% 的置信水平下,我们可以拒绝“总体相关系数为 0”的原假设。换句话说,观察到的相关性不太可能是由随机误差引起的,具有统计学意义。

如何处理相关系数计算中的异常值?

异常值对相关系数影响巨大。建议先通过箱线图或散点图识别异常值。如果异常值是数据录入错误,应予以修正或删除;如果是真实数据但属于极端情况,可以考虑使用对斯皮尔曼等鲁棒性更强的方法,或在分析前后分别计算以评估其影响。

✨ 更多精彩
🏷️ 标签:相关系数斯皮尔曼等级相关系数线性关系
研
墨卷研习录
墨卷研习录
CopyRight@educfa.com.cn