多重对应分析

Author

Li Zongzhang

Published

November 6, 2025

MCA 是对应分析(Correspondence Analysis, CA)在“多变量分类数据”上的推广,主要用于对多项(名义)分类变量集合进行降维和可视化。

目标:把高维的分类变量(每个变量有若干类别)映射到低维空间(通常 2 或 3 维),便于发现变量类别之间、样本(个体)之间以及变量与个体间的关联结构。

MCA 示例:UCBAdmissions 数据集

# UCBAdmissions 示例 —— 表示院系、性别与是否录取(含频数)
library(FactoMineR)
library(factoextra)

data(UCBAdmissions)
head(as.data.frame(UCBAdmissions))
     Admit Gender Dept Freq
1 Admitted   Male    A  512
2 Rejected   Male    A  313
3 Admitted Female    A   89
4 Rejected Female    A   19
5 Admitted   Male    B  353
6 Rejected   Male    B  207
# 展开频数表
df_tab2 <- as.data.frame(UCBAdmissions)    # Admit, Gender, Dept, Freq
df2 <- df_tab2[rep(1:nrow(df_tab2), df_tab2$Freq), 1:3]


# MCA 需要输入每一行为一个观测(个体),每列为一个分类变量(factor 或 character)
# 运行 MCA
res.mca <- MCA(df2, graph = FALSE)

# 特征值 / 惯性
print(res.mca$eig)
      eigenvalue percentage of variance cumulative percentage of variance
dim 1  0.5593567              23.972432                          23.97243
dim 2  0.3836385              16.441651                          40.41408
dim 3  0.3333333              14.285714                          54.69980
dim 4  0.3333333              14.285714                          68.98551
dim 5  0.3333333              14.285714                          83.27123
dim 6  0.2365865              10.139423                          93.41065
dim 7  0.1537515               6.589351                         100.00000
# 类别坐标与贡献
res.mca$var$coord
              Dim 1       Dim 2         Dim 3         Dim 4         Dim 5
Admitted -0.8044382  0.60388898  1.893874e-14 -2.715055e-14  1.595259e-14
Rejected  0.5094872 -0.38247028 -1.310537e-14  1.678796e-14 -9.647836e-15
Male     -0.5994764 -0.33206778 -9.675829e-15  7.223627e-15 -3.701573e-14
Female    0.8791232  0.48697242  1.504986e-14 -9.906237e-15  5.399450e-14
A        -1.1285105  0.10364920 -1.303601e+00 -4.705919e-01  4.364633e-01
B        -1.2651063 -0.36898236  2.019112e+00  5.820911e-01  8.587992e-02
C         0.5961997  1.06360652  6.139759e-01 -1.263117e+00 -1.449487e-01
D         0.2416198  0.05485516 -4.830139e-01  9.782696e-01 -1.855346e+00
E         0.8469566  0.56263177 -2.008690e-01  1.644655e+00  1.626523e+00
F         0.7838806 -1.72165693 -4.019014e-02 -6.683306e-01  2.733150e-01
res.mca$var$contrib
              Dim 1       Dim 2        Dim 3        Dim 4        Dim 5
Admitted 14.9533277 12.28664503 1.390800e-26 2.858380e-26 9.867907e-27
Rejected  9.4706208  7.78168965 1.051527e-26 1.725512e-26 5.698779e-27
Male     12.7330727  5.69651377 5.566414e-27 3.102486e-27 8.146514e-26
Female   18.6728603  8.35385207 9.183033e-27 3.978679e-27 1.182009e-25
A        15.6447341  0.19242238 3.503133e+01 4.565160e+00 3.927014e+00
B        12.3277907  1.52900553 5.269410e+01 4.379487e+00 9.532889e-02
C         4.2963676 19.93639553 7.645938e+00 3.236050e+01 4.261443e-01
D         0.6087871  0.04575116 4.082535e+00 1.674664e+01 6.023657e+01
E         5.5158255  3.54897822 5.206239e-01 3.490183e+01 3.413650e+01
F         5.7766134 40.62874664 2.548137e-02 7.046385e+00 1.178448e+00

对应分析/通过多个维度捕捉数据中分类变量之间的结构。

特征值表示信息量,坐标表示类别在维度上的位置,贡献度表示哪些类别主导了维度的解释。

多重对应分析(MCA, Multiple Correspondence Analysis) 的类别散点图

# 绘制各类别在第1维度和第2维度的位置
# 颜色代表类别的贡献
fviz_mca_var(res.mca, 
             repel = TRUE, 
             col.var = "contrib")

# 绘制各类别在第3维度和第4维度的位置
fviz_mca_var(res.mca, 
             axes = c(3, 4),
             repel = TRUE, col.var = "contrib")

多重对应分析(MCA, Multiple Correspondence Analysis) 的个体散点图

fviz_mca_ind(res.mca, 
             geom = "point", 
             habillage = interaction(df2$Gender, df2$Admit),  
             palette = RColorBrewer::brewer.pal(4, "Set3"),
             repel = TRUE)

Dim1 方向:

大体上,未录取个体(紫色、橙色)分布在右侧(Dim1 > 0),而录取个体(绿色、黄色)多在左侧(Dim1 < 0)。

说明 Dim1 可能与“录取结果”相关,是区分录取与未录取的主要维度。

Dim2 方向:

男性和女性在 Dim2 上有轻微分离:男性(绿色/紫色)偏下,女性(黄色/橙色)偏上。

说明 Dim2 可能与“性别”相关,但区分度没有 Dim1 明显。

fviz_mca_ind(res.mca, 
             geom = "point", 
             habillage = interaction(df2$Gender, df2$Admit,
                                     df2$Dept),     
             palette = colorRampPalette(RColorBrewer::brewer.pal(9, "Blues"))(24), 
             repel = TRUE)

右上象限主要由 C、D、E 等系的组合组成,且以女性组居多,这些组沿第一维度倾向于和“被拒/系 C–E” 相关(图中在 Dim1 的正侧),在第二维度上也表现为正向(与 C 类系的特征一致)。

左上象限以“被录取(Admitted)”的组为主,尤其集中在系 A、B(以及部分在其他系的 admitted 男性),表明第一维度的负侧与“录取 / A、B 系”相关联。

左下象限主要包含男性组(集中在 A、B,以及一些 F 的 admitted),这些组在第二维度为负(受 Dept F 或男性模式影响),在第一维度又在负侧或接近负侧,呈现与 II 象限不同的男性/系别混合模式。

右下象限由系 F(以及部分 B/D/E)的组主导,Dim1 为正(接近“Rejected”侧),Dim2 为负(强烈受 Dept F 的负向特征影响),因此这一象限总体上表现出强烈的 F 系特征并包含较多被拒的组合。