lavaan - 测量不变性
lavaan - measurement Invariance
我想按性别测试公制等效性,但出现错误。
我有以下相关矩阵:
(我如何在控制台中获得输出,为我提供可重现的 covariance/correlation 矩阵和 sds)?
> cor(sub1, use="pairwise.complete.obs")
V24 V25 V52 V53 V54 V37
V24 1.000000000 0.697521674 0.01568641 0.018252279 0.007213654 0.04335144
V25 0.697521674 1.000000000 -0.01564264 0.004665397 -0.015039173 0.04004168
V52 0.015686412 -0.015642643 1.00000000 0.546989009 0.340628957 -0.05174745
V53 0.018252279 0.004665397 0.54698901 1.000000000 0.438693604 -0.07044378
V54 0.007213654 -0.015039173 0.34062896 0.438693604 1.000000000 -0.08113154
V37 0.043351436 0.040041675 -0.05174745 -0.070443778 -0.081131539 1.00000000
V38 0.098512813 0.066579287 -0.05594164 -0.091231815 -0.024566416 0.37069002
V39 0.001098530 0.026309212 -0.06166382 -0.059972262 -0.076980805 0.43970024
V40 0.049227113 0.043209425 -0.04630234 -0.061524717 -0.011688956 0.23091762
SEX -0.041446974 -0.015998972 0.07623627 0.026067738 0.043030238 -0.03215834
V38 V39 V40 SEX
V24 0.09851281 0.00109853 0.04922711 -0.04144697
V25 0.06657929 0.02630921 0.04320942 -0.01599897
V52 -0.05594164 -0.06166382 -0.04630234 0.07623627
V53 -0.09123182 -0.05997226 -0.06152472 0.02606774
V54 -0.02456642 -0.07698080 -0.01168896 0.04303024
V37 0.37069002 0.43970024 0.23091762 -0.03215834
V38 1.00000000 0.17530099 0.48481632 0.13427571
V39 0.17530099 1.00000000 0.23179996 0.01046066
V40 0.48481632 0.23179996 1.00000000 0.24838303
SEX 0.13427571 0.01046066 0.24838303 1.00000000
model3.2 <- 'union =~ V24 + V25
loyality =~ V52 + V53 + V54
experience =~ V37 + V38 + V39 + V40
union ~ loyality + experience
experience ~~ loyality
V37 ~~ V39
V37 ~~ V38
experience ~ SEX
loyality ~ SEX'
现在我想评估男性和女性对工会的看法是否存在差异。
我既尝试了测量不变性命令,也尝试了手动操作。
在这两种情况下我都得到一个错误:
> measurementInvariance(model3.2, data = sub1, group = "SEX")
Error in lav_model_estimate(lavmodel = lavmodel, lavsamplestats = lavsamplestats, :
lavaan ERROR: initial model-implied matrix (Sigma) is not positive definite;
check your model and/or starting parameters in group 1.
In addition: Warning messages:
1: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 1 is not positive-definite
2: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 2 is not positive-definite
> fit3.2b <- cfa(fit3.2 , data=sub1, group="SEX")
Error in Sigma.hat[[g]] : subscript out of bounds
In addition: Warning messages:
1: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 1 is not positive-definite
2: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 2 is not positive-definite
我看过,这是由于我的误差协方差导致的负协方差。但是尽管删除了误差协方差 V37 ~~ V
和 V37 ~~ V38
我还是得到了同样的错误。
问题:
如何评估测量不变性?
如果你简化你的模型,这就是你所拥有的:
model3.2 <- '
测量模型:
union =~ V24 + V25
loyality =~ V52 + V53 + V54
experience =~ V37 + V38 + V39 + V40
结构模型:
experience ~ SEX
loyality ~ SEX
union ~ loyality + experience
当你让他们同时预测同一件事时,(experience ~~ loyalty)
已经暗示了。尝试 运行 使用和不使用它——你会得到同样的结果。
相关残差:
V37 ~~ V39
V37 ~~ V38'
所以它类似于一个中介模型:性预示着经验,而经验又预示着结合。同时,性预示着忠诚,而忠诚又预示着结合。
当您进行测量不变性时,您是在尝试查看模型在各组之间是否大致相同(取决于您要测试的不变性类型)。问题是,对于您指定的模型,您已经在测试组差异。您正在测试以查看经验和忠诚度的潜在构造的均值是否因性别而异。这与您通过测试潜在均值不变性来尝试做的事情是一样的。
您的代码不可重现(SEX
是一个组,因此无法使用相关矩阵重新创建),但我相信这个模型会起作用:
model3.2 <- '
# MEASUREMENT
union =~ V24 + V25
loyality =~ V52 + V53 + V54
experience =~ V37 + V38 + V39 + V40
# STRUCTURAL
union ~ loyality + experience
# CORRELATED RESIDUALS
V37 ~~ V39
V37 ~~ V38'
同样,当您超越测量不变性并继续测试潜在 space 中的不变性时,您可以测试经验和忠诚度的潜在均值是否因性别而异。
我想按性别测试公制等效性,但出现错误。
我有以下相关矩阵:
(我如何在控制台中获得输出,为我提供可重现的 covariance/correlation 矩阵和 sds)?
> cor(sub1, use="pairwise.complete.obs")
V24 V25 V52 V53 V54 V37
V24 1.000000000 0.697521674 0.01568641 0.018252279 0.007213654 0.04335144
V25 0.697521674 1.000000000 -0.01564264 0.004665397 -0.015039173 0.04004168
V52 0.015686412 -0.015642643 1.00000000 0.546989009 0.340628957 -0.05174745
V53 0.018252279 0.004665397 0.54698901 1.000000000 0.438693604 -0.07044378
V54 0.007213654 -0.015039173 0.34062896 0.438693604 1.000000000 -0.08113154
V37 0.043351436 0.040041675 -0.05174745 -0.070443778 -0.081131539 1.00000000
V38 0.098512813 0.066579287 -0.05594164 -0.091231815 -0.024566416 0.37069002
V39 0.001098530 0.026309212 -0.06166382 -0.059972262 -0.076980805 0.43970024
V40 0.049227113 0.043209425 -0.04630234 -0.061524717 -0.011688956 0.23091762
SEX -0.041446974 -0.015998972 0.07623627 0.026067738 0.043030238 -0.03215834
V38 V39 V40 SEX
V24 0.09851281 0.00109853 0.04922711 -0.04144697
V25 0.06657929 0.02630921 0.04320942 -0.01599897
V52 -0.05594164 -0.06166382 -0.04630234 0.07623627
V53 -0.09123182 -0.05997226 -0.06152472 0.02606774
V54 -0.02456642 -0.07698080 -0.01168896 0.04303024
V37 0.37069002 0.43970024 0.23091762 -0.03215834
V38 1.00000000 0.17530099 0.48481632 0.13427571
V39 0.17530099 1.00000000 0.23179996 0.01046066
V40 0.48481632 0.23179996 1.00000000 0.24838303
SEX 0.13427571 0.01046066 0.24838303 1.00000000
model3.2 <- 'union =~ V24 + V25
loyality =~ V52 + V53 + V54
experience =~ V37 + V38 + V39 + V40
union ~ loyality + experience
experience ~~ loyality
V37 ~~ V39
V37 ~~ V38
experience ~ SEX
loyality ~ SEX'
现在我想评估男性和女性对工会的看法是否存在差异。
我既尝试了测量不变性命令,也尝试了手动操作。
在这两种情况下我都得到一个错误:
> measurementInvariance(model3.2, data = sub1, group = "SEX")
Error in lav_model_estimate(lavmodel = lavmodel, lavsamplestats = lavsamplestats, :
lavaan ERROR: initial model-implied matrix (Sigma) is not positive definite;
check your model and/or starting parameters in group 1.
In addition: Warning messages:
1: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 1 is not positive-definite
2: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 2 is not positive-definite
> fit3.2b <- cfa(fit3.2 , data=sub1, group="SEX")
Error in Sigma.hat[[g]] : subscript out of bounds
In addition: Warning messages:
1: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 1 is not positive-definite
2: In lav_samplestats_icov(COV = cov[[g]], ridge = ridge, x.idx = x.idx[[g]], :
lavaan WARNING sample covariance matrix in group: 2 is not positive-definite
我看过,这是由于我的误差协方差导致的负协方差。但是尽管删除了误差协方差 V37 ~~ V
和 V37 ~~ V38
我还是得到了同样的错误。
问题:
如何评估测量不变性?
如果你简化你的模型,这就是你所拥有的:
model3.2 <- '
测量模型:
union =~ V24 + V25
loyality =~ V52 + V53 + V54
experience =~ V37 + V38 + V39 + V40
结构模型:
experience ~ SEX
loyality ~ SEX
union ~ loyality + experience
当你让他们同时预测同一件事时,(experience ~~ loyalty)
已经暗示了。尝试 运行 使用和不使用它——你会得到同样的结果。
相关残差:
V37 ~~ V39
V37 ~~ V38'
所以它类似于一个中介模型:性预示着经验,而经验又预示着结合。同时,性预示着忠诚,而忠诚又预示着结合。
当您进行测量不变性时,您是在尝试查看模型在各组之间是否大致相同(取决于您要测试的不变性类型)。问题是,对于您指定的模型,您已经在测试组差异。您正在测试以查看经验和忠诚度的潜在构造的均值是否因性别而异。这与您通过测试潜在均值不变性来尝试做的事情是一样的。
您的代码不可重现(SEX
是一个组,因此无法使用相关矩阵重新创建),但我相信这个模型会起作用:
model3.2 <- '
# MEASUREMENT
union =~ V24 + V25
loyality =~ V52 + V53 + V54
experience =~ V37 + V38 + V39 + V40
# STRUCTURAL
union ~ loyality + experience
# CORRELATED RESIDUALS
V37 ~~ V39
V37 ~~ V38'
同样,当您超越测量不变性并继续测试潜在 space 中的不变性时,您可以测试经验和忠诚度的潜在均值是否因性别而异。