如何提取factoextra包中MCA因子贡献度柱状图的数值?
获取MCA变量维度贡献度数值的方法
你之前的错误在于使用get_mca_ind()提取了个体的信息,但你需要的是变量的维度贡献度(cos2值),正确操作如下:
1. 直接提取变量的cos2值
使用get_mca_var()函数获取变量相关的MCA结果,从中提取维度1和2的cos2值:
# 获取MCA分析中的变量信息 var <- get_mca_var(res.mca) # 提取维度1和2的cos2值(即变量对各维度的贡献度) var_cos2 <- var$cos2[, 1:2] # 查看前几行数据 head(var_cos2)
2. 整理为带变量名的表格
如果需要更清晰的结构化表格,可将结果转换为带变量名称的数据框:
# 转换为数据框并添加变量名列 var_cos2_df <- as.data.frame(var_cos2) var_cos2_df$variable <- rownames(var_cos2_df) # 调整列顺序,将变量名放在首位 var_cos2_df <- var_cos2_df[, c("variable", "Dim.1", "Dim.2")] # 打印完整表格 print(var_cos2_df)
3. 手动计算验证cos2值
cos2的计算逻辑是:变量在某维度上的坐标值平方,除以该变量的总惯量(inertia),公式为:cos2 = (坐标值)^2 / 总惯量
你可以手动计算验证结果:
# 提取变量的坐标值和总惯量 var_coord <- var$coord[, 1:2] var_inertia <- var$inertia # 手动计算各维度的cos2值 cos2_dim1 <- (var_coord[, "Dim.1"])^2 / var_inertia cos2_dim2 <- (var_coord[, "Dim.2"])^2 / var_inertia # 合并为数据框 manual_cos2 <- data.frame(Dim.1 = cos2_dim1, Dim.2 = cos2_dim2) head(manual_cos2)
内容的提问来源于stack exchange,提问作者WindSur
相关产品推荐
相关产品推荐

