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

如何从psych包的EFA结果提取观测层面因子分数用于GLM

解决psych包EFA提取观测层面因子分数的问题

问题原因

你当前获取的fa_02$r.scores和fa_02$score.cor是因子间的相关矩阵,并非每个观测样本的因子分数——这是因为调用fa()函数时未指定计算观测因子分数的参数,默认不会生成样本层面的分数。

解决方案

1. 重新运行EFA并指定分数计算方法

调用psych::fa()时必须添加scores参数,指定因子分数的估计方法(常用选项包括"regression"、"tenBerge"、"Anderson")。示例代码:

library(psych)
# 假设你的原始数据集为df,包含所有用于EFA的观测变量
fa_02 <- fa(df, nfactors = 2, scores = "regression")
  • scores = "regression":回归法估计因子分数,最常用,默认对变量中心化
  • scores = "tenBerge":保证因子得分正交,适用于需要因子独立的场景
  • scores = "Anderson":极大似然法估计,符合EFA的统计假设

2. 提取观测层面的因子分数

正确的样本因子分数存储在fa_02$scores中,这是一个行数与原始数据集观测数一致、列数等于因子数的矩阵:

# 查看因子分数维度,确认与原始数据行数匹配
dim(fa_02$scores)
# 查看前几行因子分数
head(fa_02$scores)

3. 合并因子分数到数据集用于GLM

将因子分数合并到原始数据后,即可作为自变量构建广义线性模型:

# 合并因子分数与原始数据
df_combined <- cbind(df, fa_02$scores)
# 构建GLM示例(假设响应变量为y,其他预测变量为other_var1、other_var2)
glm_fit <- glm(y ~ MR1 + MR2 + other_var1 + other_var2, data = df_combined, family = gaussian)

补充说明

  • fa_02$r.scores:因子得分的相关矩阵,反映提取出的因子之间的关联程度
  • fa_02$score.cor:与fa_02$Phi等价,是EFA模型中潜在因子的相关矩阵

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 07:32:08