斯皮尔曼等级相关系数一

上传人:s****a 文档编号:127398009 上传时间:2022-07-30 格式:DOCX 页数:5 大小:32.13KB
返回 下载 相关 举报
斯皮尔曼等级相关系数一_第1页
第1页 / 共5页
斯皮尔曼等级相关系数一_第2页
第2页 / 共5页
斯皮尔曼等级相关系数一_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Spearman Rank (斯皮尔曼等级)相关系数1、简介在统计学中,斯皮尔曼等级相关系数以Charles Spearman命名,并经常用希腊字母p (rho) 表示其值。斯皮尔曼等级相关系数用来估计两个变量X、Y之间的相关性,其中变量间的相 关性可以使用单调函数来描述。如果两个变量取值的两个集合中均不存在相同的两个元素, 那么,当其中一个变量可以表示为另一个变量的很好的单调函数时(即两个变量的变化趋势 相同),两个变量之间的p可以达到+1或-1。假设两个随机变量分别为X、Y (也可以看做两个集合),它们的元素个数均为N,两个随即 变量取的第i (1=i=N)个值分别用Xj、丫表示。对X、Y进行排序(同时为升序或降序), 得到两个元素排行集合x、y,其中元素Xj、七分别为当在X中的排行以及七在丫中的排行。 将集合x、y中的元素对应相减得到一个排行差分集合d,其中di=xi-yi,1=i=No随机变 量X、Y之间的斯皮尔曼等级相关系数可以由x、y或者d计算得到,其计算方式如下所示:由排行差分集合d计算而得(公式一):由排行集合x、y计算而得(斯皮尔曼等级相关系数同时也被认为是经过排行的两个随即变 量的皮尔逊相关系数,以下实际是计算x、y的皮尔逊相关系数)(公式二):以下是一个计算集合中元素排行的例子(仅适用于斯皮尔曼等级相关系数的计算)这里需要注意:当变量的两个值相同时,它们的排行是通过对它们位置进行平均而得到的。2、适用范围斯皮尔曼等级相关系数对数据条件的要求没有皮尔逊相关系数严格,只要两个变量的观测值 是成对的等级评定资料,或者是由连续变量观测资料转化得到的等级资料,不论两个变量的 总体分布形态、样本容量的大小如何,都可以用斯皮尔曼等级相关系数来进行研究。3、Mat lab 实现源程序一:斯皮尔曼等级相关系数的Matlab实现(依据排行差分集合d计算,使用上面的公式一)cpp view plaincopy1.2.function coeff = mySpearman(X , Y)本函数用于实现斯皮尔曼等级相关系数的计算操作3.4.5.6.输入:乂:输入的数值序列丫:输入的数值序列8.7.输出:9.coeff:两个输入数值序列X,Y的相关系数10.11.12. if length(X) = length(Y)13. error(两个数值数列的维数不相等);14. return;15. end16.16. N = length(X); %得到序列的长度17. Xrank = zeros(1 , N); %存储X中各元素的排行18. Yrank = zeros(1 , N); %存储Y中各元素的排行20.19. %计算Xrank中的各个值20. for i = 1 : N21. cont1 = 1; %记录大于特定元素的元素个数22. cont2 = -1; %记录与特定元素相同的元素个数23. for j = 1 : N24. if X(i) X(j)25. cont1 = cont1 + 1;26. elseif X(i) = X(j)27. cont2 = cont2 + 1;28. end29. end30. Xrank(i)= cont1 + mean(0 : cont2);31. end34.32. %计算Yrank中的各个值33. for i = 1 : N34. cont1 = 1; %记录大于特定元素的元素个数35. cont2 = -1; %记录与特定元素相同的元素个数36. for j = 1 : N37. if Y(i) Y(j)38. cont1 = cont1 + 1;39. elseif Y(i) = Y(j)40. cont2 = cont2 + 1;41. end42. end43. Yrank(i)= cont1 + mean(0 : cont2);44. end48.45. %利用差分等级(或排行)序列计算斯皮尔曼等级相关系数46. fenzi = 6 * sum(Xrank - Yrank).”2);47. fenmu = N * (N”2 - 1);48. coeff = 1 - fenzi / fenmu;53.49. end %函数 mySpearman 结束源程序二:使用Matlab中已有的函数计算斯皮尔曼等级相关系数(使用上面的公式二)cpp view plaincopy1. coeff = corr(X , Y , type , Spearman);注意:使用Matlab自带函数计算斯皮尔曼等级相关系数时,需要保证X、Y均为列向量;Matlab 自带的函数是通过公式二计算序列的斯皮尔曼等级相关系数的。一般情况下,使用上面给出 的源程序一是可以得到所要的结果的,但是当序列X或Y中出现具有相同值的元素时,源程 序一给出的结果就会与Matlab中corr函数计算的结果不同,这是因为当序列X或Y中有相 同的元素时,公式一和公式二计算的结果会有偏差。这里可以通过将源程序一中的以下三行 cpp view plaincopy1. fenzi=6*sum(Xrank - Yrank).”2);2. fenmu=N*(N”2 - 1);3. coeff=1-fenzi / fenmu;改为cpp view plaincopy1. coeff = corr(Xrank , Yrank); %皮尔逊相关系数这样便可以使源程序一在计算包含相同元素值的变量(至少有一个变量的取值集合中存在相 同的元素)间的斯皮尔曼等级相关系数时,得到与Matlab自带函数一样的结果。程序一经 过修改过后同样可以用来计算一般变量(两个变量的取值集合中均不存在相同的元素)等级 相关间的斯皮尔曼等级系数。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 活动策划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!