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

在R中如何从FactoMineR包的PCA结果提取Eigenvectors?

获取FactoMineR::PCA()的特征向量并与prcomp()结果对齐

1. 从FactoMineR的PCA结果中提取特征向量

FactoMineR的PCA()函数输出里,对应prcomp()中$rotation的特征向量,存储在$var$coord字段中。由于PCA()默认对数据做标准化处理(和prcomp(scale. = TRUE)逻辑一致),$var$coord就是标准化后的特征向量。

示例代码:

library(FactoMineR)
# 模拟通胀数据(替换为你的真实数据)
set.seed(123)
inflation_data <- data.frame(
  cpi = rnorm(100, 2, 0.5),
  ppi = rnorm(100, 3, 0.8),
  wage_growth = rnorm(100, 2.5, 0.6),
  core_cpi = rnorm(100, 1.8, 0.4)
)

# 运行FactoMineR的PCA(关闭默认绘图)
fm_pca <- PCA(inflation_data, scale.unit = TRUE, graph = FALSE)
# 提取特征向量
fm_eigenvecs <- fm_pca$var$coord

# 对比prcomp的结果
pr_pca <- prcomp(inflation_data, scale. = TRUE)
pr_eigenvecs <- pr_pca$rotation

2. 验证两者特征向量的一致性

PCA的主成分方向允许正负翻转(不影响实际解释),验证时需要忽略符号差异:

# 检查是否仅符号不同
all.equal(abs(fm_eigenvecs), abs(pr_eigenvecs))

如果返回TRUE,说明两者特征向量本质完全一致,符号翻转属于PCA的正常情况,不影响后续分析。

3. 关于$var$cos2的说明

$var$cos2是变量与主成分的平方余弦值,是特征向量元素的平方,代表变量对主成分的贡献比例,不是特征向量本身,不能用来替代。

4. 混用图表与特征向量的注意事项

既然已经验证了特征向量的一致性,你可以放心使用FactoMineR的可视化功能(比如plot.PCA(fm_pca)生成载荷图、得分图等),同时用提取的fm_eigenvecs(或prcomp的pr_eigenvecs)做后续分析。如果需要统一符号,只需对某一方的特征向量乘以-1即可:

# 以第一主成分为例,统一符号
if (fm_eigenvecs[1, 1] * pr_eigenvecs[1, 1] < 0) {
  fm_eigenvecs[, 1] <- -fm_eigenvecs[, 1]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 23:04:56