CFA with ordinal data

81 views
Skip to first unread message

Leah Kelly

unread,
Sep 11, 2018, 2:23:24 PM9/11/18
to lavaan
I am totally new to CFA, and am trying to use lavaan CFA for my master's thesis, which measures how disposition to risk-taking affects marijuana usage. I have 6 likert-scale variables (5-point) measuring risk-taking, and I am running CFA with two latent variables. All variables in my model come from survey data and are discrete, and each variable in my model is binary aside from the manifest items used for factor analysis, which as I said are on a 5-point scale. My data is highly non-normal and therefore I do not want to treat my risk-taking vars as continuous. All variables are ordered, and I have not provided any weights.

 Here is my model: 

myModel = '
# 1. latent variable definitions
cfaFA.score1 =~ RSK.kick.dangerous + RSK.test.risky + RSK.do.fright
cfaFA.score2 =~ RSK.frnd.exciting + RSK.explore.strange + RSK.break.rule 

# 2. regression
MJ.try.if.legal ~ cfaFA.score1+cfaFA.score2+MJ.rsk.try.1or2+female+age.18.over+race.hispanic+race.black+pop.dens.med+pop.dens.high+geo.northeast+geo.south+geo.northcentral+father.edu.hs.grad+father.edu.clg.grad+mother.edu.hs.grad+mother.edu.clg.grad+hshld.father+hshld.mother+hshld.sib+money.other.11to50.week+money.other.over50.week+pol.belief.cons+pol.belief.lib
'

Here is my CFA call: 
  cfaFA = cfa(myModel, data = synth, ordered = ord.vars)

I know that lavaan CFA uses WLS estimator when variables are set as ordered. What I am unclear on is:

1) What exactly are the steps of the CFA function in this case? I need to understand this well to explain it in my thesis. What does it mean that the "estimator" is WLS - is this the regression type, or is WLS somehow used in estimating the latent factors? 
2) What is the benefit of WLS over unweighted least squares? 
3) How does the program calculate weights if no weight matrix is input?

Terrence Jorgensen

unread,
Sep 12, 2018, 5:57:16 PM9/12/18
to lavaan
1) What exactly are the steps of the CFA function in this case? I need to understand this well to explain it in my thesis. What does it mean that the "estimator" is WLS - is this the regression type, or is WLS somehow used in estimating the latent factors? 
2) What is the benefit of WLS over unweighted least squares? 
3) How does the program calculate weights if no weight matrix is input?


See also:


Terrence D. Jorgensen
Postdoctoral Researcher, Methods and Statistics
Research Institute for Child Development and Education, the University of Amsterdam


Leah Kelly

unread,
Sep 18, 2018, 2:09:14 PM9/18/18
to lav...@googlegroups.com
Hi Terrence, 

Thank you for your response, I understand the issue better now!

1. I still have a question about how the covariate (control variable) estimates in my regression are calculated. When I use WLS vs ULS, my parameter estimates for the latent factors change, but my parameter estimates for the model covariates are the same. Does this indicate that WLS is used to calculate parameters but OLS is used for the regression?

2. Are the parameter estimates of the cfa() function the coefficients? When you look at the results of parameterEstimates(fit, standardized=TRUE) you can see a column std.all. Is that column the coefficient?

--
You received this message because you are subscribed to the Google Groups "lavaan" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lavaan+un...@googlegroups.com.
To post to this group, send email to lav...@googlegroups.com.
Visit this group at https://groups.google.com/group/lavaan.
For more options, visit https://groups.google.com/d/optout.

Terrence Jorgensen

unread,
Sep 24, 2018, 5:53:42 AM9/24/18
to lavaan
Does this indicate that WLS is used to calculate parameters but OLS is used for the regression?

No.  That might differ too, if you set fixed.x = FALSE (the default is TRUE), but not necessarily.  Different estimators can arrive at the same results (e.g., OLS vs. ML estimates of multiple-regression slopes).

2. Are the parameter estimates of the cfa() function the coefficients? When you look at the results of parameterEstimates(fit, standardized=TRUE) you can see a column std.all. Is that column the coefficient?

Yes.
Reply all
Reply to author
Forward
0 new messages