用matlab也可求出以上数据,代码如下
clear;clc
load Xdata.mat
[PR,PP] = corrcoef(X);%皮尔逊相关系数与P的矩阵
[SR,SP] = corr(X,'type','Spearman');%斯皮尔逊相关系数与P的矩阵
%RX = rank_data(X(:,1));
%以下为斯皮尔曼相关系数计算过程中等级的计算尝试
[~ ,index] = sort(X(:,1));% ~表示我们不需要第一个输出值(即我们排序后的X)
% 注意这里的index是我们排序后的X在原向量中的位置
[~ ,RX] = sort(index);% 对index进行一次升序,得到的rx就是我们想要的等级
for i = 1:size(X(:,1),1) % 设置一个循环 (假设此时程序运行到了i = 2)
position = (X(:,1) == X(i) ); % 得到X中与X(i)相等的位置,返回一个列向量,向量值全为1或0
% (i= 2时,position = [0 1 0 1 0]' )
RX(position == 1) = sum(RX .* position) / sum(position); % 对RX进行处理
end