Path analysis with missing data and dichotomous exogenous variables in lavaan I am currently working on a path analysis in lavaan with many predictors, some of which are dichotomous. My sample size is 386 and I'm doing an exploratory study with many potential predictors variables (about 40) and three outcome variables. All of the dichotomous variables are assumed to be only exogenous, whereas some continuous variables are hypothesized to be mediators.
My original plan was to use FIML to handle missing data, but I’ve realized that there are some drawbacks to doing so: 1). if dichotomous exogenous variables are included in the likelihood, it assumes that they are normally distributed and results in an error, 2). if exogenous variables are treated as fixed and not included in the likelihood, missing values are excluded listwise from the analysis, and 3). one possible solution is to include only continuous exogenous variables in the likelihood to handle their missing data (by estimating their variances/covariances), but this adds many parameters to the model and thus reduces the complexity of the model that I can estimate given my sample size.
As I’ve been trying to figure this out, I’ve also become a bit confused about whether it is necessary to include estimates for covariances between all of the exogenous variables in a lavaan path model. Kline (2015) says that this is generally part of a path model, but I’ve noticed that when these paths are specified in lavaan it greatly increases the number of parameters estimated in the model compared to when they are not specified. If I specify “fixed.x = TRUE” the lavaan help info says "the exogenous ‘x’ covariates are considered fixed variables and the means, variances and covariances of these variables are fixed to their sample values”, which I think means that lavaan doesn’t estimate them but I could find out their values through descriptive statistics, which would technically still be part of the path model? My question here is whether it is necessary/required to estimate all of the exogenous variances/covariances through lavaan (and thus greatly increasing model complexity) or whether I can treat them as fixed and just use descriptive stats to fill in correlations between exogenous variables.
Finally, if I treat the exogenous variables as fixed in the path analysis (which would give me a lot more power to include many variables in the analysis), missing data will be excluded listwise so it seems that it would be better to use a missing data imputation technique. I have the SPSS missing data module and am tempted to use expectation maximization (EM) as it would be much easier to run, but I also know that multiple imputation is better. Note that only 2.34% of the values of the summary scores are missing (summary scores were calculated as the mean of non-missing items). Do you think EM for missing summary scores would be sufficient here or should I do multiple imputation?
Thank you very much!


1). if dichotomous exogenous variables are included in the likelihood, it assumes that they are normally distributed and results in an error

Treating exogenous dichotomous variables as continuous does not result in bias of anything important for inference.  You might get a lavaan warning about the asymptotic sampling covariance matrix of model parameters having a near-zero eigenvalue, because the mean and variance of dichotomous variables are based on the same information:
https://en.wikipedia.org/wiki/Binomial_distribution
If there are no other signs of identification problems (e.g., unable to estimate SEs), you can ignore the warning.

2). if exogenous variables are treated as fixed and not included in the likelihood, missing values are excluded listwise from the analysis

In lavaan you can set missing = "FIML.x" to use the same approach for exogenous predictors (or you can simply set fixed.x=FALSE and perhaps use a robust estimator = "MLR" to account for some nonnormality when SEs and test stats are calculated.

3). one possible solution is to include only continuous exogenous variables in the likelihood to handle their missing data (by estimating their variances/covariances), but this adds many parameters to the model and thus reduces the complexity of the model that I can estimate given my sample size.

You can try using the regsem package to estimate (with FIML) with a penalty on the many exogenous effects.  Look for their vignette to see how it works (with lavaan syntax):  https://cran.r-project.org/package=regsem
Note that you first fit the model in lavaan, then pass that to regsem::cv_regsem().

I think means that lavaan doesn’t estimate them but I could find out their values through descriptive statistics, which would technically still be part of the path model?

Yes, they are still in the model matrices, but they are not in the parameter vector that the optimizer seeks a solution for.  They are fixed (to their sample stats), which you can see after model estimation using lavInspect(fit, "sampstat")

My question here is whether it is necessary/required to estimate all of the exogenous variances/covariances through lavaan (and thus greatly increasing model complexity) or whether I can treat them as fixed and just use descriptive stats to fill in correlations between exogenous variables.

They should not be restricted (which would imply they are random variables with a joint distribution to be estimated, rather than exogenous with distribution fixed to the observed one).  Even if you set fixed.x=FALSE, the sem() function will automatically saturate the exogenous variables.  You need to be careful about fixing things yourself when the exogenous variables are incomplete, because FIML results can differ from listwise/pairwise deletion.

Do you think EM for missing summary scores would be sufficient here or should I do multiple imputation?

A single imputation treats the estimates of missing values as known, making SEs too small, which makes test stats too large, which makes p values too small, inflated Type I error rates.  Multiple imputation allows the uncertainty about the estimates of missing values to be incorporated into the SE estimates.  The semTools package automates pooling results across imputations, see ?lavaan.mi and class?lavaan.mi help pages.  Unfortunately, this will not cooperate with regsem, and I expect it would be difficult to try to make it cooperate. (e.g., penalty could lead to different parameters being shrunk to zero across imputations, so how to pool those?  Maybe model averaging?)
