You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言factoextra包fviz_ellipses与facto_summarize结果不匹配问题

问题1:Age、Time未出现在facto_summarize结果中的原因

你在调用MCA()函数时,通过quanti.sup = 1:2参数将数据集前两列的Age、Time设置为了定量补充变量,这类变量不会参与MCA的核心拟合计算,仅会在结果中额外投影坐标。
facto_summarize(res.mca, 'var', axes=1:2)默认仅返回主动参与拟合的分类变量统计结果,自然匹配不到Age、Time两个补充变量。而fviz_ellipses会默认纳入所有类型变量(主动变量+补充变量)的贡献统计,所以你会在图中看到这两个变量的排名。

如果需要提取补充变量的统计结果,调整element参数即可:

  • 提取定量补充变量结果:facto_summarize(res.mca, 'quanti.sup', axes=1:2)
  • 提取定性补充变量结果:facto_summarize(res.mca, 'quali.sup', axes=1:2)

执行定量补充变量提取代码后,你就能拿到Age、Time的坐标、贡献度等数据。

问题2:facto_summarize返回类别值而非变量名的调整方法

MCA的计算逻辑是将每个分类变量的每一个水平(类别)作为独立的统计点处理,因此默认返回的name列是变量的水平值而非原始变量名。你可以从MCA结果对象中提取水平和变量的对应关系,拼接回统计结果即可,参考代码如下:

library(dplyr)
# 提取主动分类变量统计结果
var_stat <- facto_summarize(res.mca, 'var', axes = 1:2)
# 生成「水平-原始变量」映射表
level_var_map <- data.frame(
  name = rownames(res.mca$var$coord),
  variable = rep(colnames(res.mca$call$X[, res.mca$call$quali]), times = res.mca$call$mod)
)
# 拼接得到带原始变量名的结果
var_stat_with_varname <- left_join(var_stat, level_var_map, by = "name")

后续你可以直接通过variable列筛选特定变量的所有水平统计结果。

内容的提问来源于stack exchange,提问作者anderwyang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:18:04