Nonnormality does not imply ordinality. Do your indicators measured using an ordinal (e.g., Likert) scale with only a few categories? If you have 7 or more categories, you can probably just treat them as continuous and use MLR.
No one does, MLR assumes the data are continuous. Mplus misleadingly uses the command ESTIMATOR=MLR to trigger marginal maximum likelihood estimation, developed for IRT models. lavaan also has an experimental estimator="MML" option to request that.
Regardless, the probit model implies a normally distributed latent item response underlying each observed ordinal response. There is no getting around that (latent) normality assumption using frequentist estimators like MML or DWLS(MV). Using Bayesian MCMC estimation, you could specify an alternative to the normal latent item responses, such as a skew-t distribution that allows skew and kurtosis.
Yes they are. A 1-factor model is equivalent to a 2-factor model in which the 2 factor's correlation is fixed to 1 (easier to specify when identifying the model using
std.lv=TRUE). So you can use DWLS and compare those models using
lavTestLRT(). You can verify that they are nested using the semTools function
net(). That requires
installing the current development version:
devtools::install_github("simsem/semTools/semTools")
library(semTools)
myData <- read.table("http://www.statmodel.com/usersguide/chap5/ex5.16.dat")
names(myData) <- c("u1","u2","u3","u4","u5","u6","x1","x2","x3","g")
model1 <- ' f1 =~ u1 + u2 + u3 + u4 + u5 + u6 '
model2 <- '
f1 =~ u1 + u2 + u3
f2 =~ u4 + u5 + u6
'
fit1 <- cfa(model1, data = myData, ordered = paste0("u", 1:6))
fit2 <- cfa(model2, data = myData, ordered = paste0("u", 1:6))
lavTestLRT(fit1, fit2) # compare fit
net(fit1, fit2) # check they are nested
Terrence D. Jorgensen
Assistant Professor, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam