1
$\begingroup$

I have repeated-measures data, but due to missingness, I plan to use linear mixed models. My only predictor is Time, and my outcome variable is a Happiness Score measured quantitatively. The goal is to determine whether there is an overall change in happiness over time.

The happiness score was collected through quarterly surveys at four time points, with the following participation numbers:

  • Time 1: 25 participants
  • Time 2: 54 participants
  • Time 3: 70 participants
  • Time 4: 120 participants

Due to substantial missing data, nearly 80% of the responses are incomplete. Many participants attended only one time, particularly at Time 4, which lacks follow-up data. To address this, I filtered the dataset to include only participants who attended at least two time points. After filtering, the participation numbers are as follows:

  • Time 1: 21 participants
  • Time 2: 35 participants
  • Time 3: 46 participants
  • Time 4: 47 participants

This adjustment reduces the missing data to approximately 36%. Is it appropriate to exclude participants who attended only once? And how much missing data is OK?

I appreciate any feedback or suggestions.

$\endgroup$

1 Answer 1

3
$\begingroup$

Anna,

You have asked related questions about this same situation already. The advice given in both threads has been the same - the linear mixed model can accommodate the missing data you have. It is superior to the approach you are asking about here (keeping only individuals with two occasions of data) because the LMM uses all available information in producing estimates.

By restricting your analysis only to those individuals with 2 or more timepoints, you are throwing out invaluable information that the maximum likelihood algorithm can use to produce consistent parameter estimates.

For some evidence of this, I ran a simple simulation in Stata in which I simulated outcome data at four time points with the mean of the outcome increasing by 0.5 points at each occasion (starting with a value of 2 at the first occasion). For each individual in the data I simulated a random intercept that was added to their outcome value at each occasion plus occasion-specific noise (residual). A value of one was given for the standard deviations of the normally-distributed random intercept and residuals.

At each occasion and for a random subset at each occasion, I deleted (replaced with missing) outcome data based on an individual's outcome values at past and future occasions. Then I estimated a mixed model that produced the model-based means (fixed effects) along with the individual random intercept.

Below are the results of three models:

  1. The original large sample of individuals (1,000) for whom I deleted outcome data at each occasion based on values at other occasions.
  2. A random sample of 15% of the original 1,000 individuals for a total sample of 150 individuals (similar in size to your data).
  3. From #2, I restricted the analysis to those individuals with outcome data at 2 or more occasions.

What is worth noting in these results are that the maximum likelihood algorithm does extremely well recovering the original means when the missing mechanism is missing at random (MAR) and even when it has a considerably smaller sample of individuals from the original population.


Variable |    full      small_samp     drop_<=2    
              b/se         b/se         b/se
---------+---------------------------------------   

occ1     |  1.9000934    1.9123226    1.8040988  
         |  .05611979    .14388961     .1420648  
occ2     |  2.6057927     2.775891    2.3888669  
         |  .05106091    .12934208    .15124753  
occ3     |  2.8969641    3.0009244     2.890568  
         |  .05452396    .13981221    .13825122  
occ4     |  3.3484769    3.4969118    3.3929437  
         |  .05651994    .15388278     .1498685  
---------+---------------------------------------   
sigma_u
_cons    |  .95009137    .91408794    .94708586  
         |  .03584215    .09648565    .09488109  
---------+---------------------------------------  
sigma_e      
_cons    |  1.0386012    1.0333093    1.0111591  
         |  .01902859    .05111486    .04884701  
-----------------------------------------------------
N obs    |    2577          376          342
N subj   |    1000          150          116
---------+---------------------------------------

Simulation code:

clear 
set seed 621593

set obs 1000
gen id = _n

*Random intercept
gen zeta = rnormal(0,1)
*Outcome at each timepoint
gen y1 = 2 + zeta + rnormal(0,1)
gen y2 = 2.5 + zeta + rnormal(0,1)
gen y3 = 3 + zeta + rnormal(0,1)
gen y4 = 3.5 + zeta + rnormal(0,1)

*Adding missing data dependent on past and/or future values of y
replace y1 = . if y2 > 2.5 & runiform() < 0.75
replace y2 = . if y1 < 2 & runiform() < 0.75
replace y3 = . if y1 > 3 & runiform() < 0.75
replace y4 = . if y3 > 3.5 & runiform() < 0.75
    
reshape long y, i(id) j(occasion)

qui tab occasion, gen(occ)

xtreg y occ1-occ4, noconstant i(id) mle

*Sample 15% of original 1000 subjects
gsample 15, percent wor cluster(id) gen(in_samp)

xtreg  y occ1-occ4 if in_samp==1, noconstant i(id) mle

*Keep only if subject has 2 or more waves of data
bysort id: egen n_occ = count(y) if in_samp==1
egen pick1id = tag(id) if in_samp==1
tab n_occ if pick1id==1 

keep if n_occ >=2 & in_samp==1
xtreg  y occ1-occ4, noconstant i(id) mle
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.