R2. 相关系数矩阵

整理人: 崔丽娟(浙江大学)
邮箱: lijuanlj_cui@163.com

在线性回归分析时,我们呈现相关系数矩阵有两个主要目的:其一是呈现变量之间的相关性;其二是线性回归要求解释变量之间不存在严重的多重共线性问题,运用相关系数矩阵可以对此进行初步判断。

global path "D:\LY_stata" 
adopath + "$path\_plus"  //外部命令统一存放于此处

1. 相关矩阵散点图

我们可以借助相关矩阵散点图初步判断变量之间的相关性,在 Stata 中,我们可以使用 graph matrix 命令作相关矩阵散点图。

help graph matrix
sysuse auto, clear
graph matrix price weight length mpg

如下图所示,相关矩阵散点图非常直观地呈现出了变量之间的相关性,我们可以通过交点判断每幅图呈现的是哪两个变量之间的相关性。例如下图中红色框内图形所示,该图表示的是 weight 与 length 之间的散点图,我们可以看到二者存在较强的相关性,因为散点基本位于一条直线上。

图1 相关矩阵散点图

2. Pearson 相关系数

为了验证这种猜想,我们可以使用 Stata 提供的correlate(可简写为corr)命令计算 pearson 相关系数。

help corr
corr weight length

如下结果显示:weight 与 length 之间的相关性达到 0.946,与上所述散点图较强相关性的结果一致。

* Pearson 相关系数结果
corr weight length
(obs=74)

             |   weight   length
-------------+------------------
      weight |   1.0000
      length |   0.9460   1.0000

此外,我们还可以使用 Stata 官方命令 pwcorr 进行分析。

help pwcorr   //pearson correlation

如下结果所示,该方法存在两个缺陷: (1) 小数点后保留了四位; (2) 没有标注显著性水平。这些都不太符合我们在论文中呈现结果的要求或期刊对结果呈现的要求。

  • sig选项

我们可以通过 Stata 提供的选项 sig 进行改进,如下结果所示,grade 与 age 的相关系数为 -0.0330 , 对应的 p 值为 0.1182 ,即二者的相关系数在统计上不显著。但这也不太符合论文中呈现结果的要求,我们还需根据p值将显著性水平转换成相应的星号(*)。

  • star选项

为了加星号(*),我们可以通过 Stata 提供的选项 star 进一步改进,如下结果所示,加了星号后看起来简洁很多,但小数位仍保留了四位,不太符合我们对呈现结果的要求,并且当变量较多时手动整理相关系数矩阵的小数位数不太方便。

. sysuse nlsw88, clear

*-stata 官方命令
. global x "age grade wage hours ttl_exp tenure"

. pwcorr $x  
//缺陷: (1)小数点后两位为宜; (2)没有标注显著水平;

         |      age    grade     wage    hours  ttl_exp   tenure
---------+------------------------------------------------------
     age |   1.0000 
   grade |  -0.0330   1.0000 
    wage |  -0.0362   0.3254   1.0000 
   hours |  -0.0279   0.0871   0.1591   1.0000 
 ttl_exp |   0.1243   0.1982   0.2655   0.2295   1.0000 
  tenure |   0.0737   0.1228   0.1777   0.1608   0.5766   1.0000 

. pwcorr $x, sig   //局限:整理起来很麻烦

         |      age    grade     wage    hours  ttl_exp   tenure
---------+------------------------------------------------------
     age |   1.0000 
   grade |  -0.0330   1.0000 
         |   0.1182
         |
    wage |  -0.0362   0.3254   1.0000 
         |   0.0866   0.0000
         |
   hours |  -0.0279   0.0871   0.1591   1.0000 
         |   0.1874   0.0000   0.0000
         |
 ttl_exp |   0.1243   0.1982   0.2655   0.2295   1.0000 
         |   0.0000   0.0000   0.0000   0.0000
         |
  tenure |   0.0737   0.1228   0.1777   0.1608   0.5766   1.0000 
         |   0.0005   0.0000   0.0000   0.0000   0.0000
         |

.     pwcorr $x, star(0.05) //小数点后两位不易调整;

         |      age    grade     wage    hours  ttl_exp   tenure
---------+------------------------------------------------------
     age |   1.0000 
   grade |  -0.0330   1.0000 
    wage |  -0.0362   0.3254*  1.0000 
   hours |  -0.0279   0.0871*  0.1591*  1.0000 
 ttl_exp |   0.1243*  0.1982*  0.2655*  0.2295*  1.0000 
  tenure |   0.0737*  0.1228*  0.1777*  0.1608*  0.5766*  1.0000 

通过使用自编命令pwcorr_apwcorr_c可以很好地解决上述问题,结果如下所示:

