CFA using MLR estimator and ordinal data

173 views
Skip to first unread message

Patrycja Klimek

unread,
Apr 14, 2020, 7:22:20 PM4/14/20
to lavaan
Hello,
I want to conduct a 2-factor CFA with ordinal data(due to nonnormality) and an MLR estimator; however, lavaan apparently does not support the use of MLR with ordinal data---I am wondering when/if that may be available?
I had originally conducted the CFA using the WLSMV estimator; however, forums have suggested the use of the MLR estimator to generate BIC and to compare the fit of 1- and 2-factor models. Does anyone have any suggestions to work around this restriction? How else can I compare these models using best practices? They would not be considered nested models, therefore the chi-square difference test wouldn't work.

Thank you in advance!
Patrycja

Terrence Jorgensen

unread,
Apr 16, 2020, 9:00:22 AM4/16/20
to lavaan

I want to conduct a 2-factor CFA with ordinal data(due to nonnormality)

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.

lavaan apparently does not support the use of MLR with ordinal data---I am wondering when/if that may be available?

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.
 
I had originally conducted the CFA using the WLSMV estimator; however, forums have suggested the use of the MLR estimator to generate BIC and to compare the fit of 1- and 2-factor models. Does anyone have any suggestions to work around this restriction? How else can I compare these models using best practices? They would not be considered nested models, therefore the chi-square difference test wouldn't work.

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 versiondevtools::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

Reply all
Reply to author
Forward
0 new messages