Spearman’s 相关
---
参考文献:
How to Calculate Correlation Between Variables in Python
---
使用Spearman相关的场景,以及基本概念
1、两个变量可以通过非线性关系相关联,使得该关系在变量的分布上更强或更弱。
2、此外,正在考虑的两个变量可能具有非高斯分布。在这种情况下,Spearman 的相关系数(以 Charles Spearman 命名)可用于总结两个数据样本之间的强度。如果变量之间存在线性关系,也可以使用这种关系检验,但功效会略低(例如,可能导致系数得分较低)。
3、与 Pearson 相关系数一样,完全负相关变量和完全正相关变量的分数分别介于 -1 和 1 之间。
4、这些统计数据不是使用样本本身的协方差和标准差来计算系数,而是根据每个样本上值的相对排名来计算的。这是非参数统计中常用的方法,例如我们假设数据分布不是高斯分布。
5、如果您不确定两个变量之间的分布和可能的关系,Spearman 相关系数是一个很好的工具。
基本原理:
这些统计数据是根据每个样本值的相对排名计算的。
数学表达式:
Spearman's correlation coefficient = covariance(rank(X), rank(Y)) / (stdv(rank(X)) * stdv(rank(Y)))
如何使用Python进行计算?
The spearmanr() SciPy function can be used to calculate the Spearman’s correlation coefficient between two data samples with the same length.
# calculate the spearmans's correlation between two variables
from numpy.random import randn
from numpy.random import seed
from scipy.stats import spearmanr
# seed random number generator
seed(1)
# prepare data
data1 = 20 * randn(1000) + 100
data2 = data1 + (10 * randn(1000) + 50)
# calculate spearman's correlation
corr, _ = spearmanr(data1, data2)
print('Spearmans correlation: %.3f' % corr)
--------------------
为什么使用pearson时,样本 必须得服从 正态分布?
因为在计算相关的时候,用到了均值,为什么均值能够刻画整个群落呢?因为在正态分布中,可以用均值来刻画整个群落。而在一些非高斯分布的变量中,比如幂率分布,属于无标度的概率分布,就不能用均值来刻画样本(举个简单的例子,我和马云的平均收入,有参考意义吗?没有。因为收入不服从高斯分布。班级里同学们的平均身高有参考意义吗?有的,因为服从的是正态分布。) 因此,想用pearson相关, 样本必须得服从正态分布。