相关性检验
使用皮尔逊相关系数和斯皮尔曼相关系数来衡量两个变量间相关性的大小

(1)描述性统计

  • 所谓描述性统计,就是对已有的数据的多个特征(最小元素,最大元素,均值,中位数等)进行计算。

1.使用Matlab进行计算

  • min求最小值
  • max求最大值
  • mean求平均值
  • median求中位数的值
  • skewness求偏度
  • kurtosis求峰度
  • std求标准差

2.使用Excel计算

3.使用Spss计算

(2)正态分布的检验

0.偏度与峰度

  • 偏度:是统计数据分布偏斜方向和程度的度量,是统计数据分布非对称程度的数字特征。定义上偏度是样本的三阶标准化矩。
    S = E [ ( X − μ σ ) 3 ] S=E[(\dfrac{X-\mu}{\sigma})^3] S=E[(σXμ)3]

注意正态分布的偏度为0

  • 峰度:表征概率密度分布曲线在平均值处峰值高低的特征数。直观看来,峰度反映了峰部的尖度。定义上偏度是样本的四阶标准化矩。
    K = E [ ( X − μ σ ) 4 ] K=E[(\dfrac{X-\mu}{\sigma})^4] K=E[(σXμ)4]

注意正态分布的峰度为3

1. JB 检验(大样本n>30)

  • step 1:进行假设检验 H 0 : H_0: H0:该变量服从正态分布, H 1 : H_1: H1:该变量不服从正态分布。
  • step 2:假设对一个随机变量 X i X_i Xi ,其峰度为 K K K ,其偏度为 S S S,则构造检验统计量 J B = n 6 [ S 2 + ( K − 3 ) 2 4 ] ∼ χ 2 ( 2 ) JB=\dfrac{n}{6}[S^2+\dfrac{(K-3)^2}{4}]\sim \chi^2(2) JB=6n[S2+4(K3)2]χ2(2)服从自由度为2的卡方分布。
  • step 3: 代入数据计算出 J B ∗ JB^* JB,通过 J B ∗ JB^* JB计算出对应的 p p p 值。
  • step 4:通过 p p p 值检验得出结论。(一般取 p p p 0.05 0.05 0.05 )。
  • matlab中:[h,p]=jbtest(x,alpha), x x x 表示要检测的变量,只能取向量,alpha表示显著性水平,h=1表示拒绝原假设,h=0表示接受原假设,p表示返回的p值。

2. 夏皮洛-威尔克检验

  • step 1:进行假设检验 H 0 : H_0: H0:该变量服从正态分布, H 1 : H_1: H1:该变量不服从正态分布。
  • step 2:使用SPSS计算出相应的 p p p 值。
  • step 3:通过相应的 p p p 值进行判断。

(3)皮尔逊相关系数

1.总体皮尔逊Person相关系数

ρ X Y = C o v ( X , Y ) σ x σ y \rho_{XY}=\dfrac{Cov(X,Y)}{\sigma_x\sigma_y} ρXY=σxσyCov(X,Y)
这里 σ x = ∑ i = 1 n ( X i − E ( X ) ) 2 n \sigma_x=\sqrt{\dfrac{\displaystyle\sum_{i=1}^{n}(X_i-E(X))^2}{n}} σx=ni=1n(XiE(X))2 σ y = ∑ i = 1 n ( Y i − E ( Y ) ) 2 n \sigma_y=\sqrt{\dfrac{\displaystyle\sum_{i=1}^{n}(Y_i-E(Y))^2}{n}} σy=ni=1n(YiE(Y))2 分别是 X X X总体与 Y Y Y总体的方差。
 
C o v ( X , Y ) = ∑ i = 1 n ( X i − E ( X ) ) ( Y i − E ( Y ) ) n Cov(X,Y)=\dfrac{\displaystyle\sum_{i=1}^{n}(X_i-E(X))(Y_i-E(Y))}{n} Cov(X,Y)=ni=1n(XiE(X))(YiE(Y))为总体的协方差。

