如何解决具有 3 个级别的数据中的 CFA - 估计第 2 级的因子分数?
我正在处理具有 3 个级别的数据集:
- 老师
- 学校
- 国家
使用教师的调查回复,目的是使用验证性因素分析 (CFA),最终目标是在学校层面获得因素分数。
另一个目标是测试不同国家/地区的测量不变性。
我想在 R 中使用 lavaan 包,因为它能够通过 lavaan.survey-extension(抽样设计、权重等)处理我的数据的复杂调查设计
我已经做了一些初步分析,我在 cfa 函数中使用 country-ID 作为组参数。这使我有可能进行跨国家的测量不变性分析。问题是,我的因子分数是在个别教师级别给出的,而我对学校级别感兴趣。
关于如何在学校层面获得这些因素分数的任何想法?
以下是我使用的一些函数示例。我认为不需要我的数据样本,但如果需要,我会创建一些。
library(lavaan)
library(SEMtools)
#define model
reduced_mod <-'
leadership_sup =~ TC3G22D + TC3G22E + TC3G22K
continous_develop_collab =~ TT3G32A + TT3G32B + TT3G32C + TT3G32D '
#Fit model with different restraints:
fit_no_restraint <- cfa(model = reduced_mod,data = cfa_data,group="countryID")
fit_metric <- cfa(model = reduced_mod,group="countryID",group.equal = c("loadings"))
fit_scalar <- cfa(model = reduced_mod,group.equal = c("loadings","intercepts"))
#Compare fit statistics
compareFit(scalar = fit_scalar,metric = fit_metric,config = fit_no_restraint)
解决方法
您似乎想要多级测量不变性。您应该使用 measEq.syntax()
包中的 semTools
:
## ---------------------
## Multilevel Invariance
## ---------------------
## To test invariance across levels in a MLSEM,specify syntax as though
## you are fitting to 2 groups instead of 2 levels.
mlsem <- ' f1 =~ y1 + y2 + y3
f2 =~ y4 + y5 + y6 '
## metric invariance
syntax.metric <- measEq.syntax(configural.model = mlsem,meanstructure = TRUE,ID.fac = "std.lv",sample.nobs = c(1,1),group = "cluster",group.equal = "loadings")
## by definition,Level-1 means must be zero,so fix them
syntax.metric <- update(syntax.metric,change.syntax = paste0("y",1:6," ~ c(0,NA)*1"))
## save as a character string
mod.metric <- as.character(syntax.metric,groups.as.blocks = TRUE)
## convert from multigroup to multilevel
mod.metric <- gsub(pattern = "group:",replacement = "level:",x = mod.metric,fixed = TRUE)
## fit model to data
fit.metric <- lavaan(mod.metric,data = Demo.twolevel,cluster = "cluster")
summary(fit.metric)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。