文章目录
一、斯皮尔曼spearman相关系数
1.定义(1)
X
X
X和
Y
Y
Y为两组数据,其斯皮尔曼(等级)相关系数:其中,
d
i
d_i
di为
X
i
X_i
Xi和
Y
i
Y_i
Yi之间的等级差。
-
一个数的等级,就是将它所在的一列按照从小到大排序后,这个数所在的位置。(如果有的数值相同,则将它们所在的位置取算术平均。)
-
可以证明: r s r_s rs位于-1和1之间的
2.定义(2)
斯皮尔曼相关系数被定义成等级之间的皮尔逊相关系数
- Matlab求解皮尔逊相关系数
例如:
RX = [2 5 3 6 9]
RY = [6 2 5 8 7]
R = corrcoef(RX,RY)
% corrcoef函数可以用于求解斯皮尔曼相关系数
3.Matlab中计算斯皮尔曼相关系数
- corr(X , Y , ‘type’ , ’ Spearman’)
这里的X和Y必须是列向量 - corr(X , ‘type’ , ‘Spearman’)
这是计算X矩阵各列之间的斯皮尔曼相关系数
4.斯皮尔曼相关系数的假设检验
小样本情况,即 n ≤ 30 n≤30 n≤30
- 查看斯皮尔曼等级相关的临界值表格
- 样本相关系数 r r r必须大于等于表格中的临界值,才能得出显著的结论
大样本情况,即 n > 30 n>30 n>30
- 设置确定原假设 H 0 : r s = 0 H_0:r_s=0 H0:rs=0和备择假设 H 1 : r s ≠ 0 H_1:r_s≠0 H1:rs=0
- 在原假设成立的条件下,根据需要检测的量构造一个分统计量 r s √ ( n − 1 ) r_s√(n-1) rs√(n−1)
- 求出对应的p值,并与0.05相比即可
双侧检验时,p值乘以2;
假如p>0.05,则无法拒绝原假设;
假如p≤0.05,则拒绝原假设。
Matlab代码:
disp((1-normcdf(检验值)*2)
5.直接计算斯皮尔曼相关系数和p值
[R , P] = corr(Test, 'type' , 'Spearman')
R输出的是Test矩阵各列之间的斯皮尔曼相关系数
P输出的是其对应的p值
6.标注斯皮尔曼相关系数的相关性显著水平
运用SPSS:
分析 — 相关 — 双变量 — 勾选斯皮尔曼,标记显著性相关性 — 确定
二、斯皮尔曼相关系数和皮尔逊相关系数的比较与选择
- 连续数据,正态分布,线性关系,用pearson相关系数最恰当,当然spearman也可以,但是效率略微低下。
- pearson相关系数的使用条件不满足的条件下,使用spearman相关系数。
备注:条件有连续数据,正态分布,线性关系 - 两个定序数据之间也用spearman相关系数,不能用pearson相关系数。
定序数据是指仅仅反应观测对象等级、顺序关系的数据。例如:优、良、差/甲、乙、丙、丁