*-自编命令 (by 连玉君)
. pwcorr_a $x, format(%7.3f)

         |  age         grade      wage       hours      ttl_exp  tenure  
---------+----------------------------------------------------------------
   age   |   1.000   
  grade  |  -0.033      1.000   
   wage  |  -0.036*     0.325***   1.000   
  hours  |  -0.028      0.087***   0.159***   1.000   
 ttl_exp |   0.124***   0.198***   0.265***   0.230***   1.000   
  tenure |   0.074***   0.123***   0.178***   0.161***   0.577***   1.000   

. pwcorr_c $x, star(0.05) format(%7.2f) //比较符合多数期刊的要求

         |      age    grade     wage    hours  ttl_exp   tenure
---------+------------------------------------------------------
     age |     1.00 
   grade |    -0.03     1.00 
    wage |    -0.04     0.33*    1.00 
   hours |    -0.03     0.09*    0.16*    1.00 
 ttl_exp |     0.12*    0.20*    0.27*    0.23*    1.00 
  tenure |     0.07*    0.12*    0.18*    0.16*    0.58*    1.00 

3. Spearman 相关系数

我们可以通过 Stata 提供的命令 spearman 呈现 Spearman 相关系数,语法与 person 命令完全一致。

. help spearman //Spearman correlation 

. spearman $x, star(0.05)
(obs=2225)

         |      age    grade     wage    hours  ttl_exp   tenure
---------+------------------------------------------------------
     age |   1.0000 
   grade |  -0.0319   1.0000 
    wage |  -0.0120   0.4533*  1.0000 
   hours |  -0.0373   0.1120*  0.2367*  1.0000 
 ttl_exp |   0.1326*  0.1935*  0.4141*  0.2300*  1.0000 
  tenure |   0.0433*  0.1184*  0.3663*  0.1721*  0.5332*  1.0000  

. help pwcorrs  //外部命令,结合了上述两个命令

4. Spearman 和 Pearson 相关系数矩阵的合并呈现

发表论文时,有些期刊会要求将 Spearman 和 Pearson 相关系数矩阵以上三角和下三角的形式合并呈现。为此,我们可以使用外部命令 corsp 实现。

help corsp
corsp $x, format(%7.3f)
corsp $x, format(%7.3f) pvalue

Stata 结果如下所示:

.   corsp $x, format(%7.3f)

Pearson/Spearman correlation matrix


             |     age    grade     wage    hours  ttl_exp   tenure 
-------------+------------------------------------------------------
         age |   1.000   -0.032   -0.012   -0.037    0.133    0.043 
       grade |  -0.034    1.000    0.453    0.112    0.194    0.118 
        wage |  -0.036    0.326    1.000    0.237    0.414    0.366 
       hours |  -0.026    0.089    0.159    1.000    0.230    0.172 
     ttl_exp |   0.123    0.196    0.263    0.229    1.000    0.533 
      tenure |   0.073    0.121    0.178    0.161    0.576    1.000 

.   corsp $x, format(%7.3f) pvalue

Pearson/Spearman correlation matrix


             |     age    grade     wage    hours  ttl exp   tenure 
-------------+------------------------------------------------------
         age |   1.000   -0.032   -0.012   -0.037    0.133    0.043 
             |   0.000    0.133    0.570    0.079    0.000    0.041 
             |                                                      
       grade |  -0.034    1.000    0.453    0.112    0.194    0.118 
             |   0.106    0.000    0.000    0.000    0.000    0.000 
             |                                                      
        wage |  -0.036    0.326    1.000    0.237    0.414    0.366 
             |   0.088    0.000    0.000    0.000    0.000    0.000 
             |                                                      
       hours |  -0.026    0.089    0.159    1.000    0.230    0.172 
             |   0.224    0.000    0.000    0.000    0.000    0.000 
             |                                                      
     ttl exp |   0.123    0.196    0.263    0.229    1.000    0.533 
             |   0.000    0.000    0.000    0.000    0.000    0.000 
             |                                                      
      tenure |   0.073    0.121    0.178    0.161    0.576    1.000 
             |   0.001    0.000    0.000    0.000    0.000    0.000 
             |   
  • Note:

      1. Pearson 相关系数, 下三角
      1. Spearman相关系数, 上三角
      1. 可以根据 p-value 自行添加星号, 标注显著水平
  • Note: 二者的区别

      1. 连续变量, 正态分布, 线性关系。二者均可, Pearson 相关系数较好
      1. 上述任一条件不满足,用 spearman 相关系数,不能用 Pearson 相关系数
  • 扩展阅读

    • 连享会:结果输出专题 view browse “https://www.lianxh.cn/blogs/22.html”