跳到主要内容

典型相关分析

一、直观理解:两组变量之间的“最相关投影”​

普通相关看的是一个 xx 与一个 yy。若一边是一组 XX(如多项体质指标),另一边是一组 YY(如多项学业指标),我们想问:

两边是否存在整体关联?最强的关联方向是什么?

典型相关分析(Canonical Correlation Analysis, CCA)寻找系数向量 a,ba,b,使

u=aTX,v=bTYu=a^\mathsf{T}X,\quad v=b^\mathsf{T}Y

的相关 Corr(u,v)\mathrm{Corr}(u,v) 最大。(u,v)(u,v) 称为第一对典型变量;在与之正交的约束下可继续找第二对、第三对。

可以把 CCA 想成:对两组变量分别做“定向压缩”,使压缩后的一维分数尽可能同步。

二、适用场景与优缺点​

类型说明
适用场景两组多变量的整体关联;心理/教育中的多量表;遥感多光谱与地面多指标;在多元回归前探索两侧结构。
核心优点同时利用两侧多个变量;给出有序的关联强度(典型相关);载荷/系数可解释主要贡献变量。
局限与缺点线性方法;小样本高维不稳定;解释典型变量需谨慎;相关仍非因果;对尺度敏感,需标准化。

当一侧只有 1 个变量时,CCA 退化成该变量与另一侧的多重相关,与多元回归紧密联系。

三、核心原理​

设 Cov[XY]\mathrm{Cov}\begin{bmatrix}X\\Y\end{bmatrix} 分块为 Sxx,Sxy,Syx,SyyS_{xx},S_{xy},S_{yx},S_{yy}。CCA 求解

max⁡a,b aTSxybaTSxxa bTSyyb\max_{a,b}\ \frac{a^\mathsf{T}S_{xy}b}{\sqrt{a^\mathsf{T}S_{xx}a\ b^\mathsf{T}S_{yy}b}}

等价于广义特征问题。第 kk 个典型相关系数 ρk∈[0,1]\rho_k\in[0,1] 依次递减。

检验:在多元正态下可用 Wilks’ Λ\Lambda 等检验前 rr 个典型相关是否为 0。样本小时更宜用置换检验或交叉验证典型相关。

解释工具:

  • 标准化系数:构造典型变量的权重;
  • 结构载荷:原始变量与自身典型变量的相关,通常更好解释;
  • 冗余指数:一侧被对侧典型变量解释的方差比例。

四、关键决策​

1. 保留几对典型变量​

看 ρk\rho_k 是否显著、碎石式下降,以及交叉验证的稳定性。

2. 样本需求​

经验上 nn 应明显大于两侧变量数之和;否则先 PCA 降维再 CCA,或用正则化 CCA。

3. 标准化​

不同量纲必须标准化;异常值先处理。

4. 与 PLS 的区别​

CCA 最大化相关;PLS 更偏向预测 YY 的协方差结构。预测任务有时 PLS 更稳。

五、MATLAB 示例​

rng(15);
n = 120;
% 潜在共同因子
f = randn(n,1);
X = [f + 0.4*randn(n,1), 0.7*f + 0.5*randn(n,1), randn(n,1)];
Y = [0.8*f + 0.5*randn(n,1), -0.6*f + 0.6*randn(n,1), 0.2*randn(n,1)];

Xz = zscore(X); Yz = zscore(Y);
[A, B, r, U, V] = canoncorr(Xz, Yz);

fprintf("典型相关系数:\n"); disp(r');
disp("X 侧系数 A:"); disp(A);
disp("Y 侧系数 B:"); disp(B);

% 结构载荷:变量与典型变量相关
loadX = corr(Xz, U);
loadY = corr(Yz, V);
disp("X 结构载荷(列=典型变量):"); disp(loadX);
disp("Y 结构载荷:"); disp(loadY);

figure;
subplot(1,2,1); scatter(U(:,1), V(:,1), 20, "filled");
xlabel("U1"); ylabel("V1"); title(sprintf("第一典型对 r=%.2f", r(1))); grid on;
subplot(1,2,2); bar(r); xlabel("阶"); ylabel("\rho"); title("典型相关");

% 简单置换检验第一典型相关
Bperm = 300;
r0 = r(1);
rp = zeros(Bperm,1);
for b = 1:Bperm
Yp = Yz(randperm(n), :);
[~,~,rr] = canoncorr(Xz, Yp);
rp(b) = rr(1);
end
pval = mean(rp >= r0);
fprintf("第一典型相关置换 p ≈ %.4g\n", pval);

六、如何解释结果​

  1. 两侧变量清单与标准化;
  2. 各典型相关系数及检验;
  3. 用载荷指出每侧谁主导;
  4. 给典型变量命名须谨慎、有专业依据;
  5. 冗余分析或交叉验证;
  6. 明确探索性,不作因果断言。

七、常见误区​

1. 小样本硬上高维 CCA​

相关会被夸大,必须正则化或降维。

2. 只报系数不报载荷​

系数不稳定时载荷往往更好读。

3. 把典型相关当普通 Pearson 阈值解释​

ρ1=0.5\rho_1=0.5 的“强度感”要结合维度与冗余。

4. 忽略后续典型变量可能仍有信息​

但也不要无保留过多噪声对。

八、小结​

CCA 的核心是:

为两组变量找到最相关的线性组合序列,从而概括组间整体关联。

它适合“多对多”关联探索。稳定使用的关键是足够样本、标准化、载荷解释与(必要时)置换/交叉验证,而不是只报一个很大的第一典型相关。

补充说明(建模写作)​

在数学建模论文中,除正文八段结构外,建议把下列材料放进附录或支撑材料,避免主文臃肿却又不失可复核性:

  1. 原始数据或模拟数据的生成设定:样本量、变量含义、单位、随机种子;
  2. 软件与函数清单:如 corr、coxphfit、centrality 及关键参数;
  3. 对照结果:与更简单基线(均值差、入度排序、不调整分析)并排;
  4. 失败诊断:不收敛、不连通、删失比例过高、重叠不足时的处理;
  5. 可复现脚本:保证评阅人按相同步骤得到同号结论。

这些补充不改变方法本身,但能显著提高结果的可信度与答辩时的解释效率。