[R-sig-ME] Best way to handle missing data?

Viechtbauer Wolfgang (STAT) wolfgang.viechtbauer at maastrichtuniversity.nl
Sat Feb 28 01:22:49 CET 2015

> For clarification about FIML (and in support of what Ken explained), my
> professor who does multilevel modeling in SAS tells me that in SAS,
> "FIML"
> refers to a form of maximum likelihood estimation that can accept an
> incomplete data set, and does not omit the observations with missing data
> as must be done in both "ML" and "REML" in nlme.  FIML in SAS handles
> observations in which the data is missing for some variables by just
> using
> those variables for which data is available and integrating over the
> missing values.  This is the default method in SAS PROC MIXED for all
> mixed
> effects models (not just for structural equation modeling).

I hate to be so blunt here, but this is just flat out wrong. proc mixed is great and all, but it doesn't do such a thing. Just like lmer() and lme() (with na.action=na.omit), proc mixed will just delete rows with missing data and then use ML or REML estimation on what's left (which is perfectly fine under certain missing data mechanisms). Consequently, fitting the same model with proc mixed and lmer() or lme() to the same data with missing data yields essentially identical results. One can easily confirm this with a few examples.

> But this
> functionality does not appear to be available in R except for structural
> equation modeling (i.e. package, lavaan).

Indeed, one has to switch to some form of a latent variable model if one wants to use FIML. In R, one should look into 'lavaan' or 'sem' (or 'OpenMX' for the more adventurous). In SAS, one would need to use something like proc calis:


Again, proc mixed does not use FIML. I am really just repeating what Ken has already stated. Also relevant:



More information about the R-sig-mixed-models mailing list