spearman相关系数适用条件,spearman相关系数大小分析

  spearman相关系数适用条件,spearman相关系数大小分析

  Python用于计算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相关系数排序数组形式。

  2=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。1]) sb1=da3 [:0] sb2=da3 [:1] pr=np.ones ((1,row)) ps=np.ones ((1,row))列表形式

  WB=xlrd . Open _ workbook(r c: Users LENOVO Documents Tencent Files 973391860 FileRecv eg1d 9 data . xls )#打开文件sheet1=wb.sheet_by_index(0)#获取表格x1=sheet 1 . col _ values(0)x2=sheet 1 . col _ values(0)#不直接x2=x1,这将成为副本创建,从x2改为y1=sheet 1 . col _ values(1)y2=sheet 1 . col

  首次计算了秩统计量的数组形式。

  for in range(row):[c]=NP . where(sa1==sb1[I])[d]=NP . where(sa2==sb2[I])#确定元素位置pr [0] [i]=c [0] ps [0] [i]=

  列表形式

  对于范围(n)中的I:sx=sxnp . square(x2[I]-MX)sy=synp . square(y2[I]-my)SZ=SZ(x2[I]-MX)*(y2[I]-my)pr[0][I]=x1.这里因为数据是列表的形式,所以使用这个方法,数组还有另外一个方法ps[0][i]=y1.index(y2[i]) # List。对于重复元素,只能获取第一个出现的元素的索引,而数组可以一次获取,但数组获取返回元组修正顺序统计量数组的形式。

  DEF FINDRANK (x1,z): repeat=[item for item,count in counter (x1)。items () if count 1] #查找重复元素rcount=[item的计数,Countcounter (x1)。Items () if count1] #求range (NR)中j的重复次数NR=len(repeat):#处理重复元素的秩统计量[a]=NP . where(x1==repeat[j])m=rcount[j]B=sum(a)/m for range(m):[d,c]=np.where (z==a [k]) z [0] [c]=b列表形式

  DEF FINDRANK (x1,z): repeat=[item for item,count in counter (x1)。items () if count 1] #查找重复元素rcount=[item的计数,Countcounter (x1)。Items () if count1] #求j在range (NR)中的重复次数NR=len(repeat):#处理重复元素的秩统计量A=x1 . index(repeat[j])m=r count[j]b=(m * A(m-1)* m/2)/m[d,c]=NP。其中(z==a) z [0] [c]=b计算Spearman相关系数这里数组和列表的代码没有区别。

  数组形式

  FINDRANK (SA1,PR) FINDRANK (SA2,PS) QXY=0F或I in Range(row):QXY=qxynp . square(PR[0][I]-PS[0][I])# Compute spearman QXY=1-6/row/(NP . square)

  对于范围(n)中的I,findrank(x1,pr) findrank(y1,PS)qxy=0:qxy=qxy NP。square(pr[0][I]-PS[0][I])#计算斯皮尔曼qxy=1-6/n/(NP。平方(n)-1)* qxy

完整代码在利用Python计算Spearman相关系数

* *

spearman相关系数适用条件,spearman相关系数大小分析