# Fraction of Missing Information with linear mixed models

I have a daily diary dataset (140obs for 110 persons) which I've analysed using a random slopes and intercept linear mixed model (using FIML). The model has 1 dependent variable, and 5 fixed effects. However, the dataset contains quite a bit of missing data, so I would like to calculate the fraction of missing information using FIML, as specified in the paper by Savalei & Rhemtulla (2012).

However, my mathematical background is such that I really don't understand the specifics mentioned there, so although i'm getting quite good at coding in lme4, I really don't know what I should be doing exactly. I was hoping for some R package to help me out, but I can't find any other then SEM-related packages. As my knowledge of SEM is also close to zero, I have no idea if I can use them (e.g. lavaan, or the fmi function) to get the fraction of missing information for my model.

To be concrete, my question is: is there an easy way of calculating the fraction of missing information for the parameters in a linear mixed model, and if so with what package/software, or can somebody help me understand how to code the procedure suggested by Savalei & Rhemtulla? (for clarity: they describe their step-by-step procedure on page 484 and 485, An estimate of fraction of missing information via FIML

The code for a simulated dataset is as follows:

library(lme4)
library(mice)
set.seed(1)
# simulate dataset
Data <- data.frame(
ID = rep(1:110, each=140),
day = rep(1:28, each=5),
group = rep(1:2, each= 140*55),
pos_af = runif(15400) * 100
)
Data$$ID <- as.factor(Data$$ID)
Data$$group <- as.factor(Data$$group)
# create missingness
rand.num <- sample(x = 1:15400, size = 15400 * 0.2, replace = FALSE) # 20% missingness
Data\$pos_af[rand.num] <- NA
# Mixed model
model <- lme4::lmer(pos_af ~ group + day + group * day + I(day^2) + group * I(day^2) +
(day|ID), data = Data, REML = FALSE)
## impute
imp <- mice::mice(Data)
## Fit models for each imputed dataset. Here you can add the random effects you want, etc
fit <- with(data = imp, exp = lme4::lmer(pos_af ~ group + day + group * day + I(day^2) + group * I(day^2) +
(day|ID), REML = FALSE))
## pool results
poolFit <- mice::pool(fit)
coef(summary(model))
poolFit



With the true dataset the difference between the estimates of the model on the true data vs mice data is a lot larger (factors 10 for example), but these results illustrate my point. The t-values are all over the place, and the estimates are also quite different... Or am I doing something wrong?

• @Krantz, I've changed the original questions so that it now shows the code to simulate the data. Although in the original data the differences are larger, it illustrates the problem I still have: the estimates obtained through mice are quite different from the ones of the original analysis. I'm assuming therefor I can't use the fmi from the mice output for the estimates of the original analysis...any suggestions what I can do would be really appreciated! – Daan Ornée Apr 12 '19 at 10:43

Fraction of missing information $$λ$$ is a useful measure of the impact of missing data on the quality of estimation of a particular parameter. This measure can be computed for all parameters in the model, and it communicates the relative loss of efficiency in the estimation of a particular parameter due to missing data.

Using MICE, $$λ$$ can be easily computed as follows:

## Set seed
set.seed(20140619)
## Raw data
data(nhanes)
nhanes
## Impute
imp <- mice::mice(nhanes)
## Fit models for each imputed dataset. Here you can add the random effects you want, etc
fit <- with(data = imp, exp = lm(bmi ~ hyp + chl))
## Pool results
poolFit <- mice::pool(fit)
## Print: The λ for each coefficient is shown.
poolFit

## Call: pool(object = fit)
##
## Pooled coefficients:
## (Intercept)         hyp         chl
##    21.97735    -0.60095     0.02799
##
## Fraction of information about the coefficients missing due to nonresponse:
## (Intercept)         hyp         chl
##      0.2373      0.2159      0.2855


Let me know if this is not what you want.

• Thank you so much @Krantz ! I think I got it working with my dataset, however I now have two additional questions: the output shows both lambda and fmi, which i assume stand for fraction of missing information. Which is the correct one? Furthermore, the parameter estimates I got now are different from the ones I got from the original data. Does that mean the fmi/lambda only relate to that specific estimate value? and why are they different in the first place, is that because I've now conducted an analysis with Mult.imp instead of FIML? – Daan Ornée Apr 1 '19 at 11:06
• Glad that my answer helped solve your problem. Regarding your two additional questions, could you share a reproducible example? See here: stackoverflow.com/questions/5963269/…. – Krantz Apr 1 '19 at 11:42
• Just added the code, is it ok or do you need more? (first time to add code online) – Daan Ornée Apr 2 '19 at 11:40