[小白]数学建模中常用的两种相关系数

文章目录

  • 皮尔逊(Person)相关系数
        • 皮尔逊相关系数
        • 皮尔逊相关系数的计算
            • MATLAB计算皮尔逊相关系数
        • 对皮尔逊相关系数进行假设检验
  • 斯皮尔曼(Spearman)相关系数
        • 斯皮尔曼相关系数
        • 另一种斯皮尔曼相关系数的定义
        • 如何计算斯皮尔曼相关系数
            • MATLAB计算斯皮尔曼相关系数
            • SPSS计算斯皮尔曼相关系数
        • 对斯皮尔曼相关系数进行假设检验
  • 两种相关系数的使用条件

在数学建模中我们常常需要判断 两个变量或者多个变量之间的相关性的大小,这时候我们就需要 相关系数来衡量 其相关性的大小,而我今天介绍的是两种我们数学建模中最常用的相关系数—— 皮尔逊(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}} PersonrXY=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之间的等级差
(一个数的等级,是将它所在的一列数据按照从小到大排列后,这个数所在的位置)

X Y X的等级 Y的等级 等级差 等级差的平方
1 10 1 5.5 4.5 20.25
3 10 3 5.5 2.5 6.25
6 5 4 2.5 1.5 2.25
10 9 5.5 4 1.5 2.25
10 2 5.5 1 4.5 20.25
2 5 2 2.5 0.5 0.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表中数据[小白]数学建模中常用的两种相关系数_第1张图片
  2. 找到分析>> 相关>>双变量(也可以计算皮尔逊相关系数)[小白]数学建模中常用的两种相关系数_第2张图片

对斯皮尔曼相关系数进行假设检验

%直接给出相关系数和p值
[R,P]=corr(X,'type','Spearman');
%注意这里X、Y也必须是列向量

两种相关系数的使用条件

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

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

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

你可能感兴趣的:([小白]数学建模中常用的两种相关系数)