【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient)

斯皮尔曼相关系数是统计学中三大相关系数之一
具有非常好的使用场景,对于解决我们生活中的排名类的问题时使用的比较多,其实大家更多的知道的相关系数是皮尔逊(person)相关系数,这个相关系数我们也会在后面的文章中介绍。
一、斯皮尔曼相关系数的使用场景:
斯皮尔曼等级相关(Spearman’s correlation coefficient for ranked data)主要用于解决名称数据和顺序数据相关的问题。适用于两列变量,而且具有等级变量性质具有线性关系的资料。由英国心理学家、统计学家斯皮尔曼根据积差相关的概念推导而来,一些人把斯皮尔曼等级相关看做积差相关的特殊形式。
二、斯皮尔曼(spearman)相关系数的理解
斯皮尔曼相关性系数,通常也叫斯皮尔曼秩相关系数。“秩”,可以理解成就是一种顺序或者排序,那么它就是根据原始数据的排序位置进行求解
(1)公式
首先对两个变量(X, Y)的数据进行排序,然后记下排序以后的位置(X’, Y’),(X’, Y’)的值就称为秩次,秩次的差值就是上面公式中的di,n就是变量中数据的个数,最后带入公式就可求解结果。

(2)数据要求
因为是定序,所以我们不用管X和Y这两个变量具体的值到底差了多少,只需要算一下它们每个值所处的排列位置的差值,就可以求出相关性系数了
【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient)_第1张图片
三、斯皮尔曼(spearman)相关系数的python代码实现

import pandas as pd
import numpy as np
X1=pd.Series([1, 2, 3, 4, 5, 6])
Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])
#处理数据删除Nan
x1=X1.dropna()
y1=Y1.dropna()
n=x1.count()
x1.index=np.arange(n)
y1.index=np.arange(n)
#分部计算
d=(x1.sort_values().index-y1.sort_values().index)**2#就是排序后的排名方差
dd=d.to_series().sum()
p=1-n*dd/(n*(n**2-1))

【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient)_第2张图片
【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient)_第3张图片
其实在pandas中已经有人给你写好了相关系数的函数我们只需要直接使用就可以了,corr()函数中有method参数就是可以选择使用相关系数的种类,我们只需要method='spearman’就可以了

#s.corr()函数计算
r=x1.corr(y1,method='spearman')#pandas自带函数corr
print(r,p) 

结果对比
#0.942857142857143 0.9428571428571428

在这边我写了大量的斯皮尔曼相关系数是为了让自己和大家都记住这个名称,不管是以后跟人装逼来满足自己的优越感或者是让自己更趋近于专业都需要技术这个专业名字,主要是在面试中,一般的面试官是不会的,你说出他会感觉你好牛逼,说不定多了1k的工资呢,积少成多,加油吧,少年~

-----------------------------分享结束线------------------------------

喜欢可以关注【小猪课堂】公众号了解更多编程小技巧

你可能感兴趣的:(统计学)