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 之间的散点图,我们可以看到二者存在较强的相关性,因为散点基本位于一条直线上。
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_a
、pwcorr_c
可以很好地解决上述问题,结果如下所示:
by 连玉君)
*-自编命令 ($x, format(%7.3f)
. pwcorr_a
| 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
$x, star(0.05) format(%7.2f) //比较符合多数期刊的要求
. pwcorr_c
| 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
$x, format(%7.3f)
corsp $x, format(%7.3f) pvalue corsp
Stata 结果如下所示:
$x, format(%7.3f)
. corsp
correlation matrix
Pearson/Spearman
| 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
$x, format(%7.3f) pvalue
. corsp
correlation matrix
Pearson/Spearman
exp tenure
| age grade wage hours ttl
-------------+------------------------------------------------------
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
| exp | 0.123 0.196 0.263 0.229 1.000 0.533
ttl
| 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:
- Pearson 相关系数, 下三角
- Spearman相关系数, 上三角
- 可以根据 p-value 自行添加星号, 标注显著水平
Note: 二者的区别
- 连续变量, 正态分布, 线性关系。二者均可, Pearson 相关系数较好
- 上述任一条件不满足,用 spearman 相关系数,不能用 Pearson 相关系数
扩展阅读
- 连享会:结果输出专题 view browse “https://www.lianxh.cn/blogs/22.html”