斯皮尔曼等级相关系数一

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

1、简介

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

假设两个随机变量分别为X 、Y (也可以看做两个集合),它们的元素个数均为N ,两个随即变量取的第i (1

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

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

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

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

2、适用范围

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

3、Matlab 实现

源程序一:

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

[cpp] view plaincopy 1. function coeff = mySpearman(X , Y)

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

3. %

4. % 输入:

5. % X:输入的数值序列

6. % Y:输入的数值序列

7. %

8. % 输出:

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

10.

11.

12. if length(X) ~= length(Y)

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

14. return ;

15. end

16.

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

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

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

20.

21. %计算Xrank 中的各个值

22. for i = 1 : N

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

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

25. for j = 1 : N

26. if X(i)

27. cont1 = cont1 + 1;

28. elseif X(i) == X(j)

29. cont2 = cont2 + 1;

30. end

31. end

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

33. end

34.

35. %计算Yrank 中的各个值

36. for i = 1 : N

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

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

39. for j = 1 : N

40. if Y(i)

41. cont1 = cont1 + 1;

42. elseif Y(i) == Y(j)

43. cont2 = cont2 + 1;

44. end

45. end

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

47. end

48.

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

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

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

52. coeff = 1 - fenzi / fenmu;

53.

54. end %函数mySpearman 结束

源程序二:

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

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

[cpp] view plaincopy

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

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

3. coeff = 1 - fenzi / fenmu;

改为

[cpp] view plaincopy

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

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

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

1、简介

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

假设两个随机变量分别为X 、Y (也可以看做两个集合),它们的元素个数均为N ,两个随即变量取的第i (1

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

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

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

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

2、适用范围

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

3、Matlab 实现

源程序一:

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

[cpp] view plaincopy 1. function coeff = mySpearman(X , Y)

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

3. %

4. % 输入:

5. % X:输入的数值序列

6. % Y:输入的数值序列

7. %

8. % 输出:

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

10.

11.

12. if length(X) ~= length(Y)

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

14. return ;

15. end

16.

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

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

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

20.

21. %计算Xrank 中的各个值

22. for i = 1 : N

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

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

25. for j = 1 : N

26. if X(i)

27. cont1 = cont1 + 1;

28. elseif X(i) == X(j)

29. cont2 = cont2 + 1;

30. end

31. end

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

33. end

34.

35. %计算Yrank 中的各个值

36. for i = 1 : N

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

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

39. for j = 1 : N

40. if Y(i)

41. cont1 = cont1 + 1;

42. elseif Y(i) == Y(j)

43. cont2 = cont2 + 1;

44. end

45. end

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

47. end

48.

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

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

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

52. coeff = 1 - fenzi / fenmu;

53.

54. end %函数mySpearman 结束

源程序二:

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

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

[cpp] view plaincopy

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

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

3. coeff = 1 - fenzi / fenmu;

改为

[cpp] view plaincopy

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

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


相关文章

  • 估计调查问卷信度的方法
  • 第二节 估计信度的方法 前面已经提出了信度的概念,但只是一个理论上的构想,实际测量过程中,无法对真分数和误差分数进行测量,在实际应用中,通常以同一样本得到的两组资料的相关,作为测量一致性的指标.估计信度有不同的方法,常用的估计的方法有再测信 ...查看


  • 教育统计学大纲
  • 高纲1428 江苏省高等教育自学考试大纲 28063 教育统计学 南京师范大学编 江苏省高等教育自学考试委员会办公室 Ⅰ 课程的性质与设置目的 <教育统计学>是研究如何整理.分析在包括教育实验.教育调查等教育研究中所获取的数字资 ...查看


  • 0278 社会统计学
  • 湖北省高等教育自学考试大纲 课程名称:社会统计学 课程代码:0278 第一部分 课程性质与目标 一.课程性质与特点 <社会统计学>是湖北省高等教育自学考试社会工作与管理专业开设的一门专业课程, 侧重介绍调查资料的收集.整理.分析 ...查看


  • 应用回归分析论文 2
  • 浙江财经学院东方学院 <应用回归分析> 课程论文 论文题 学生姓名 徐妙 学 期 2012-2013学年第一学期 分 院 信息 专 业 统计学 班 级 10统计1班 学 号 1020430112 教 师 彭武珍 成 绩 2013 ...查看


  • 社会统计学总结
  • 一.算数平均数:某一总体值总体单位平均所得的标志值的水平,是反映集中趋势最常用.最基本的平均指标. 二.中位数:把总体单位某一数量标志的各个数值按大小顺序排列,位于正中处的变量值. 三.平均差:各变量值对其算术平均数(或中位数)离差绝对值的 ...查看


  • 计量经济学
  • 一元性回归模型的古典假设:1)假定SLR.1:参数线性假定(2)假定SLR.2:随机抽样假定(独立同分布假定)(3)假定SLR.3:随机项零条件均值假定(解释变量外生性假定).(线性的和无偏的)(4)假定SLR.4:条件同方差性假定.在假定 ...查看


  • 问卷的信度分析
  • 一.概念: 信度是指根据测验工具所得到的结果的一致性或稳定性,反映被测特征真实程度的指标.一般而言,两次或两个测验的结果愈是一致,则误差愈小,所得的信度愈高,它具有以下特性: 1.信度是指测验所得到结果的一致性或稳定性,而非测验或量表本身: ...查看


  • 实验 异方差的检验与修正
  • 实验 异方差的检验与修正 实验目的 1.理解异方差的含义后果. 2.学会异方差的检验与加权最小二乘法 实验内容 一.准备工作.建立工作文件,并输入数据,用普通最小二乘法估计方程(操作步骤与方法同前),得到残差序列. 表2列出了1998年我国 ...查看


  • 统计学基本概念最新
  • 一.聚类分析 1.概念:聚类分析的职能是建立一种分类方法,它是将一批样品或变量,按照它们在性质上的亲疏程度进行分类.或者说,聚类分析就是要找出具有相近程度的点或类聚为一类: 距离的种类很多,其中欧式距离在聚类分析中用得最广,它的表达式如下: ...查看


热门内容