数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数
数学建模:相关性分析学习——皮尔逊(Pearson)相关系数与斯皮尔曼(Spearman)相关系数
在数据分析中,相关性分析是理解变量之间关系的一个重要步骤。相关性分析通过计算相关系数来衡量两个变量之间的线性或非线性关系。本篇文章将详细介绍 皮尔逊相关系数(Pearson Correlation)和 斯皮尔曼相关系数(Spearman Correlation),并展示如何通过 Python 进行相关性分析。我们将通过实际的代码示例、图解和详细说明,帮助你掌握这两种常用的相关性分析方法。
目录
- 相关性分析概述
皮尔逊相关系数(Pearson Correlation)
- 2.1 皮尔逊相关系数的定义
- 2.2 皮尔逊相关系数的计算公式
- 2.3 Python 实现与示例
- 2.4 皮尔逊相关系数的图解与应用
斯皮尔曼相关系数(Spearman Correlation)
- 3.1 斯皮尔曼相关系数的定义
- 3.2 斯皮尔曼相关系数的计算公式
- 3.3 Python 实现与示例
- 3.4 斯皮尔曼相关系数的图解与应用
- 皮尔逊与斯皮尔曼相关系数的比较
- 总结
1. 相关性分析概述
在数据科学中,相关性分析是用来衡量和描述两个变量之间关系强度的一个常用统计方法。它可以帮助我们判断变量之间的关联性,例如:
- 正相关:一个变量增加时,另一个变量也增加。
- 负相关:一个变量增加时,另一个变量减少。
- 无相关:两个变量之间没有明显的线性或非线性关系。
常见的相关性度量方法有 皮尔逊相关系数 和 斯皮尔曼相关系数。这两种方法分别用于衡量线性关系和非线性关系。接下来,我们将逐一介绍这两种方法的定义、计算方法、应用场景及 Python 实现。
2. 皮尔逊相关系数(Pearson Correlation)
2.1 皮尔逊相关系数的定义
皮尔逊相关系数(Pearson Correlation Coefficient)是衡量两个变量之间 线性关系 强度的度量。它的值介于 -1 和 1 之间:
- r = 1:完全正相关,两个变量完全同步变化。
- r = -1:完全负相关,一个变量增加时另一个变量减少。
- r = 0:无相关,两个变量之间没有任何线性关系。
2.2 皮尔逊相关系数的计算公式
皮尔逊相关系数的计算公式如下:
其中:
- ( X_i ) 和 ( Y_i ) 分别是两个变量的每个数据点。
- ( \bar{X} ) 和 ( \bar{Y} ) 是两个变量的均值。
- ( n ) 是数据点的数量。
2.3 Python 实现与示例
我们可以使用 Python 中的 NumPy 或 SciPy 库来计算皮尔逊相关系数。以下是使用 NumPy 和 SciPy 计算皮尔逊相关系数的示例:
import numpy as np
from scipy.stats import pearsonr
import matplotlib.pyplot as plt
# 生成示例数据
X = np.array([1, 2, 3, 4, 5])
Y = np.array([2, 4, 6, 8, 10])
# 计算皮尔逊相关系数
pearson_corr, _ = pearsonr(X, Y)
print(f"皮尔逊相关系数: {pearson_corr}")
# 绘制散点图
plt.scatter(X, Y, color='b')
plt.title("Scatter plot of X vs Y")
plt.xlabel("X")
plt.ylabel("Y")
plt.grid(True)
plt.show()
输出:
皮尔逊相关系数: 1.0
在这个例子中,皮尔逊相关系数为 1.0,表示变量 X 和 Y 之间存在完全的正相关关系。
2.4 皮尔逊相关系数的图解与应用
- 正相关:当皮尔逊相关系数接近 1 时,表示两个变量之间有很强的正线性关系。例如,X 和 Y 的散点图可能呈现一条上升的直线。
- 负相关:当皮尔逊相关系数接近 -1 时,表示两个变量之间有很强的负线性关系。例如,X 和 Y 的散点图可能呈现一条下降的直线。
- 无相关:当皮尔逊相关系数接近 0 时,表示两个变量之间没有线性关系,散点图呈现无规律的散布。
3. 斯皮尔曼相关系数(Spearman Correlation)
3.1 斯皮尔曼相关系数的定义
斯皮尔曼相关系数(Spearman's Rank Correlation)是一种非参数的统计方法,旨在衡量两个变量之间的 单调关系,即无论数据是否呈线性,变量间的增减关系是否一致。斯皮尔曼系数是基于排名而非原始数据计算的,因此它比皮尔逊相关系数更适合衡量非线性关系。
斯皮尔曼相关系数的值也在 -1 和 1 之间:
- r = 1:完全正相关,两个变量之间的排名完全一致。
- r = -1:完全负相关,两个变量之间的排名完全相反。
- r = 0:无相关,两个变量之间没有单调关系。
3.2 斯皮尔曼相关系数的计算公式
斯皮尔曼相关系数的计算公式如下:
其中:
- ( d_i ) 是两个变量的每对排名之差。
- ( n ) 是数据点的数量。
3.3 Python 实现与示例
斯皮尔曼相关系数可以通过 SciPy 库中的 spearmanr
函数计算:
from scipy.stats import spearmanr
# 生成示例数据
X = np.array([1, 2, 3, 4, 5])
Y = np.array([5, 4, 3, 2, 1])
# 计算斯皮尔曼相关系数
spearman_corr, _ = spearmanr(X, Y)
print(f"斯皮尔曼相关系数: {spearman_corr}")
# 绘制散点图
plt.scatter(X, Y, color='r')
plt.title("Scatter plot of X vs Y (Spearman)")
plt.xlabel("X")
plt.ylabel("Y")
plt.grid(True)
plt.show()
输出:
斯皮尔曼相关系数: -1.0
在这个例子中,斯皮尔曼相关系数为 -1.0,表示变量 X 和 Y 之间有完全的负单调关系,即 X 增加时,Y 减少。
3.4 斯皮尔曼相关系数的图解与应用
- 正相关:当斯皮尔曼相关系数接近 1 时,表示两个变量之间有一致的排名顺序,散点图中的点会沿着上升的斜线分布。
- 负相关:当斯皮尔曼相关系数接近 -1 时,表示两个变量之间有相反的排名顺序,散点图中的点会沿着下降的斜线分布。
- 无相关:当斯皮尔曼相关系数接近 0 时,表示两个变量之间没有明显的单调关系,散点图可能显示无规律的分布。
4. 皮尔逊与斯皮尔曼相关系数的比较
特性 | 皮尔逊相关系数 | 斯皮尔曼相关系数 |
---|---|---|
计算依据 | 变量之间的 线性关系 | 变量之间的 单调关系 |
要求 |
适用于连续变量,数据需要满足正态分布 | 不要求数据呈正态分布,可以用于有序类别数据 |
| 适用场景 | 用于检验两个变量之间的线性关系 | 用于检验两个变量之间的单调关系 |
| 值域 | [-1, 1] | [-1, 1] |
| 优点 | 计算简便,适合线性关系 | 适用于非线性关系,稳健性强 |
5. 总结
- 皮尔逊相关系数:适用于衡量 线性关系,要求数据满足正态分布。
- 斯皮尔曼相关系数:适用于衡量 单调关系,不要求数据正态分布,适用于有序类别数据。
在实际应用中,选择皮尔逊还是斯皮尔曼相关系数,取决于数据的特征和分析目标。如果数据呈现线性关系,皮尔逊相关系数可能更加合适;如果数据关系是单调的,但不一定是线性的,斯皮尔曼相关系数可能会更好。
希望通过本教程,你能够熟练掌握这两种常见的相关性分析方法,并能够在数据分析中得心应手地应用它们。
评论已关闭