前言:
眼前大家对“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相关系数分析需要什么数据库