我正在使用cfa()
包中的lavPredict()
和lavaan
函数为一系列具有某些缺失值的观测值创建因子得分。但是,我找不到产生加权和分数的方法,这种方法可以避免平均值为零。
以下是类似数据的示例:
x <- rnorm(100, 0.4, sd = 0.3)
y <- rnorm(100, 0.7, sd = 0.2)
df <- data.frame(x, y)
df$x[20:30] <- NA
df$y[80:90] <- NA
使用最大信息最大可能性(FIML),我可以在确认性因子分析过程中估算缺失的数据。
mod <- 'dim =~ x + y'
fit <- cfa(mod, df, missing = "fiml")
然后,使用lavPredict
函数,我可以为所有观察结果提供因子得分。我使用以下因素评分方法:“回归”,“巴特利特”,“ ML”(最大似然)和“ EBM”(经验贝叶斯模态)。
pred.r <- as.data.frame(lavPredict(fit, method = "regression"))
pred.b <- as.data.frame(lavPredict(fit, method = "Bartlett"))
pred.ml <- as.data.frame(lavPredict(fit, method = "ML"))
pred.ebm <- as.data.frame(lavPredict(fit, method = "EBM"))
以下直方图将显示因子得分的分布:
hist(pred.r$dim)
hist(pred.b$dim)
hist(pred.ml$dim)
hist(pred.ebm$dim)
我正在寻找一种计算因子得分的方法,该因子得分由来自CFA的因子负载加权而没有平均值为零。这行代码可以获取因子负载:
cfa.ld <- as.data.frame(inspect(cfa.fit, what = "std")$lambda)
但是我试图找到一种简单的方法来获得因子分数,该因子分数遵循DiStefano,Zhu和Mindrila(2009)在此处描述的加权总分方法:https://pareonline.net/getvn.asp?v=14&n=20