龙空技术网

5(3)斯皮尔曼相关系数

语音刺客 151

前言:

眼前大家对“matlab求相关系数”大致比较关注,兄弟们都需要知道一些“matlab求相关系数”的相关文章。那么小编在网上收集了一些关于“matlab求相关系数””的相关文章,希望我们能喜欢,看官们一起来学习一下吧!

1、定义

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

其中为X和Y的等级差,n为样本数量。

(一个数的等级,就是将它所在的那一列的数据从小到大排序后,这个数所在的位置,可以证明,是位于-1到1之间的)

X

Y

X的等级

Y的等级

等级差

等级差的平方和

3

5

2

1

1

1

8

10

5

4.5

0.5

0.25

4

8

3

3

0

0

7

10

4

4.5

-0.5

0.25

2

6

1

2

-1

1

如果有相同的数值,则将他们所在的位置取算术平均。

例如上表中的Y列数据,从小到大排列为5,6,8,10,10,其中有两个10,并且位置为4和5,取平均之后就是数据的等级就是4.5。

所以上表中X和Y的相关系数

2、Matlab的两种计算

(1)corr(X,Y,'type','Spearman')

这里的X和Y必须是里列向量,用来计算X和Y两列数据之间的斯皮尔曼相关系数

(2)corr(X,'type','Spearman')

这里的X是一个矩阵,计算一个矩阵各列数据两两之间的斯皮尔曼相关系数。

3、斯皮尔曼相关系数的检验3.1小样本

小样本n<30时间,斯皮尔曼相关系数检验,查阅斯皮尔曼等级相关的临界值表来获得临界值,然后拿这个相关系数于临界值作比较,<就是在接受域,>就是在拒绝域

3.2大样本

大样本情况下,统计量

事实上,在原假设处理的条件下,才服从于正态分布

我们计算检验值,然后再计算p值,因为这里是双侧检验,所以需要*2,与0.05作比较,也就代表默认置信水平为95%。

例如,假设样本数量为20,并且计算出来的其中一个斯皮尔曼相关系数为0.0301,此时检验值,P值 = 1-2*0.731126 = 0.4647,然后0.4647 > 0.05,因此我们无法拒绝原假设,即和0没有显著差异

 disp(1-normcdf(0.7311) *2)  % 0.4647

当然能我们也可以直接使用matlab来计算斯皮尔曼相关系数和P值,

 [R_per_column,P_per_column] = corr(Test,'type','Spearman'); % R为相关系数,P为p值
4、斯皮尔曼相关系数和皮尔逊相关系数的选择:连续数据、正态分布、线性关系,用person相关系数最为恰当,当然用spearman相关系数也可以,就是效率没有pearson相关系数高。上述任一条件u满足,就使用spearman相关系数,不能用person相关系数两个定序数据之间也用spearman相关系数,不能用peron相关系数定序数据是指反映观测对象的等级和顺序关系的数据,是由定序尺度计量形成的,表现为类别,可以进行排序,属于品质数据。例如:优、良、差我们可以用1表示优秀、2表示良好、3表示差,但请注意,2/1 = 2,这个2并不能代表任何含义。定序数据最重要的意义是代表一组数据之间的某种逻辑顺序。

因为正态分布很难满足,因此我们经常使用spearman相关系数

标签: #matlab求相关系数 #matlab求相关系数代码 #matlab求相关系数r #matlab相关系数分析需要什么数据 #matlab相关系数分析需要什么数据库