首页 > 解决方案 > 为什么使用综合得分时路径分析会失败?

问题描述

我正在尝试使用lavaan对读取评估数据(无潜在变量)进行路径分析,它通常会因以下错误而失败:

    In lav_model_estimate(lavmodel = lavmodel, lavpartable = lavpartable,  :
      lavaan WARNING: the optimizer warns that a solution has NOT been found

虽然数据比较大,但我发现问题的根源在于模型的这一部分:reading ~ a + b + c

a,都是 0-30 的分数,基本上是 3 组不同的词bc“阅读”是一个基本的综合分数(即,对于每个孩子,“阅读”是相加的a+b+c)。

删除 a、b 或 c 中的任何一个都会产生“成功”的结果,所以我被引导相信模型中的信息过多

a、b 和 c 之间的相关性并不特别明显——介于 0.3 和 0.37 之间。

是否有任何原因导致路径分析会因为使用这样的综合分数而失败,即使分数内部存在差异?

标签: regressioncompositer-lavaan

解决方案


经过一些评论,我想我明白你想要什么。我的建议是假设阅读作为一个潜在变量(这在文献中很常见),运行多组验证性因素分析来测试组间的潜在差异。

model <- "reading =~ a + b + c"

semTools::measurementInvariance(model=model, data=df, group="variable of grouping")

如果测量不变性成立,则您的组在拟合方面没有差异。如果没有,您可以调查它失败的地方(使用 Δχ² 标准或 ΔCFI 标准或其他)。

例子:

HS.model <- ' visual  =~ x1 + x2 + x3'
semTools::measurementInvariance(model=HS.model, data=HolzingerSwineford1939,group="school")

或者,对于 semTools,您可以使用lavaan函数:

library(lavaan)
fit <- cfa(model=model, data=HolzingerSwineford1939, group="school", group.equal=c("loadings")) #then if it holds, group.equal=c("loadings", "intercepts"))

如果您想针对特定参数专门比较两组:

model_free <- "visual  =~ x1 + c(l1,l2)*x2 + x3"
fit_model_free <- cfa(model=model_free, data=HolzingerSwineford1939, group="school")

model_equal <- "visual  =~ x1 + c(l3,l3)*x2 + x3"
fit_model_equal <- cfa(model=model_equal, data=HolzingerSwineford1939, group="school")

lavaan::anova(fit_model_free, fit_model_equal) #LRT test

如果模型不同,则意味着一组中的一个负载与另一组的负载存在统计学上的显着差异。

在这个例子中,没有:

(¬_¬)lavaan::anova(fit_model_free, fit_model_equal)
Chi-Squared Difference Test

                Df    AIC    BIC  Chisq Chisq diff Df diff Pr(>Chisq)
fit_model_free   0 2718.0 2784.8 0.0000                              
fit_model_equal  1 2716.2 2779.3 0.2078    0.20782       1     0.6485

推荐阅读