斯皮尔曼等级相关系数一_第1页
斯皮尔曼等级相关系数一_第2页
斯皮尔曼等级相关系数一_第3页
斯皮尔曼等级相关系数一_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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计算,使用上面的公式一)cppview plaincopy1. functioncoeff=mySpearman(X,Y)2. %本函数用于实现斯皮尔曼等级相关系数的计算操作3. %4. %输入:5. %X:输入的数值序列6. %Y:输入的数值序列7. %8. %输出:9. %coeff:两个输入数值序列X,Y的相关系数10. 11. 12. iflength(X)=length(Y)13. error(两个数值数列的维数不相等);14. return;15. end16. 17. N=length(X);%得到序列的长度18. Xrank=zeros(1,N);%存储X中各元素的排行19. Yrank=zeros(1,N);%存储Y中各元素的排行20. 21. %计算Xrank中的各个值22. fori=1:N23. cont1=1;%记录大于特定元素的元素个数24. cont2=-1;%记录与特定元素相同的元素个数25. forj=1:N26. ifX(i)X(j)27. cont1=cont1+1;28. elseifX(i)=X(j)29. cont2=cont2+1;30. end31. end32. Xrank(i)=cont1+mean(0:cont2);33. end34. 35. %计算Yrank中的各个值36. fori=1:N37. cont1=1;%记录大于特定元素的元素个数38. cont2=-1;%记录与特定元素相同的元素个数39. forj=1:N40. ifY(i)Y(j)41. cont1=cont1+1;42. elseifY(i)=Y(j)43. cont2=cont2+1;44. end45. end46. Yrank(i)=cont1+mean(0:cont2);47. end48. 49. %利用差分等级(或排行)序列计算斯皮尔曼等级相关系数50. fenzi=6*sum(Xrank-Yrank).2);51. fenmu=N*(N2-1);52. coeff=1-fenzi/fenmu;53. 54. end%函数mySpearman结束源程序二:使用Matlab中已有的函数计算斯皮尔曼等级相关系数(使用上面的公式二)cppview plaincopy1. coeff=corr(X,Y,type,Spearman);注意:使用Matlab自带函数计算斯皮尔曼等级相关系数时,需要保证X、Y均为列向量;Matlab自带的函数是通过公式二计算序列的斯皮尔曼等级相关系数的。一般情况下,使用上面给出的源程序一是可以得到所要的结果的,但是当序列X或Y中出现具有相同值的元素时,源程序一给出的结果就会与Matlab中corr函数计算的结果不同,这是因为当序列X或Y中有相同的元素时,公式一和公式二计算的结果会有偏差。这里可以通过将源程序一中的以下三行cppview plaincopy1. fenzi=6*sum(Xrank-Yrank).2);2. fenmu=N*(N2-1);3. coeff=1-fenzi/fenmu;改为cppview plaincopy1. coeff=corr(Xrank,Yrank);%皮尔逊相关系数这样便可以使源程序一在计算包含相同元素值的变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论