MATLAB中数据相关性所求相关系数的有关内容(3)

斯皮尔曼spearman相关系数

1、第一中斯皮尔曼spearman相关系数定义:

X和Y为两组数据,其斯皮尔曼(等级)相关系数:

r_{s} = 1- \frac{6\sum_{i=1}^{n}{d^2_{i}}}{n(n^2-1)}(其中,d_{i}X_{i}Y_{i}之间的等级差)

(一个数的等级,就是将它所在的一列数按照从小到大排序后,这个数所在的位置)

可以证明:r_{s}位于-1和1之间。

MATLAB中数据相关性所求相关系数的有关内容(3)_第1张图片

(注意:如果有的数值相同,则将它们所在的位置取算术平均。)

根据公式:r_{s} = 1- \frac{6\sum_{i=1}^{n}{d^2_{i}}}{n(n^2-1)}可得:

 

X和Y的斯皮尔曼相关系数:r_{s} = 1-\frac{6\times{(1+0.25+0.25+1)}}{5\times(24)} = 0.875

2、另一种斯皮尔曼spearman相关系数的定义
斯皮尔曼相关系数被定义成等级之间的皮尔逊相关系数。

还以这张图为例:

MATLAB中数据相关性所求相关系数的有关内容(3)_第2张图片

matlab中代码为:

%% MATLAB求解皮尔逊相关系数
RX = [2 5 3 4 1]
RY = [1 4.5 3 4.5 2]
R = corrcoef(RX,RY)
x = [ 3 8 4 7 2]'      %一定要是列向量哦,一撇'表示求转置
Y =[ 5 10 9 10 6]'
coeff = corr(x , Y , 'type' , 'Spearman ' )

 两种用法:(1) corr(X , Y , 'type' , 'Spearman')(这里的X和Y必须是列向量) (2) corr(X , 'type', 'Spearman')

斯皮尔曼相关系数的假设检验(分为小样本和大样本两种情况)
小样本情况:即n ≤30时,直接查临界值表即可。

(表A.7 斯皮尔曼相关的临界值 - 百度文库)MATLAB中数据相关性所求相关系数的有关内容(3)_第3张图片
 

(这里的H_{0}: r_{s} = 0 ; H_{1}: r_{s} \neq 0)

 大样本情况下,统计量r_{s}\sqrt{n-1}\sim N(0,1)

H_{0}: r_{s} = 0 ; H_{1}: r_{s} \neq 0

我们计算检验值r_{s}\sqrt{n-1},并求出对应的p值与0.05相比即可。

斯皮尔曼相关系数和皮尔逊相关系数选择: 

 1、连续数据,正态分布,线性关系,用pearson相关系数是最恰当,当然用spearman相关系数也可以,就是效率没有pearson相关系数高。

2、上述任一条件不满足,就用spearman相关系数,不能用pearson相关系数。

3、两个定序数据之间也用spearman相关系数,不能用pearson相关系数。

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

注:斯皮尔曼相关系数的适用条件比皮尔逊相关系数要广,只要数据满足单调关系。(例如线性函数、指数函数、对数函数等)就能够使用。

你可能感兴趣的:(记录我的学习过程,matlab,开发语言,矩阵)