First, thanks to those who gave me useful input on this project in a previous thread on this site.I've got a new-ish question at this point on the mechanics of MI (using MI via chained equations):
I've got three sets of variables that I can reasonably assume to be unrelated. Lets call set 1 "conditions", set 2 "additions", and set 3 "management". I've also got an outcome.
My dataset is all randomized controlled trials, and it is reasonable to assume that conditions, additions, and management are all orthogonal to one another -- if there is any correlation between the three, it is spurious in the sense that it wouldn't predict new data, and is essentially a fluke. (This would not hold with observational data).
Each of these sets of variables has missing data (except the outcome). Because the sets of variables are orthogonal to one another, I set up three separate imputation models for the three sets. After all, how could data on "management" predict "conditions"? Any extra information here is spurious.
But then I read a few papers that said that I should put the outcome in the imputation model. Thinking about it, I see why it makes sense. But now I've got a problem: "management" predicts outcome, and outcome can predict "conditions." My orthogonality assumption is trashed, isn't it?
The reason that I specified the three separate models is that observations are clustered by "conditions" and "additions", and these two levels overlap. It was much more convenient to model them separately than to make some complicated multi-level imputation model.
So, beyond requests for general advice on how to think about this sort of problem, my specific question is the following: if the only way that the three sets of variables are correlated is through the outcome, and I control for the outcome in the imputation models, can I proceed as I have been doing without biasing my imputations away from their true (or optimal in some sense) values?
If not, do existing software packages handle MI with this sort of multilevel data? I've been writing my own code (I usually refuse to use canned software until I've implemented something myself), but I feel like I get the mechanism enough to jump to something canned if I have to.
Thanks in advance.