利用Python计算Spearman相关系数,非调用函数,针对array和list的实现
自己编程实现Spearman相关系数的计算。
Spearman相关系数
Spearman相关系数是一种秩相关系数。数据的秩简单来说就是该样本数据的次序统计量。秩统计量是基于样本值的大小在全体样本中所占位次(秩)的统计量
例:有样本数据-0.8, -3.1, 1.1, -5.2, 4.2,次序统计量的值是-5.2, -3.1, -0.8,1.1, 4.2,则秩统计量的取值是3,2,4,1,5。
若观测数据中两个值相等,则秩取为它们应排序位置的平均值。
例:有样本数据-0.8, -3.1, -0.8,秩为2.5, 1, 2.5。
其中,Ri是X的秩统计量,Si是Y的秩统计量,Spearman相关系数定义为这两组秩统计量的相关系数。
拆解任务
- 读入数据
- 排序
- 第一次计算秩统计量
- 查找是否有相等数据,纠正次序统计量
- 计算Spearman相关系数
排序
array形式
da2 = pd.read_excel(fb,header = None)
da3 = da2.values #将pd格式转换成数组
row = da2.shape[0]
col = da2.shape[1]
sa1 = np.sort(da3[:,0]) #数据排序
sa2 = np.sort(da3[:,1])
sb1 = da3[:,0]
sb2 = da3[:,1]
pr = np.ones((1,row))
ps = np.ones((1,row))
list形式
wb = xlrd.