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

如何在R中提取SPSS式Component Score Coefficient Matrix?

提取SPSS风格的主成分得分系数矩阵

方法1:通过psych包的principal函数直接获取

你使用的principal函数(来自psych包)返回结果中的$weights字段,就是SPSS里的Component Score Coefficient Matrix。直接调用即可:

library(psych)
pca <- principal(mtcars, nfactors = 2, rotate = "varimax")
# 提取得分系数矩阵
score_coef <- pca$weights
print(score_coef)

方法2:用基础R的prcomp函数实现

如果偏好基础R工具,可以通过以下步骤计算:

  1. 对数据标准化后执行PCA(SPSS默认标准化变量)
  2. 提取载荷矩阵并做varimax旋转
  3. 用旋转后的载荷除以对应主成分的标准差,得到得分系数

代码示例:

# 标准化数据后执行PCA
pca_prcomp <- prcomp(mtcars, scale. = TRUE)
# 提取前2个主成分的载荷矩阵
loadings <- pca_prcomp$rotation[, 1:2]
# 执行varimax旋转
rotated_loadings <- varimax(loadings)$loadings
# 计算得分系数
score_coef_prcomp <- t(t(rotated_loadings) / pca_prcomp$sdev[1:2])
print(score_coef_prcomp)

手动计算原理

SPSS的主成分得分系数矩阵本质是标准化变量与主成分的回归系数,核心逻辑:

  • 先对原始变量做标准化处理(均值为0,方差为1)
  • 计算主成分载荷矩阵(变量与主成分的相关系数)
  • 对载荷矩阵执行指定旋转(如varimax)
  • 将旋转后的载荷除以对应主成分的标准差(即特征值的平方根),得到最终系数

手动计算的补充代码:

# 基于特征值的计算方式
eigen_vals <- pca_prcomp$sdev^2  # 获取特征值
score_coef_manual <- t(t(rotated_loadings) / sqrt(eigen_vals[1:2]))

内容的提问来源于stack exchange,提问作者C.F.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:18:27