Ordinal estimation and missigness

638 views
Skip to first unread message

Sabeeh Baig

unread,
Jul 25, 2018, 8:03:28 PM7/25/18
to lavaan
All,

I am estimating a number of CFA models with 9 ordinal indicators. The sample size is ~700 with incomplete response patterns for ~50 of those participants. I've handled missingess of this sort with FIML in the past, but I also didn't need to specify the indicators as ordinal or I was using IRT/IFA when I did. My reading of the literature suggests that incorporating this type of missingness while treating the indicators as ordinal requires the use of WLSMV (or some variant) and multiple imputation. So call me extremely surprised when I used the "direct" option for missingness and treated the indicators as ordinal using WLSMV in lavaan. Can someone please clarify what exactly is the "direct" option doing at a technical level? If there's a paper that I can look at that, then that'd be great as well.

Here's some estimation output if you're interested, with ordinal indicators, WLSMV, and direct missingness:

unidim.cfa.fit <- cfa(model = unidim.cfa, data = rct1[, c(94:96, 98:103)], std.lv = T, ordered = names(rct1[, c(94:96, 98:103)]), missing = "direct")

> Warning messages:
1: In lav_options_set(opt) :
  lavaan WARNING: information will be set to “expected” for estimator = “DWLS”
2: In lav_data_full(data = data, group = group, cluster = cluster,  :
  lavaan WARNING: some cases are empty and will be ignored:
  216 226 231 268 277 383 501 555 591 664 672 675 693 695 700 710

> unidim.cfa.fit
lavaan 0.6-2 ended normally after 19 iterations

  Optimization method                           NLMINB
  Number of free parameters                         45

                                                  Used       Total
  Number of observations                           703         719
  Number of missing patterns                        18

  Estimator                                       DWLS      Robust
  Model Fit Test Statistic                     645.673     694.342
  Degrees of freedom                                27          27
  P-value (Chi-square)                           0.000       0.000
  Scaling correction factor                                  0.944
  Shift parameter                                           10.072
    for simple second-order correction (Mplus variant)

Here's some estimation output if you're interested, with ordinal indicators, WLSMV, and default missingness:

unidim.cfa.fit <- cfa(model = unidim.cfa, data = rct1[, c(94:96, 98:103)], std.lv = T, ordered = names(rct1[, c(94:96, 98:103)]))

unidim.cfa.fit
lavaan 0.6-2 ended normally after 12 iterations

  Optimization method                           NLMINB
  Number of free parameters                         45

                                                  Used       Total
  Number of observations                           655         719

  Estimator                                       DWLS      Robust
  Model Fit Test Statistic                     495.420     756.449
  Degrees of freedom                                27          27
  P-value (Chi-square)                           0.000       0.000
  Scaling correction factor                                  0.664
  Shift parameter                                           10.727
    for simple second-order correction (Mplus variant)

The behavior seems like what I'm expecting, but I'm not aware of what's going on under the hood technically, which makes me really uneasy about trying to interpret these results.

Cheers,


Sabeeh

Jeremy Miles

unread,
Jul 27, 2018, 5:03:47 PM7/27/18
to lav...@googlegroups.com

--
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.
--
--
My employer has nothing to do with this email. 

Terrence Jorgensen

unread,
Jul 29, 2018, 7:27:03 PM7/29/18
to lavaan
So call me extremely surprised when I used the "direct" option for missingness and treated the indicators as ordinal using WLSMV in lavaan. Can someone please clarify what exactly is the "direct" option doing at a technical level? 

That surprises me as well.  From the ?lavOptions help page description of the missing= argument, "direct" is merely an alias for "fiml".  Have you tried missing = "pairwise" to see if that produces the "direct" behavior?

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

Yves Rosseel

unread,
Jul 30, 2018, 5:32:32 AM7/30/18
to lav...@googlegroups.com
This looks like a (small) bug: if you explicitly set the estimator to
"WLSMV", you get the error message

Error in lav_options_set(opt) :
lavaan ERROR: missing="ml" is not allowed for estimator MLM, MLMV,
GLS, ULS, ULSM, ULSMV, DWLS, WLS, WLSM, WLSMV, PML

but without setting it explicitly, it is still set to the value
'default' when the check is done, thereby missing it.

But even if you specify missing = "ml", (or "direct" or "fiml"), lavaan
will do missing = "pairwise" anyway, because in the (categorical) code,
I just check for missing != "listwise". The only alternative (at least
for WLS and friends) is missing = "pairwise".

I will fix this after my holidays (end of august).

Yves.

On 07/30/2018 01:27 AM, Terrence Jorgensen wrote:
> So call me extremely surprised when I used the "direct" option for
> missingness and treated the indicators as ordinal using WLSMV in
> lavaan. Can someone please clarify what exactly is the "direct"
> option doing at a technical level?
>
>
> That surprises me as well.  From the ?lavOptions help page description
> of the missing= argument, "direct" is merely an alias for "fiml".  Have
> you triedmissing = "pairwise" to see if that produces the "direct" behavior?
>
> Terrence D. Jorgensen
> Postdoctoral Researcher, Methods and Statistics
> Research Institute for Child Development and Education, the University
> of Amsterdam
> UvA web page: http://www.uva.nl/profile/t.d.jorgensen
>
> --
> 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
> <mailto:lavaan+un...@googlegroups.com>.
> To post to this group, send email to lav...@googlegroups.com
> <mailto:lav...@googlegroups.com>.

Yves Rosseel

unread,
Jul 31, 2018, 3:10:54 PM7/31/18
to lav...@googlegroups.com
This is now fixed in dev 0.6-3.1286. An error is produced if missing =
"fiml" (or "direct" or "ml"), while (part of) the data is categorical.

In addition, I have update the (very outdated) missing= entry in the man
page of lavOptions.

Yves.

On 07/30/2018 01:27 AM, Terrence Jorgensen wrote:
> So call me extremely surprised when I used the "direct" option for
> missingness and treated the indicators as ordinal using WLSMV in
> lavaan. Can someone please clarify what exactly is the "direct"
> option doing at a technical level?
>
>
> That surprises me as well.  From the ?lavOptions help page description
> of the missing= argument, "direct" is merely an alias for "fiml".  Have
> you triedmissing = "pairwise" to see if that produces the "direct" behavior?
>
> Terrence D. Jorgensen
> Postdoctoral Researcher, Methods and Statistics
> Research Institute for Child Development and Education, the University
> of Amsterdam
> UvA web page: http://www.uva.nl/profile/t.d.jorgensen
>
> --
> 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
> <mailto:lavaan+un...@googlegroups.com>.
> To post to this group, send email to lav...@googlegroups.com
> <mailto:lav...@googlegroups.com>.
> Visit this group at https://groups.google.com/group/lavaan.
> For more options, visit https://groups.google.com/d/optout.

--
Yves Rosseel -- http://www.da.ugent.be
Department of Data Analysis, Ghent University
http://lavaan.org
Reply all
Reply to author
Forward
0 new messages