R 当数据中存在NAs时,如何计算CFA模型的因子得分、上下限

R 当数据中存在NAs时,如何计算CFA模型的因子得分、上下限,r,r-lavaan,R,R Lavaan,当数据中存在NAs时,我们如何计算CFA模型的因子得分和上下限(或置信区间): 以下是一个例子: ID = 1:500 states = rep(c("TS", "NE", "AR", "MO", "WA"),times = c(100, 100, 100, 100, 100)) schools = randomNames::randomNames(500) ## 5 first last nam

当数据中存在NAs时,我们如何计算CFA模型的因子得分和上下限(或置信区间):

以下是一个例子:

ID = 1:500
states = rep(c("TS", "NE", "AR", "MO", "WA"),times = c(100, 100, 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, min=.05, 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)
ID=1:500
州=代表(c(“TS”、“NE”、“AR”、“MO”、“WA”),时间=c(100100100100100))
学校=随机姓名::随机姓名(500)##5个用空格分隔的姓
性别=代表(c(“男性”、“女性”),次数=c(180320))

第1项=运行IF(500,最小值=0.05,最大值=0.95);ind1当您缺少数据时(当然是在某些假设下),使用完整信息最大可能性会有所帮助。更多信息

对于因子得分的估计,可以使用lavPredict()

sem\u pred%
data.frame()
历史(sem_pred$满意度,main=“满意度”,xlab=“因子得分”)

当您丢失数据时(当然是在某些假设下),使用完整信息最大可能会有所帮助。更多信息

对于因子得分的估计,可以使用lavPredict()

sem\u pred%
data.frame()
历史(sem_pred$满意度,main=“满意度”,xlab=“因子得分”)

关于缺失,如果您在
拉瓦恩
内查看,您将看到:

如果为“listwise”,则从列表中删除缺少值的案例 数据帧。如果“直接”或“ml”或“fiml”,则估计量为最大值 似然,EM算法用于估计无限制 协方差矩阵(和平均向量)。如果为“两两”,则两两删除 使用。如果为“默认”,则根据估计器和 模拟选项

因此,您可以在
缺少的
参数中使用“direct”或“ml”或“fiml”:


Fit_Scale关于缺失,如果您在
lavan
中查看,您将看到:

如果为“listwise”,则从列表中删除缺少值的案例 数据帧。如果“直接”或“ml”或“fiml”,则估计量为最大值 似然,EM算法用于估计无限制 协方差矩阵(和平均向量)。如果为“两两”,则两两删除 使用。如果为“默认”,则根据估计器和 模拟选项

因此,您可以在
缺少的
参数中使用“direct”或“ml”或“fiml”:


Fit_Scale谢谢,@jvargh7-因子得分函数起作用了。有没有办法计算因子得分的上下限/置信区间?谢谢,@jvargh7-因子得分函数起作用了。有没有办法计算因子得分的上下限/置信区间?
Fit_Scale = lavaan::cfa(model = syntaxScale, data = df, estimator = "MLR", std.lv = FALSE,missing="fiml")
sem_pred <- lavPredict(Fit_Scale,type="lv") %>% 
  data.frame()

hist(sem_pred$Satisfaction,main = "Satisfaction",xlab = "Factor score")