宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

一、相关系数的定义

相关系数(Correlation Coefficient),指的是评价自变量与因变量之间线性关系密切程度的统计量。相关系数的取值范围在-1与1之间,取值为正表示自变量与因变量正相关;反之,为负数表示自变量与因变量呈负相关;取值为0则表示两个变量之间没有线性关系。相关系数被广泛应用于金融、医疗、经济学等领域中,对于建立预测模型有非常重要的意义。

二、相关系数的强弱标准三种

1. Pearson相关系数

Pearson相关系数,也称作皮尔逊相关系数,其取值在-1和1之间。当取值为1时表示自变量与因变量之间呈正相
关;当取值为-1时表示自变量与因变量之间呈负相关;当取值为0时表示自变量与因变量之间没有线性关系。通常,当相关系数的绝对值大于0.8时,我们认为存在着显著的相关性。

2. Spearman等级相关系数

Spearman等级相关系数是一种非参数的相关系数,它衡量的是两个变量之间的单调关系,也就是说只有当两个变量的值之间单调增加或单调减少时,相关系数才能取到最大值或最小值。Spearman等级相关系数的取值范围同样在-1到1之间,可以用来对于不满足正态分布的数据进行相关性分析。

3. 判定系数

判定系数的计算方法与Pearson相关系数非常相似,均采用对各点与拟合直线的偏离程度的平方和进行统计,将自变量和因变量之间的关系转化为两个数据序列的整体差异程度的比较。判定系数也被称作“可决系数”,用来计算自变量对因变量的解释程度,它的取值范围在0到1之间,当判定系数取值为1时,就说明因变量能够被自变量完全解释,不存在随机误差。对于线性模型,判定系数可以用来评价预测模型的准确性并作为模型优度的衡量标准。

三、代码示例

import numpy as np
from scipy.stats import pearsonr, spearmanr

# 生成数据
x = np.random.randn(100)
y = np.random.randn(100)

# Pearson相关系数计算
corr1, _ = pearsonr(x, y)
print('Pearson correlation coefficient:', corr1)

# Spearman等级相关系数计算
corr2, _ = spearmanr(x, y)
print('Spearman rank correlation coefficient:', corr2)

上述代码中,我们用numpy生成随机数列x和y,然后分别计算Pearson相关系数和Spearman等级相关系数,并输出结果。在实际工作中,我们也可以用相同的方法来计算判定系数,下面是一个例子:

from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

# 生成数据
X = np.random.randn(100, 2)
y = np.dot(X, [3, 4]) + np.random.randn(100)

# 线性模型拟合
model = LinearRegression()
model.fit(X, y)

# 判定系数计算
y_pred = model.predict(X)
score = r2_score(y, y_pred)
print('Coefficient of Determination:', score)

上述代码中,我们用numpy生成了一个二维随机数列X,并按照线性模型y=3X1+4X2的方式生成了因变量y。然后用sklearn工具包中的LinearRegression模型拟合数据,得到自变量对因变量的解释程度,并计算判定系数。需要注意的是,判定系数的计算要对每一个拟合模型单独进行评价,因此不能直接使用scipy的对于Pearson相关系数和Spearman等级相关系数的计算函数。