典型相关

在统计学中，典型相关分析（Canonical Correlation Analysis）是对互协方差矩阵的一种理解。如果我们有两个随机变量向量 X = (X1, ..., Xn) 和 Y = (Y1, ..., Ym) 并且它们是相关的，那么典型相关分析会找出 Xi 和 Yj 的相互相关最大的线性组合。T·R·Knapp指出“几乎所有常见的参数测试的意义可视为特殊情况的典型相关分析，这是研究两组变量之间关系的一般步骤。” 这个方法在1936年由哈罗德·霍特林首次引入。

给定两个随机向量$X = (x_1, \dots, x_n)'$和$Y = (y_1, \dots, y_m)'$，我们可以定义互协方差矩阵 $\Sigma _{XY} = \operatorname{cov}(X, Y)$ 为 $n \times m$ 的矩阵，其中 $(i, j)$ 是协方差 $\operatorname{cov}(x_i, y_j)$。实际上，我们可以基于 $X$ 和 $Y$ 的采样数据来估计协方差矩阵。(如从一对数据矩阵)。

典型相关分析求出向量 $a$ 和 $b$ 使得随机变量 $a' X$ 和 $b' Y$ 的相关性 $\rho = \operatorname{corr}(a' X, b' Y)$ 最大。随机变量 $U = a' X$ 和 $V = b' Y$ 是 第一对典型变量。然后寻求一个依然最大化相关但与第一对典型变量不相关的向量；这样就得到了 第二对典型变量。这个步骤会进行 $\min\{m,n\}$ 次。

## 计算

### 推导

设 $\Sigma _{XX} = \operatorname{cov}(X, X)$ 和 $\Sigma _{YY} = \operatorname{cov}(Y, Y)$。需要最大化的参数为

$$\rho = \frac{a' \Sigma _{XY} b}{\sqrt{a' \Sigma _{XX} a} \sqrt{b' \Sigma _{YY} b}}.$$

第一步是定义一个基变更以及

$$c = \Sigma _{XX} ^{1/2} a,$$

$$d = \Sigma _{YY} ^{1/2} b.$$

因此我们有

$$\rho = \frac{c' \Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1/2} d}{\sqrt{c' c} \sqrt{d' d}}.$$

根据柯西-施瓦茨不等式，我们有

$$\left(c' \Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1/2} \right) d \leq \left(c' \Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1/2} \Sigma _{YY} ^{-1/2} \Sigma _{YX} \Sigma _{XX} ^{-1/2} c \right)^{1/2} \left(d' d \right)^{1/2},$$

$$\rho \leq \frac{\left(c' \Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1} \Sigma _{YX} \Sigma _{XX} ^{-1/2} c \right)^{1/2}}{\left(c' c \right)^{1/2}}.$$

如果向量 $d$ 和 $\Sigma _{YY} ^{-1/2} \Sigma _{YX} \Sigma _{XX} ^{-1/2} c$ 共线，那么上式相等。此外，如果 $c$ 是矩阵 $\Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1} \Sigma _{YX} \Sigma _{XX} ^{-1/2}$ (见Rayleigh quotient) 最大特征值对应的特征向量，那么就可以得到相关的最大值。随后的典型变量对可以通过减少特征值的量级来得到。正交性保证了相关矩阵的对称性。

### 解法

因此解法是：

- $c$ 是 $\Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1} \Sigma _{YX} \Sigma _{XX} ^{-1/2}$ 的一个特征向量。
- $d$ 是 $\Sigma _{YY} ^{-1/2} \Sigma _{YX} \Sigma _{XX} ^{-1/2} c$ 的比例项。

相反地，也有：

- $d$ 是 $\Sigma _{YY} ^{-1/2} \Sigma _{YX} \Sigma _{XX} ^{-1} \Sigma _{XY} \Sigma _{YY} ^{-1/2}$ 的一个特征向量。
- $c$ 是 $\Sigma _{XX} ^{-1/2} \Sigma _{XY} \Sigma _{YY} ^{-1/2} d$ 的比例项。

把坐标反过来，我们有

- $a$ 是 $\Sigma _{XX} ^{-1} \Sigma _{XY} \Sigma _{YY} ^{-1} \Sigma _{YX}$ 的一个特征向量。
- $b$ 是 $\Sigma _{YY} ^{-1} \Sigma _{YX} \Sigma _{XX} ^{-1} \Sigma _{XY}$ 的一个特征向量。
- $a$ 是 $\Sigma _{XX} ^{-1} \Sigma _{XY} b$ 的比例项。
- $b$ 是 $\Sigma _{YY} ^{-1} \Sigma _{YX} a$ 的比例项。

那么相关变量定义为：

$$U = c' \Sigma _{XX} ^{-1/2} X = a' X$$

$$V = d' \Sigma _{YY} ^{-1/2} Y = b' Y$$

### 实现

典型相关分析可以用一个相关矩阵的奇异值分解来解决。以下是它在一些语言中的函数

- MATLAB as canoncorr
- R as cancor or in FactoMineR
- SAS as The CANCORR Procedure
- Scikit-Learn, Python as Cross decomposition

## 假设检验

每一行可以用下面的方法检测其重要性。由于相关是排好序的，也就是说行 $i$ 为 0 意味着所有后续的相关都为 0。如果我们在一个样本中有 $p$ 个独立观测，对 $i = 1,\dots, \min\{m,n\}$，$\widehat{\rho}_i$ 是其估计相关。对第 $i$ 行，测试统计为：

$$\chi ^2 = - \left( p - 1 - \frac{1}{2}(m + n + 1)\right) \ln \prod _ {j = i} ^{\min\{m,n\}} (1 - \widehat{\rho}_j^2),$$

上面渐近为一个对大 $p$ 有 $(m - i + 1)(n - i + 1)$ 个自由度的卡方分布。由于所有从 $\min\{m,n\}$ 到 $p$ 的相关从逻辑上来说都是 0，所以在这一点之后的乘积都是不相关的。

## 参见

- Generalized Canonical Correlation
- Multilinear subspace learning
- RV coefficient
- Principal angles
- 主成分分析
- Regularized canonical correlation analysis
- 奇异值分解
- Partial least squares regression