Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

8.1 相关性分析

相关性分析是一种统计方法,用于评估两个或多个变量之间的关系或相关性。它可以帮助我们了解变量之间的相关程度,即一个变量如何随着另一个变量的变化而变化。

1. 两个变量之间的相关系数

我们先考虑下两个连续变量之间的统计关系。

simple_regression

Pearson相关系数是用于衡量两个连续变量之间线性相关程度的统计指标。它通常用于评估两个变量之间的线性关系,即当一个变量增加时,另一个变量是否也随之增加或减少。Pearson相关系数的取值范围在-1到1之间,其具体计算公式如下:

r=i=1n(XiXˉ)(YiYˉ)i=1n(XiXˉ)2i=1n(YiYˉ)2r = \frac{{\sum_{i=1}^{n}(X_i - \bar{X})(Y_i - \bar{Y})}}{{\sqrt{\sum_{i=1}^{n}(X_i - \bar{X})^2}\sqrt{\sum_{i=1}^{n}(Y_i - \bar{Y})^2}}}

其中:

  • r r 表示Pearson相关系数;

  • Xi X_i Yi Y_i 分别表示第 i i 个样本的两个变量的取值;

  • Xˉ \bar{X} Yˉ \bar{Y} 分别表示两个变量的样本均值;

  • $ n ) 表示样本数量。

Pearson相关系数的解释如下:

  • r=1 r = 1 时,表示两个变量完全正相关,即随着一个变量的增加,另一个变量也呈现增加的趋势。

  • r=1 r = -1 时,表示两个变量完全负相关,即随着一个变量的增加,另一个变量呈现减少的趋势。

  • r=0 r = 0 时,表示两个变量之间不存在线性关系。

需要注意的是,Pearson相关系数只能衡量线性相关性,对于非线性关系或者异常值敏感的情况,可能不适合使用Pearson相关系数。在这种情况下,可以考虑使用Spearman相关系数或者Kendall Tau相关系数等非参数方法。

2. 相关性系数的实现

2.1 numpy库计算Pearson相关系数

import numpy as np

# 定义两个变量的样本数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 3, 4, 5, 6])

# 计算Pearson相关系数
r = np.corrcoef(x, y)[0, 1]

print("Pearson相关系数:", r)
Pearson相关系数: 0.9999999999999999

2.2 scipy库计算Pearson相关系数

调用scipy.stats.pearsonr计算相关系数:

import scipy.stats as stats
r = stats.pearsonr(x, y)
r.correlation
1.0

2.3 Pandas库计算Pearson相关系数

也可以使用pd.DataFrame.corr()来计算相关系数矩阵:

import pandas as pd
df = pd.DataFrame()
df['x'] = x
df['y'] = y
df.corr(method='pearson')   # 计算相关系数矩阵
Loading...