第 20 章 相关
20.1 背景介绍
两个变量如果相关 (associated),那么它们二者中的一个的分布是依赖另一个的分布的 the distribution of one is dependent on the value taken by the other and vice-versa。统计学中如何描述两个变量之间的相关关系取决于两个变量的性质 (连续型还是分类型,continuous or categorical variables)。本章讨论不同情形下两个变量相关关系及统计学上的假设检验方法。
两个变量之间的关系除了可以用相关来描述,还可以利用回归的手段来分析。但是回归分析,和本章讨论的相关性分析的本质区别在于,相关分析着重讨论两个变量的联合分布(joint distribution),而回归分析则是要探索一个变量在另一个变量的条件下的条件分布(conditional distribution)。因此,相关分析从某种意义上来说是对称的 (X 与 Y 的相关性等同于 Y 与 X 的相关性),回归分析则不然 (Y 对 X 的回归不等同与 X 对 Y 的回归)。
另外一个要点是,相关分析绝不讨论因果关系。
20.2 两个连续型变量的相关分析
20.2.1 相关系数的定义
在概率论 (Section 8.2) 中也已经介绍过相关系数 \(\rho\) 的定义:
\[ \begin{equation} \rho=\frac{E[(X-E(X))(Y-E(Y))]}{\sqrt{E(X-E(X))^2E(Y-E(Y))^2}} = \frac{\ text{Cov}(X,Y)}{\sqrt{V(X)V(Y)}} \end{equation} \tag{20.1} \]
用\(\textbf{x}=\{x_1, x_2, \cdots, x_n \}\) 和\(\textbf{y}=\{ y_1, y_2, \cdots, y_n \}\) 表示对\(n\) 个随机研究对象测量的两个变量。那么这两个变量的相关关系 \(r\) 的计算式为:
\[ \begin{equation} r = \frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum(x_i-\bar{x})^2\sum(y_i-\bar {y})^2}} = \frac{S_{xy}}{S_xS_y} \end{equation} \tag{20.2} \]
\(S_{xy}\) 代表样本数据的协方差(Section 8.1),\(S_x\) 是变量\(X\) 的样本标准差(有时会记为\(\hat\rho_x\)),$S_y $ 是变量\(Y\) 的样本标准差。 \(r\) 被命名为相关系数 \(\rho\) 的 Pearson 积矩估计 (Pearson Product-Moment estimator)。
20.2.2 相关系数的性质
上图 20.1 描述了9种不同设定时的相关系数 \(r\)。 \(r\) 的主要性质可以总结为:
- \(r\) 的取值范围是 \(-1\sim1\text{, i.e. } -1\leqslant r \leqslant 1\);
- \(r>0\) 时,二者呈正相关, \(r<0\) 时,二者呈负相关;
- 当且仅当两个变量的散点图呈现图20.1 中A,B 显示的直线时才有\(|r|=1\),然而直线的坡度却与相关系数无关;
- 如果两个变量之间没有直线的 linear相关关系,那么相关系数 \(r\) 会接近于零;
- 求 X 和 Y 的相关系数,等同于求 Y 和 X 的相关系数 (与回归不同);
- 相关系数\(r\) 没有单位,并且位置不会发生改变(location invariant),如果两个变量乘以或者除以,加上或者减去任意常数,不会改变相关系数的大小(与回归不同)。
图20.1 中F 显示的相关关系可以看出,\(r\) 受异常值的影响很大,如果将右上角的异常值从数据中去除掉的话,该图中的相关系数会变小到几乎为零。 G 和 H 则表示非线性相关时,Pearson 相关系数不适用。 I 则告诉我们如果不熟悉数据本身的分布的话,如果只看总体的相关是多么的危险 (总体为负相关,但是在不同的分层数据中却是呈正相关的)。
20.2.3 对相关系数是否为零进行假设检验
在线性回归 (Section 24.6) 中会讨论和证明 Pearson 相关系数和统计量 \(t\) 之间的关系,该公式也被用于检验相关系数是否为零:
\[ \begin{equation} T=r\sqrt{\frac{n-2}{1-r^2}} \sim t_{n-2} \end{equation} \tag{20.3} \]
20.2.4 相关系数的 \(95\%\) 置信区间
如果要计算相关系数 \(r\) 的置信区间,我们需要知道两个变量 \(X,Y\) 之间的联合分布 (joint distribution)。 \(X,Y\) 如果服从二元正态分布,可以利用 Fisher’s Z-transformation 计算相关系数的置信区间。图 20.2 完美展示了两个服从二元正态分布的三维立体概率密度分布图。可以用鼠标拖动下面那个三维图,就能理解什么叫做二元正态分布。就是无论是在 X 轴看 Y,还是在 Y 轴看 X,每一个切面都呈现正态分布。因此二元正态分布的概率密度方程绘制出来是成为一个完美的钟罩形状。很美吧!
\[ X|Y \sim N(\mu_x, \sigma_x^2) \text{ AND } Y|X \sim N(\mu_y, \sigma_y^2) \]
如果\(\rho\neq0\),相关系数的样本分布虽然不是正态分布,但是只要\(X,Y\) 服从上面的图形显示的二元正态分布,就可以利用Fisher’s Z-transformation 公式计算统计量$ Z_r$:
\[ \begin{equation} Z_r = \frac{1}{2}\text{log}_e(\frac{1+r}{1-r}) = \text{tanh}^{-1} (r) \end{equation} \tag{20.4} \]
\(Z_r\),近似服从正态分布:
\[ \begin{equation} Z_r \sim N(\frac{1}{2}\text{log}_e(\frac{1+\rho}{1-\rho}), \frac{1}{n-3}) \end{equation} \tag{20.5} \]
利用这个性质,我们可以计算 \(Z_\rho\) 的置信区间,然后再通过逆运算转换之后获得 \(\rho\) 的置信区间:
\[ \begin{equation} \rho = \frac{exp(2Z_\rho)-1}{exp(2Z_\rho)+1} = \text{tanh}(Z_\rho) \end{equation} \tag{20.6} \]
20.2.5 比较两个相关系数是否相等
假设需要比较两个相关系数,可以继续使用 Fisher’s Z-transformation 计算相关系数之差的统计量,它服从标准正态分布 \(N(0,1)\)。很少会碰到比较两个相关系数,但是偶尔碰到的实例有这样的:要比较男性和女性之间,食盐摄入量和血压的相关关系是否相同。
\[ \text{Test statistics} = \frac{Z_{r_2}-Z_{r_1}}{\sqrt{\frac{1}{n_2-3}+\frac{1}{n_1-3}}} \sim N (0,1) \]
在实际应用中,其实相关系数的比较意义并不是很大。更常见的是使用回归分析的手段比较两个人群 (男性女性) 中血压和食盐摄入量的回归系数 (即,性别对实验和血压的关系是否产生了交互作用,interaction)。
20.2.6 相关系数那些事儿
医学文献中你会碰见非常多的人使用相关系数,但是相信我,许多人都用错了。其实比起相关系数,能提供更多信息的手段是进行回归分析。下面罗列一些常见的错误使用相关系数的例子:
- 图 20.3 展示了同样的一组数据,如果只是断章取义,其相关系数可能发生极大的变化。所以,想用相关系数作合理的统计推断,必须保证数据的完整性,否则就有玩弄数据之嫌。然而,如果你用的是线性回归的方法,受数据限制 (data restriction) 的影响就几乎可以忽略不计。
均数回归现象,regression to the mean phenomenon,是指在进行重复测量时,前次测量中获得的极高或极低分数会在后期测量时倾向于向平均值偏移,即随着时间的推移,高分者成绩下降,低分者成绩升高的一种自然回归效应。所以在一些临床实验中宣称自己发现的测量值的变化和基线值之间的相关关系(correlation between initial measurement and a change in that measurement),其实是一种自然现象而不是真的存在什么相关关系,如图20.4。要避免这样的低级失误,可以计算测量值的变化 (\(X_2-X_1\)) 和前后两次测量值的均值 (\((X_2+X_1)/2\)) 之间的相关关系。
有些科学家声称自己用回归系数来衡量两个变量之间的一致性 (assess agreement between variables),这当然是完全错误的。两个变量之间高度相关,和他们高度一致是完全不同的概念 (单位,测量方法,可能都不一样怎么可能一致呢)。你完全可以将同一个变量乘以2以后和它原来的值作相关分析,就会发现二者相关系数等于 1,但是二者数值上相差两倍。
一般来说,回归模型(regression models) 显得比Pearson 相关系数更加实用,能提供更多的信息用于推断(甚至是用一个值的变化预测另一个变量的大小),也能避免上面举例的错误使用。
20.2.7 在 R 里面计算相关系数
在 R 里面用 cor()
可以简单的获得两个变量之间的相关系数,cor.test()
可以用于获得相关系数的置信区间和是否为零的假设检验结果:
## [1] 0.8676394
##
## Pearson's product-moment correlation
##
## data: growgam1$age and growgam1$len
## t = 23.927, df = 188, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.8274906 0.8989609
## sample estimates:
## cor
## 0.8676394
20.3 二元变量之间的相关性
两个二元变量之间的相关性常用比值比 Odds Ratio (OR) 来衡量。跟连续型变量的 Pearson 相关系数一样,二元变量之间的比值比也是一种对称的特征值。所以,X 对于 Y 的 OR,和 Y 对于 X 的 OR 是一样的。令 \(\pi_{ij}\) 表示 \(X=i, Y=j\) 时的概率。
利用表格可以看出,求 Y 对 X 的 OR 计算式为 (horizontal):
\[ \Psi = \frac{\pi_{00}/\pi_{01}}{\pi_{10}/\pi_{11}} = \frac{\pi_{00}\times\pi_{11}}{\ pi_{10}\times\pi_{01}} \]
求 X 对 Y 的 OR 计算式为 (vertical):
\[ \Psi = \frac{\pi_{00}/\pi_{10}}{\pi_{01}/\pi_{11}} = \frac{\pi_{00}\times\pi_{11}}{\ pi_{10}\times\pi_{01}} \]
可见两个计算 OR (parameter) 值关系的计算式是完全等价的。
\(Y = 0\) | \(Y = 1\) | Total | |
---|---|---|---|
\(X = 0\) | \(O_{00}\) | \(O_{01}\) | \(O_{0\cdot}\) |
\(X = 1\) | \(O_{10}\) | \(O_{11}\) | \(O_{1\cdot}\) |
Total | \(O_{\cdot 0}\) | \(O_{\cdot 1}\) | 1 |
所以用观察数据 (Observed data, all “O”s in the table) 替代掉 OR 计算式中的 \(\pi\) 可得观察数据的 OR 估计值 (estimator) 的计算公式:
\[ \begin{equation} \hat\Psi = \frac{\hat\pi_{00}\times\hat\pi_{11}}{\hat\pi_{10}\times\hat\pi_{01}} = \frac{O_{00 }\times O_{11}}{O_{10}\times O_{01}} \end{equation} \tag{20.7} \]
20.3.1 OR 的置信区间
由于OR 是乘法计算的结果,我们习惯上使用对数转换OR 以后\((\text{log}(\hat\Psi))\) 计算完对称的95% 置信区间,然后再通过对数的反函数获得OR 的95% 置信区间。
样本量足够大时, \(\text{log}(\hat\Psi)\) 的分布是正态分布,标准误 (standard error) 是:
\[ \begin{equation} \sqrt{\frac{1}{N\pi_{00}}+\frac{1}{N\pi_{01}}+\frac{1}{N\pi_{10}}+\frac{1} {N\pi_{11}}} \end{equation} \tag{20.8} \]
其中 \(N\pi_{ij}\) 表示的是 \(2\times2\) 表格中四个观察数据的观察样本量 (sample size in the contingency table)。
所以一个 OR 的置信区间的计算流程如下:
20.3.2 比值比的假设检验
比值比 OR 假设检验时的零假设为,二者不相关,比值比 \(\Psi=1\)。所以:\(\text{H}_0: \Psi = 1 \text{ or log}_e(\Psi) = 0\)。
这个零假设可以用计算置信区间时的性质进行:
\[ z=\frac{\text{log}(\hat\Psi)}{SE(\text{log}_e(\Psi))} \sim N(0,1) \]
另外更加常用的检验 OR 值是否等于 1 的检验方法有下面两种:
- 样本量大时:\(\chi^2\) 的拟合优度检验 goodness of fit test;
- 小样本时:Fisher 的精确检验法 Fisher’s exact test。