2.样本皮尔逊Person相关系数

r X Y = C o v ( X , Y ) S x S y r_{XY}=\dfrac{Cov(X,Y)}{S_xS_y} rXY=SxSyCov(X,Y)
这里 S x = ∑ i = 1 n ( X i − X ‾ ) 2 n − 1 S_x=\sqrt{\dfrac{\displaystyle\sum_{i=1}^{n}(X_i-\overline{X})^2}{n-1}} Sx=n1i=1n(XiX)2 S y = ∑ i = 1 n ( Y i − Y ‾ ) 2 n − 1 S_y=\sqrt{\dfrac{\displaystyle\sum_{i=1}^{n}(Y_i-\overline{Y})^2}{n-1}} Sy=n1i=1n(YiY)2 分别是 X X X样本与 Y Y Y样本的方差。
 
C o v ( X , Y ) = ∑ i = 1 n ( X i − X ‾ ) ( Y i − Y ‾ ) n − 1 Cov(X,Y)=\dfrac{\displaystyle\sum_{i=1}^{n}(X_i-\overline{X})(Y_i-\overline{Y})}{n-1} Cov(X,Y)=n1i=1n(XiX)(YiY)为样本的协方差。

3.使用皮尔逊Person相关系数的注意事项

  • 先要判断变量是否大致满足线性关系,可以采用画散点图的方式。当两个变量本来就大致满足线性的关系时,皮尔逊相关系数的绝对值越大,两个变量的相关性越强,但是如果本来就不满足线性关系,就算皮尔逊系数很大也没有意义

上面的几个图的皮尔逊相关系数都为0.816,但是明显小样本对最终结果产生巨大的影响。

  • 如果计算出皮尔逊系数为0,不代表两个变量之间不存在关系。比如下面的温度-冰糕之间必然存在相关性,但是不是线性关系。
  • 可以使用 SPSS 作出散点图先判断是否具有一定的线性关系。

4.使用matlab计算person系数

① ① 使用matlab计算
corrcoef

  • R=corrcoef(A):返回 A A A的相关系数矩阵,其中 A A A的列表示随机变量(指标,例如身高、体重等),行表示观测值(样本,例如每一个人的身高、体重等)。
  • R=corrcoef(A,B):返回两个变量 A , B A,B AB向量之间的相关系数。

② ② 使用Excel计算与美化相关系数表

  • 在数据分析中选取相关系数的计算。
  • 使用色阶图进行美化

(3)对皮尔逊相关系数进行假设检验

1.可以进行假设检验的前提

  • 实验数据通常假设是成对的来自于正态分布的总体。(一般情况下很难满足)。
  • 实验数据之间的差距不能太大,异常值对检验结果影响很大。
  • 每个样本之间是独立抽样的。

2.进行正态分布检验

3.流程

⭐️目的是验证计算得出的皮尔逊相关系数是否与0有显著的差异。

  • step 1 提出原假设与备择假设, H 0 : r = 0 , H 1 : r ≠ 0 H_0:r=0,H_1:r\not=0 H0:r=0,H1:r=0

  • step 2 构造检验统计量
    r n − 2 1 − r 2 ∼ t ( n − 2 ) r\sqrt{\dfrac{n-2}{1-r^2}}\sim t(n-2) r1r2n2 t(n2)服从自由度为2的 t t t分布

  • step 3 计算出检验值(代入数据)得到 t ∗ t^* t

  • step 4 使用 p p p 检验

    • 计算 p p p
      p = 2 × ( 1 − ∫ − ∞ t ∗ t ( x ) d x ) p=2\times(1-\int_{-\infty}^{t^*}t(x)dx) p=2×(1tt(x)dx)
  • step 5 结果说明

    • p < 0.01 p<0.01 p<0.01:在 99 % 99\% 99% 的置信水平上拒绝原假设。
    • 0.01 < p < 0.05 0.01<p<0.05 0.01<p<0.05:在 99 % 99\% 99% 的置信水平上无法拒绝原假设,但在 95 % 95\% 95% 的水平上可以拒绝原假设。
    • 0.05 < p < 0.1 0.05<p<0.1 0.05<p<0.1:在 95 % 95\% 95% 的置信水平上无法拒绝原假设,但在 90 % 90\% 90% 的水平上可以拒绝原假设。
  • 显著性标记: a , a ∗ , a ∗ ∗ a,a^*,a^{**} a,a,a,** 表示在0.01级别(双尾)的相关性显著,* 表示在0.05级别(双尾)的相关性显著。

  • matlab相关:

    • tpdf(x,n) x x x取一系列连续的值,可以做出自由度为 n n n t t t分布图像。
    • tcdf(t,n):是自由度为 n n n t t t分布的分布函数。 t t t取一个固定的值 t c t_c tc,可以计算出 T ≤ t c T\le t_c Ttc的概率。
    • tinv(p,n):自由度为 n n n t t t分布下对应概率为 p p p的点的值。

