数学建模中常用的两种相关系数


在数学建模中我们常常需要判断 两个变量或者多个变量之间的相关性的大小,这时候我们就需要 相关系数来衡量 其相关性的大小,而我今天介绍的是两种我们数学建模中最常用的相关系数—— 皮尔逊(Person)相关系数和斯皮尔曼(Spearman)相关系数

皮尔逊(Person)相关系数

皮尔逊相关系数

定义:如果有两组数据 X : { X 1 , X 2 , . . . , X n } X:\left \{ X_{1},X_{2},...,X_{n} \right \} X:{X1,X2,...,Xn} Y : { Y 1 , Y 2 , . . . , Y n } Y:\left \{ Y_{1},Y_{2},...,Y_{n} \right \} Y:{Y1,Y2,...,Yn}(一般调查得到的数据叫样本数据)
样本均值 : X ˉ = ∑ i = 1 n X i n 样本均值:\bar{X}=\frac{\sum_{i=1}^{n}X_{i}}{n} 样本均值:Xˉ=ni=1nXi
样本协方差: C o v ( X , Y ) = ∑ i = 1 n ( X i − X ˉ ) ( Y i − Y ˉ ) n − 1 样本协方差:Cov(X,Y)=\frac{\sum_{i=1}^{n}(X_{i}-\bar{X})(Y_{i}-\bar{Y})}{n-1} 样本协方差:Cov(X,Y)=n1i=1n(XiXˉ)(YiYˉ)
样本 P e r s o n 相关系数: r X Y = C o v ( X , Y ) S X S Y 样本Person相关系数:r_{XY}=\frac{Cov(X,Y)}{S_{X}S_{Y}} 样本Person相关系数:rXY=SXSYCov(X,Y)
S X S_{X} SX X X X的样本标准差, S X = ∑ i = 1 n ( X i − X ˉ ) 2 n − 1 S_{X}=\sqrt{\frac{\sum_{i=1}^{n}\left ( X_{i}-\bar{X} \right )^{2}}{n-1}} SX=n1i=1n(XiXˉ)2 ,同理, S Y = ∑ i = 1 n ( Y i − Y ˉ ) 2 n − 1 S_{Y}=\sqrt{\frac{\sum_{i=1}^{n}\left ( Y_{i}-\bar{Y} \right )^{2}}{n-1}} SY=n1i=1n(YiYˉ)2
皮尔逊相关系数可以看成去除两个变量的量纲影响,即将X和Y标准化后的协方差

皮尔逊相关系数的计算

在数学建模中我们常用到编程计算工具就是MATLAB了。虽然MATLAB功能强大,但是代码却非常复杂,尤其是在标注注释非常少情况下更是堪比天书。所以,如果你编程的基础非常好,那我建议你用MATLAB计算相关数据;如果你编程基础不太好,那我建议用相关的统计软件来计算,例如我们计算相关系数用到的SPSS软件

MATLAB计算皮尔逊相关系数

corrcoef函数:correlation coefficient 相关系数
R=corrcoef(A)
返回A的相关系数矩阵,其中A的列表示各项指标,行表示样本数据。
R=corrcoef(A,B)
返回两个随机变量A和B(两个向量)之间的相关系数。

clear;clc;
X=randi(10,1,6);
Y=randi(10,1,6); %生成两个1-10,1*6的随机向量
R=corrcoef(X,Y); %计算相关系数
对皮尔逊相关系数进行假设检验

通过对皮尔逊相关系数进行假设检验可以判断其显著性的大小,而一般常用到的是p值判断法。没有学过假设检验的小伙伴,可以去学习一下概率论与数理统计,这里我就不过多解释了,直接看如何用MATLAB检验显著性大小。
[R,P]=corrcoef(X,Y)
R返回相关系数,P返回对应其相关系数的p值

clear;clc;
X=randi(10,1,6);
Y=randi(10,1,6);
[R,P]=corrcoef(X,Y); %R是相关系数,P是p值

若p<0.01,说明在99%的置信水平上两变量具有显著的相关性
若p<0.05,说明在95%的置信水平上两变量具有显著的相关性
若p<0.10,说明在90%的置信水平上两变量具有显著的相关性
置信水平/可靠度:置信水平表示区间估计的把握程度)

斯皮尔曼(Spearman)相关系数

斯皮尔曼相关系数

定义: X X X Y Y Y为两组数据,其斯皮尔曼(等级)相关系数:
r s = 1 − 6 ∑ i = 1 n d i 2 n ∗ ( n 2 − 1 ) r_{s}=1-\frac{6\sum_{i=1}^{n}d_{i}^{2}}{n\ast(n^{2}-1)} rs=1n(n21)6i=1ndi2 − 1 ≤ r s ≤ 1 -1\leq r_{s}\leq 1 1rs1
其中, d i d_{i} di X i X_{i} Xi Y i Y_{i} Yi之间的等级差
(一个数的等级,是将它所在的一列数据按照从小到大排列后,这个数所在的位置)

XYX的等级Y的等级等级差等级差的平方
11015.54.520.25
31035.52.56.25
6542.51.52.25
1095.541.52.25
1025.514.520.25
2522.50.50.25
注意:如果有的数值相同,则他们所在的位置取算数平均值。

根据公式 r s = 1 − 6 ∑ i = 1 n d i 2 n ∗ ( n 2 − 1 ) r_{s}=1-\frac{6\sum_{i=1}^{n}d_{i}^{2}}{n\ast(n^{2}-1)} rs=1n(n21)6i=1ndi2可得:

X X X Y Y Y的斯皮尔曼相关系数为:
r s = 1 − 6 × ( 20.25 + 6.25 + 2.25 + 2.25 + 20.25 + 0.25 ) 6 × 35 r_{s}=1-\frac{6\times (20.25+6.25+2.25+2.25+20.25+0.25)}{6\times 35} rs=16×356×(20.25+6.25+2.25+2.25+20.25+0.25)

另一种斯皮尔曼相关系数的定义

斯皮尔曼相关系数还被定义为等级之间的皮尔逊相关系数

如何计算斯皮尔曼相关系数
MATLAB计算斯皮尔曼相关系数
  1. corr(X,Y,‘type’,‘Spearman’)
    计算X向量和Y向量之间的斯皮尔曼相关系数,( X,Y一定是列向量 )。
  2. corr(X,‘type’,‘Spearman’)
    计算X矩阵各列之间的斯皮尔曼相关系数。
X=[1,3,6,10,10,2]'; %一定是列向量,一撇'表示矩阵转置
y=[10,10,5,9,2,5]';
coff=corr(X,Y,'type','Spearman');

coff =
   -0.5374  %MATLAB会与理论计算有微小的误差
   %原因在于MATLAB没有考虑数值相同时,等级取算数平均值
SPSS计算斯皮尔曼相关系数
  1. 导入或者输入相关数据,如下是如何导入Excel表中数据在这里插入图片描述
  2. 找到分析>> 相关>>双变量(也可以计算皮尔逊相关系数)在这里插入图片描述
对斯皮尔曼相关系数进行假设检验
%直接给出相关系数和p值
[R,P]=corr(X,'type','Spearman');
%注意这里X、Y也必须是列向量

两种相关系数的使用条件

如何选择使用哪种相关系数:

  1. 连续数据,正态分布线性关系 ,用person相关系数最为合适,虽然也能使用spearman相关系数,但效果没person相关系数好。
  2. 如何上述的条件任一不满足,则选用spearman相关系数,不可以用person相关系数。
  3. 两个定序数据之间只能用spearman相关系数,不能用person相关系数。

定序数据:反映对象等级、顺序关系的数据,例如:优、良、差。

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值