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:
- The original large sample of individuals (1,000) for whom I deleted outcome data at each occasion based on values at other occasions.
- A random sample of 15% of the original 1,000 individuals for a total sample of 150 individuals (similar in size to your data).
- 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