斯皮尔曼spearman相关系数

Posted 丰丰小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斯皮尔曼spearman相关系数相关的知识,希望对你有一定的参考价值。

斯皮尔曼spearman相关系数

斯皮尔曼相关系数定义:

X和Y为两组数据,其斯皮尔曼(等级)相关系数:
r s = 1 − 6 ∑ i = 1 n d i 2 n ( n 2 − 1 ) r_s=1-\\frac6\\sum\\limits_i=1^nd_i^2n(n^2-1) rs=1n(n21)6i=1ndi2
其中, d i d_i di X i X_i Xi Y i Y_i Yi之间的等级差。
可以证明: r s r_s rs为于-1和+1之间。

等级:一个数的等级,就是将它所在的一列数按从小到大排序后,这个数所在的位置,也就是排序后等级从小到大为1,2,…,n。当排序时有相同数值时,则将取它们所在的位置的算数平均值。

下面举一个例子:

xyx的等级y的等级等级差等级差的平方
352111
81054.50.50.25
483300
71044.5-0.50.25
2612-11

根据公式可以计算出斯皮尔曼相关系数为0.875。
注:斯皮尔曼相关系数>0为正相关;斯皮尔曼相关系数<0为负相关。越接近1和-1相关性越强。斯皮尔曼相关系数为零表明当X增加时Y没有任何趋向性。

斯皮尔曼相关系数还有另一种定义方式:斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。如果数据中没有重复值,计算和上一种定义方式相同。如果有重复值,可能会有一定的偏差。

MATLAB中计算斯皮尔曼相关系数

两种用法:

corr(X,Y,'type','Spearman')
%这里的XY必须是列向量
corr(X,'type','Spearman')
%计算x矩阵各列之间的斯皮尔曼相关系数

下面我们对上面表格中的例子使用MATLAB进行计算:

%% 斯皮尔曼相关系数
X = [3 8 4 7 2]'  % 一定要是列向量哦,一撇'表示求转置
Y = [5 10 9 10 6]'
% 第一种计算方法
1-6*(1+0.25+0.25+1)/5/24

% 第二种计算方法
coeff = corr(X , Y , 'type' , 'Spearman')
% 等价于:
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)
%这里的等价就是斯皮尔曼相关系数被定义成等级变量之间的皮尔逊相关系数。

% 计算矩阵各列的斯皮尔曼相关系数
R = corr(Test, 'type' , 'Spearman')

斯皮尔曼相关系数的假设检验

斯皮尔曼相关系数的假设检验分为大样本和小样本的情况。
H 0 : r s = 0 , H 1 : r s ≠ 0 H_0:r_s=0,H_1:r_s\\neq0 H0:rs=0,H1:rs=0
小样本情况,即n<30时,直接查临界值表即可。
注:样本相关系数r必须大于表中的临界值,才能得出显著的结论。
大样本情况下,构造统计量: r s n − 1 服 从 标 准 正 态 N ( 0 , 1 ) r_s\\sqrtn-1服从标准正态N(0,1) rsn1 N(0,1)
H 0 : r s = 0 , H 1 : r s ≠ 0 H_0:r_s=0,H_1:r_s\\neq0 H0:rs=0,H1:rs=0
我们计算检验值 r s n − 1 r_s\\sqrtn-1 rsn1 ,并求出对应的p值与0.05相比即可。

disp((1-normcdf(r_s*sqrt(n-1)))*2)
%normcdf是对标准正态分布进行积分
%双侧检验时p值需要乘以2

matlab中也给出了对应的函数,可以直接输出斯皮尔曼相关系数和p值:

% 直接给出相关系数和p值
[R,P]=corr(Test, 'type' , 'Spearman')
%R为斯皮尔曼相关系数
%P为对应的p值

使用spss标注显著性水平

使用spss标记显著性水平:分析——相关——双变量
勾选皮尔逊、斯皮尔曼。根据问题选择双尾或单尾。勾选标记显著性水平。

皮尔逊相关系数和斯皮尔曼相关系数的比较

1.连续数据,正态分布,线性关系,用皮尔逊相关系数最为恰当,当然斯皮尔曼相关系数也可以,就是效率没有皮尔逊相关系数高。

2.上述任一条件不满足,就用斯皮尔曼相关系数,不能使用皮尔逊相关系数。

3两个定序数据之间也用斯皮尔曼相关系数,不能使用皮尔逊相关系数。

定序数据是指仅仅反应观测对象等级、顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。
例如:优、良、差;
我们可以使用1表示差、2表示良、3表示优,但是请注意,用2除以1得出的2并不代表任何含义。定序数据最重要的意义代表了一组数据中的某种逻辑顺序。

以上是关于斯皮尔曼spearman相关系数的主要内容,如果未能解决你的问题,请参考以下文章

Spearman Rank(斯皮尔曼等级)相关系数及MATLAB实现

数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

斯皮尔曼相关(spearman)相关性分析一文详解+python实例代码

相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)

相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第二部分)

相关系数之皮尔逊pearson相关系数和斯皮尔曼spearman等级相关系数(评价线性关系的相关系数)(第二部分)