(4)斯皮尔曼(sperman)相关系数

1. 斯皮尔曼相关系数的第一种定义

  • X X X, Y Y Y 为两组数据,其斯皮尔曼(等级)相关系数:
    r s = 1 − 6 ∑ i = 1 n d i 2 n ( n 2 − 1 ) r_s=1-\dfrac{6\displaystyle\sum_{i=1}^{n}d_i^2}{n(n^2-1)} rs=1n(n21)6i=1ndi2 d i d_i di X i X_i Xi Y i Y_i Yi 之间的等级差。( − 1 ≤ r s ≤ 1 -1 \le r_s \le 1 1rs1)。
  • 等级:将所在列的元素排序后,这个数所在的位置。
  • 有数值相同,将它们所在位置取算术平均。例如对下面一列数 90 , 84 , 76 , 71 , 71 , 71 , 69 , 68 , 66 , 64 90,84,76,71,71,71,69,68,66,64 90,84,76,71,71,71,69,68,66,64 排出的顺序为 1 , 2 , 3 , 5 , 5 , 5 , 7 , 8 , 9 , 10 1,2,3,5,5,5,7,8,9,10 1,2,3,5,5,5,7,8,9,10 计算方式为 4 + 5 + 6 3 \dfrac{4+5+6}{3} 34+5+6

2. 斯皮尔曼相关系数的第二种定义

  • 定义为等级之间的皮尔逊相关系数
  • 按这种定义计算得到的斯皮尔曼相关系数一般与第一种定义下计算出的斯皮尔曼相关系数不同。

3.使用matlab计算斯皮尔曼相关系数

  • corr(X,Y,'type','Spearman'):其中 X X X Y Y Y必须是列向量。
  • corr(X,'type','Spearman'):计算矩阵 X X X各列之间的斯皮尔曼相关系数。

(5)斯皮尔曼相关系数的假设检验

H 0 : r s = 0 , H 1 : r s ≠ 0 H_0:r_s=0,H_1:r_s\not=0 H0:rs=0,H1:rs=0

1.小样本情况下 ( n ≤ 30 ) (n\le30) (n30)

直接在临界表中查询即可。

2.大样本情况下 ( n ≥ 30 ) (n\ge30) (n30)

  • 统计量 r s n − 1 ∼ N ( 0 , 1 ) r_s\sqrt{n-1}\sim N(0,1) rsn1 N(0,1)
     
  • 计算检验值 r s n − 1 r_s\sqrt{n-1} rsn1
     
  • 计算对应的 p p p值,再进行判断。

(6)person与spearman对比

  • 连续数据,正态分布,线性关系,最好使用 person。
  • 除此之外都使用 spearman。
  • 两个定序数据之间也只能用spearman。
    定序数据:仅仅反映观测对象的等级顺序关系的数据。(例如:优,良,差等)。

现在已经转移到知乎,之后的文章会在知乎更新。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