I am looking for a way to compare a method I have developed for multiple imputation for lifecourse data (essentially categorical time-series with relatively low rates of transition; see www.ul.ie/sociology/pubs/wp2012-01.pdf and www.ul.ie/sociology/pubs/wp2013-01.pdf) with Patrick Royston's ice and Stata's mi impute. It is very difficult to set up analogous models for real data, so I'm trying a comparison with very simple simulated data (a zero-order Markov process for the state variable, with missingness imposed at random), where the best imputation model is this:
Xt = f(Xt-1, Xt+1)
Given the data in wide format, and say T=5, my attempt at this with =mi impute= is as follows:
For ICE, as follows:
This appears to work in each case, but (particularly for mi impute) it is pretty verbose code (particularly as the length of the sequence increases).
My question is whether there is a more concise way to specify such a model?
Xt = f(Xt-1, Xt+1)
Given the data in wide format, and say T=5, my attempt at this with =mi impute= is as follows:
Code:
mi set flong mi register imputed m* mi impute chained /// (mlogit, omit( i.m3 i.m4 i.m5 )) m1 /// (mlogit, omit( i.m4 i.m5 )) m2 /// (mlogit, omit(i.m1 i.m5 )) m3 /// (mlogit, omit(i.m1 i.m2 )) m4 /// (mlogit, omit(i.m1 i.m2 i.m3 )) m5 , add(10) augment
Code:
ice m.m1 m.m2 m.m3 m.m4 m.m5 /// , saving(ice5, replace) persist m(10) /// eq(m1: i.m2 , /// m2: i.m1 i.m3, /// m3: i.m2 i.m4, /// m4: i.m3 i.m5, /// m5: i.m4)
My question is whether there is a more concise way to specify such a model?