如何解决数据中存在NA时如何计算CFA模型的因子得分、上下限
当数据中有 NAs 时,我们如何计算因子得分,以及 CFA 模型的下限和上限(或置信区间):
这是一个例子:
ID = 1:500
states = rep(c("TS","NE","AR","MO","WA"),times = c(100,100,100))
schools = randomNames::randomNames(500) ## 5 first last names separated by a space
Gender = rep(c("male","female"),times = c(180,320))
item1 = runif(500,min=.05,max =.95); ind1 <- which(item1 %in% sample(item1,55)); item1[ind1]<-NA
item2 = runif(500,min=.66,max=1); ind2 <- which(item2 %in% sample(item2,200)); item2[ind2]<-NA
item3 = runif(500,max=.85); ind3 <- which(item3 %in% sample(item3,155)); item3[ind3]<-NA
item4 = runif(500,min=.40,max=1); ind4 <- which(item4 %in% sample(item4,150)); item4[ind4]<-NA
item5 = runif(500,min=0,max=.99); ind5 <- which(item5 %in% sample(item5,100)); item5[ind5]<-NA
df = data.frame(ID,states,schools,Gender,item1,item2,item3,item4,item5)
syntaxScale = "
Satisfaction =~ item1 + item2 + item3 + item4 + item5
Satisfaction ~~ 1*Satisfaction;
Satisfaction ~ 0;
"
Fit_Scale = lavaan::cfa(model = syntaxScale,data = df,estimator = "MLR",std.lv = FALSE)
summary(Fit_Scale,fit.measures = TRUE,rsquare = TRUE,standardized = TRUE)
提前致谢。
解决方法
当您缺少数据时(当然在某些假设下),使用完整信息最大似然会有所帮助。更多信息here。
Fit_Scale = lavaan::cfa(model = syntaxScale,data = df,estimator = "MLR",std.lv = FALSE,missing="fiml")
对于因子得分的估计,可以使用 lavPredict()。
sem_pred <- lavPredict(Fit_Scale,type="lv") %>%
data.frame()
hist(sem_pred$Satisfaction,main = "Satisfaction",xlab = "Factor score")
,
关于缺失,如果您查看 lavaan
documentation,您会看到:
如果为“listwise”,则从列表中删除缺失值的案例 数据框。如果“direct”或“ml”或“fiml”且估计量最大 似然,EM算法用于估计不受限制的 协方差矩阵(和平均向量)。如果是“pairwise”,则成对删除 用来。如果为“默认”,则根据估算器和 模仿选项。
因此,您可以在 missing
参数中使用“direct”或“ml”或“fiml”:
Fit_Scale <- lavaan::cfa(model = syntaxScale,missing = "ml")
关于因子分数(即使您进行了成对删除也有效):
idx <- lavInspect(Fit_Scale,"case.idx")
fscores <- lavPredict(Fit_Scale )
# loop over factors
for (fs in colnames(fscores)) {
df[idx,fs] <- fscores[,fs]
}
所有参数的置信区间:
parameterestimates(Fit_Scale,ci=T)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。