- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
斯皮尔曼等级相关系数一
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计算,使用上面的公式一)
[cpp]?view plaincopy
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 ? ?X j 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 ? ?Y j 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中已有的函数计算斯皮尔曼等级相关系数(使用上面的公式二)
[cpp]?view plaincopy
coeff? ?corr X?,?Y?,?type?,?Spearman ;??
注意:使用Matlab自带函数计算斯皮尔曼等级相关系数时,需要保证X、Y均为列向量;Matlab自带的函数是通过公式二计算序列的斯皮尔曼等级相关系数的。一般情况下,使用上面给出的源程序一是可以得到所要的结果的,但是当序列X或Y中出现具有相同值的元素时,源程序一给出的结果就会与Matlab中corr函数计算的结果不同,这是因为当序列X或Y中有相同的元素时,公式一和
原创力文档


文档评论(0)