Well, the two models are nested at the covariance level, but not nested
at the parameter level. As the SatorraBentler2010 method requires the
fitting of one model with parameter values from the other, it does not
surprise me that it goes wrong somewhere (although a warning of some
sorts would have been welcome).
In general, lavTestLRT was not designed to handle models that are not
nested at the parameter level. The 'safer' way to use lavTestLRT is to
convert the models in such a way so that they become nested at the
parameter level. For example:
mod2<- 'f1 =~ I1 + I2 + I4 + I6+ I9 + I11 + I12
f2 =~ I3 + I5 + I7 + I8 + I14'
fit2 = sem(mod2, data=mysample, ordered=colnames(mysample),
std.lv = TRUE)
mod3 <- 'f1 =~ I1 + I2 + I4 + I6 + I9 + I11 + I12
f2 =~ NA*I3 + I5 + I7 + I8 + I14
f1 ~~ 1*f2'
fit3 <- sem(mod3, data=mysample, ordered=colnames(mysample),
std.lv = TRUE)
lavTestLRT(fit2, fit3, method="satorra.bentler.2010")
Scaled Chi Square Difference Test (method = "satorra.bentler.2010")
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
fit2 53 200.32
fit3 54 681.21 115.66 1 < 2.2e-16 ***
which looks reasonable.
Mplus gives a result, but is it correct? It looks like Mplus is using
the Satorra2000 method (which assumes the models are nested at the
parameter level!!), as I can mimic this by using:
lavaan:::lav_test_diff_Satorra2000(fit2, fit1)
$T.delta
[1] 199.6835
$scaling.factor
[1] 2.408262
$df.delta
[1] 1
But the Satorra2000 method should be identical to the SatorraBentler2010
method, and this is indeed ok for lavaan:
lavTestLRT(fit2, fit3, method="satorra2000")
Scaled Chi Square Difference Test (method = "satorra.2000")
Df AIC BIC Chisq Chisq diff Df diff Pr(>Chisq)
fit2 53 200.32
fit3 54 681.21 115.56 1 < 2.2e-16 ***
Yves.