典型相关分析
一、直观理解:两组变量之间的“最相关投影”
普通相关看的是一个 与一个 。若一边是一组 (如多项体质指标),另一边是一组 (如多项学业指标),我们想问:
两边是否存在整体关联?最强的关联方向是什么?
典型相关分析(Canonical Correlation Analysis, CCA)寻找系数向量 ,使
的相关 最大。 称为第一对典型变量;在与之正交的约束下可继续找第二对、第三对。
可以把 CCA 想成:对两组变量分别做“定向压缩”,使压缩后的一维分数尽可能同步。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 两组多变量的整体关联;心理/教育中的多量表;遥感多光谱与地面多指标;在多元回归前探索两侧结构。 |
| 核心优点 | 同时利用两侧多个变量;给出有序的关联强度(典型相关);载荷/系数可解释主要贡献变量。 |
| 局限与缺点 | 线性方法;小样本高维不稳定;解释典型变量需谨慎;相关仍非因果;对尺度敏感,需标准化。 |
当一侧只有 1 个变量时,CCA 退化成该变量与另一侧的多重相关,与多元回归紧密联系。
三、核心原理
设 分块为 。CCA 求解
等价于广义特征问题。第 个典型相关系数 依次递减。
检验:在多元正态下可用 Wilks’ 等检验前 个典型相关是否为 0。样本小时更宜用置换检验或交叉验证典型相关。
解释工具:
- 标准化系数:构造典型变量的权重;
- 结构载荷:原始变量与自身典型变量的相关,通常更好解释;
- 冗余指数:一侧被对侧典型变量解释的方差比例。
四、关键决策
1. 保留几对典型变量
看 是否显著、碎石式下降,以及交叉验证的稳定性。
2. 样本需求
经验上 应明显大于两侧变量数之和;否则先 PCA 降维再 CCA,或用正则化 CCA。
3. 标准化
不同量纲必须标准化;异常值先处理。
4. 与 PLS 的区别
CCA 最大化相关;PLS 更偏向预测 的协方差结构。预测任务有时 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. 小样本硬上高维 CCA
相关会被夸大,必须正则化或降维。
2. 只报系数不报载荷
系数不稳定时载荷往往更好读。
3. 把典型相关当普通 Pearson 阈值解释
的“强度感”要结合维度与冗余。
4. 忽略后续典型变量可能仍有信息
但也不要无保留过多噪声对。
八、小结
CCA 的核心是:
为两组变量找到最相关的线性组合序列,从而概括组间整体关联。
它适合“多对多”关联探索。稳定使用的关键是足够样本、标准化、载荷解释与(必要时)置换/交叉验证,而不是只报一个很大的第一典型相关。
补充说明(建模写作)
在数学建模论文中,除正文八段结构外,建议把下列材料放进附录或支撑材料,避免主文臃肿却又不失可复核性:
- 原始数据或模拟数据的生成设定:样本量、变量含义、单位、随机种子;
- 软件与函数清单:如
corr、coxphfit、centrality及关键参数; - 对照结果:与更简单基线(均值差、入度排序、不调整分析)并排;
- 失败诊断:不收敛、不连通、删失比例过高、重叠不足时的处理;
- 可复现脚本:保证评阅人按相同步骤得到同号结论。
这些补充不改变方法本身,但能显著提高结果的可信度与答辩时的解释效率。