转自:http://blog.csdn.net/wsywl/article/details/5859751

Spearman Rank(斯皮尔曼等级)相关系数

1、简介

在统计学中,斯皮尔曼等级相关系数以Charles Spearman命名,并经常用希腊字母ρ(rho)表示其值。斯皮尔曼等级相关系数用来估计两个变量X、Y之间的相关性,其中变量间的相关性可以使用单调函数来描述。如果两个变量取值的两个集合中均不存在相同的两个元素,那么,当其中一个变量可以表示为另一个变量的很好的单调函数时(即两个变量的变化趋势相同),两个变量之间的ρ可以达到+1或-1。

假设两个随机变量分别为X、Y(也可以看做两个集合),它们的元素个数均为N,两个随即变量取的第i(1<=i<=N)个值分别用Xi、Yi表示。对X、Y进行排序(同时为升序或降序),得到两个元素排行集合x、y,其中元素xi、yi分别为Xi在X中的排行以及Yi在Y中的排行。将集合x、y中的元素对应相减得到一个排行差分集合d,其中di=xi-yi,1<=i<=N。随机变量X、Y之间的斯皮尔曼等级相关系数可以由x、y或者d计算得到,其计算方式如下所示:

由排行差分集合d计算而得(公式一):

由排行集合x、y计算而得(斯皮尔曼等级相关系数同时也被认为是经过排行的两个随即变量的皮尔逊相关系数,以下实际是计算x、y的皮尔逊相关系数)(公式二):

以下是一个计算集合中元素排行的例子(仅适用于斯皮尔曼等级相关系数的计算)

这里需要注意:当变量的两个值相同时,它们的排行是通过对它们位置进行平均而得到的。

2、适用范围

斯皮尔曼等级相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。

3、Matlab实现

源程序一:

斯皮尔曼等级相关系数的Matlab实现(依据排行差分集合d计算,使用上面的公式一)

function coeff = mySpearman(X , Y)

% 本函数用于实现斯皮尔曼等级相关系数的计算操作

%

% 输入:

%   X:输入的数值序列

%   Y:输入的数值序列

%

% 输出:

%   coeff:两个输入数值序列X,Y的相关系数

if length(X) ~= length(Y)

error('两个数值数列的维数不相等');

return;

end

N = length(X); %得到序列的长度

Xrank = zeros(1 , N); %存储X中各元素的排行

Yrank = zeros(1 , N); %存储Y中各元素的排行

%计算Xrank中的各个值

for i = 1 : N

cont1 = 1; %记录大于特定元素的元素个数

cont2 = -1; %记录与特定元素相同的元素个数

for j = 1 : N

if X(i)

cont1 = cont1 + 1;

elseif X(i) == X(j)

cont2 = cont2 + 1;

end

end

Xrank(i) = cont1 + mean([0 : cont2]);

end

%计算Yrank中的各个值

for i = 1 : N

cont1 = 1; %记录大于特定元素的元素个数

cont2 = -1; %记录与特定元素相同的元素个数

for j = 1 : N

if Y(i)

cont1 = cont1 + 1;

elseif Y(i) == Y(j)

cont2 = cont2 + 1;

end

end

Yrank(i) = cont1 + mean([0 : cont2]);

end

%利用差分等级(或排行)序列计算斯皮尔曼等级相关系数

fenzi = 6 * sum((Xrank - Yrank).^2);

fenmu = N * (N^2 - 1);

coeff = 1 - fenzi / fenmu;

end %函数mySpearman结束

源程序二:

使用Matlab中已有的函数计算斯皮尔曼等级相关系数(使用上面的公式二)

coeff = corr(X , Y , 'type' , 'Spearman');

注意:使用Matlab自带函数计算斯皮尔曼等级相关系数时,需要保证X、Y均为列向量;Matlab自带的函数是通过公式二计算序列的斯皮尔曼等级相关系数的。一般情况下,使用上面给出的源程序一是可以得到所要的结果的,但是当序列X或Y中出现具有相同值的元素时,源程序一给出的结果就会与Matlab中corr函数计算的结果不同,这是因为当序列X或Y中有相同的元素时,公式一和公式二计算的结果会有偏差。这里可以通过将源程序一中的以下三行

fenzi = 6 * sum((Xrank - Yrank).^2);

fenmu = N * (N^2 - 1);

coeff = 1 - fenzi / fenmu;

改为

coeff = corr(Xrank' , Yrank'); %皮尔逊相关系数

这样便可以使源程序一在计算包含相同元素值的变量(至少有一个变量的取值集合中存在相同的元素)间的斯皮尔曼等级相关系数时,得到与Matlab自带函数一样的结果。程序一经过修改过后同样可以用来计算一般变量(两个变量的取值集合中均不存在相同的元素)等级相关间的斯皮尔曼等级系数。

关于皮尔逊相关系数的计算可参考以下文章:

4、参考内容

