今天纠结了一天的百分等级问题,现整理一下纠结成果:
由于Excel算出来的百分等级低于SPSS中的数值,因此开始了找原因的漫漫长路
后来搜索过程中,使用R中的:
rank(m1)/length(m1) ## 与spss一致,采用序位中值
此时计算的结果和SPSS一致
后来发现dplyr包中有个函数叫,percent_rank()
这个函数算出来的百分等级和Excel一致,于是果断查看源代码
发现它是这么算的:
(min_rank(m1) - 1)/(sum(!is.na(m1)) - 1)
可以看到,它使用的是序位的下界。
rank(m1,ties.method = \'min\') rank(m1,ties.method = \'average\')
R中 rank函数默认的是使用均值,因此第一种方法的结果会和SPSS一致,因此SPSS也是用的序位中值计算的秩。
而Excel中用的是最小的秩,而非均值。
具体为什么减一。。。还不知道