定义
X和Y为两组数据,其斯皮尔曼相关系数:
一个数的等级,就是将它所在的一列数按照从小到大排序后,这个数所在的位置。
可以得到如下图:
注:如果有的数值相同,则将它们所在的位置取算术平均。
另一种斯皮尔曼spearman相关系数
斯皮尔曼相关系数被定义成等级之间的皮尔逊相关系数。
代码:
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)
和之前的结果有微小差别。
MATLAB中计算斯皮尔曼相关系数
第一种计算方法:
X = [3 8 4 7 2]' %一定要是列向量,一撇表示转置
Y = [5 10 9 10 6]'
1 - 6 * (1 + 0.25 + 0.25 + 1) / 5 / 24
第二种计算方法:
coeff = corr(X,Y,'type','Spearman')
两个相关系数的比较
1.连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用
spearman相关系数也可以, 就是效率没有pearson相关系数高。
2.上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。
3.两个定序数据之间也用spearman相关系数,不能用pearson相关系数。
定序数据是指仅仅反映观测对象等级、顺序关系的数据,是由定序尺度计量
形成的,表现为类别,可以进行排序,属于品质数据。
例如:优、良、差;我们可以用1表示差、 2表示良、 3表示优,但请注意,用2除以1得出的2并不代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。
注:斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只要数据满足单调关系(例如线性函数、指数函数、对数函数等)就能够使用。