斯皮尔曼相关系数范围_Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现相关推荐

  1. 三大统计相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数

    统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 如果有两个变量:X.Y,最终计算出的相 ...

  2. Pearson、Spearman秩相关系数、kendall等级相关系数

    p>统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 如果有两个变量:X.Y,最终 ...

  3. 斯皮尔曼等级相关(Spearman Rank Correlation)

    什么是斯皮尔曼等级相关 斯皮尔曼等级相关是根据等级资料研究两个变量间相关关系的方法.它是依据两列成对等级的各对等级数之差来进行计算的,所以又称为"等级差数法". 斯皮尔曼等级相关对 ...

  4. 【数据科学】斯皮尔曼的等级相关系数(Spearman's coefficient)

    在统计数据中,斯皮尔曼的等级相关系数或斯皮尔曼的rho,以查尔斯斯皮尔曼命名并经常用希腊字母表示或,是秩相关的非参数度量(两个变量的排名之间的统计依赖性).它评估了使用单调函数描述两个变量之间关系的程 ...

  5. 相关系数(皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数)

    目录 总体皮尔逊Person相关系数: 样本皮尔逊Person相关系数: 两点总结: 假设检验:(可结合概率论课本假设检验部分) 皮尔逊相关系数假设检验: 更好的方法:p值判断方法 皮尔逊相关系数假设 ...

  6. 相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第一部分)

    0.前言 一开始学这里的时候我感觉真的完犊子了,因为这部分的内容涉及到了概率论和数理统计的东西,概率论和数理统计虽然我现在在学,但我学的一团糟,翻书也毫无头绪,完了,现在就写一写自己怎么学的这两个系数 ...

  7. 三大相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数的联系与区别

    三大统计相关系数:Pearson.Spearman秩相关系数.kendall等级相关系数 统计相关系数简介 Pearson(皮尔逊)相关系数 1.简介 2.适用范围 3.使用方法 Spearman R ...

  8. spearman相关性分析_「同学交大经金考研」西安交通大学432统计学-必考简答题4:spearman等级相关系数...

    我们是西安交大经金学院的直系学长学姐,我们想通过自己的微薄之力,为大家提供更好的复习方法和复习模式,让每一位考交大经金的同学以最高效的方法备考.21交大经金学院考研QQ群:235794121 备考资料 ...

  9. correl函数相关系数大小意义_correl(correl函数相关系数大小意义)

    CORREL返回两组数据的相关系数,输入=CORREL(B2:B10,C2:C10) 在excel中,correl函数和person函数提供了计算两个变量之间的相关系数的方法,这两个函数是等价的.与相 ...

  10. 计算斯皮尔曼的等级相关系数(Spearman’s rank correlation coefficient)步骤

    代码连接:code ( Matlab ) Spearman相关系数是在Pearson相关系数的基础上,利用两个集合中元素在各自集合的等级(排名)来计算他们之间的相关性,可以用于对数据进行分析. 假设两 ...

最新文章

  1. 中科院自动化所17篇CVPR 2022 论文新作速览!
  2. BiB: 电子科大邹权组构建基于肠道菌群平衡的疾病预测模型及微生物生物标志物发掘平台...
  3. 如何估算文章阅读时长?
  4. 后宫佳丽三千,皇后只有一个
  5. 安装搭建kafka集群
  6. (转)Android 使用com.j256.ormlite
  7. MTK Project Clone
  8. 我竟然混进了 Python 高级圈子!
  9. 电脑任务管理器_Windows任务管理器突然打不开了
  10. Hadoop大数据之Debug
  11. Jenkins系列四通过脚本方式部署maven项目,maven聚合项目,前端VUE的springboot项目
  12. Java从入门到进阶书单推荐|必收藏
  13. 福建计算机专业公务员考试培训,2016中国证监会公务员考试专业科目考试大纲(计算机类)...
  14. 图像处理之对BMP图片的认识
  15. keil数字钟c语言,在 keil 中完成数字钟的演示
  16. 专题二:浅谈社交行业如何有效反欺诈
  17. 小程序源码:开心锤锤超火动态表情包
  18. 快醒醒吧!你连基础的JVM运行时内存布局都忘了?Java面试题及解析
  19. Ds918 ds3615 ds3617区别_不定式、动名词、现在分词、过去分词作表语的区别
  20. 浏览器安全隐患有哪些

热门文章

  1. 考研英语单词-近义词分类-Fourth Day
  2. 分布式专题(1)- 计算机网络
  3. aardio - 旋转图片
  4. 华为手机 计算机 怎么传文件,华为手机如何与电脑互传文件?华为手机不用数据线和电脑互传文件...
  5. cocos 躲避球游戏(2) --资源导入和碰撞检测
  6. 仿小米通讯录 右侧滑动条与带动画的悬停列表实现(二)
  7. 几种x-ray产生的原理
  8. 进不了BIOS,电脑开机黑屏
  9. python ccf题解 201809-1 卖菜
  10. 强智教务系统验证码识别 OpenCV