Stepwise imputation for marginal model based on previous residuals

Updated 16 June 2018


There is a mistake in the handling of seeds in version 11 of the MISTEP macro when using the BY= facility. This is not a problem in the previous version 9 and earlier versions. When treatment is used as the BY= variable this can lead to too small SED for the treatment differences, and as a result inflated significance values. This erroneous version was in the file MISTEP20180327.

The corrected version MISTEP12.SAS in s available in the download below..

Quick summary

The macro MIStep duplicates many of the facilities in MONOTONE REG statement in proc MI, but adds the facility to regress on previous residuals rather than previous absolute values. This allows it to fit marginal methods such as J2R and CIR, and Causal (White et al) using an efficient stepwise algorithm.
The macro also allows imputation under models which include  treatment switching. So can be used for imputation based on post-withdrawal experience.

There is a wrapper macro MIStepWrap which allows one do repeated calls to the MISTEP macro from a single macro call, which makes routine use much simpler.

Includes an MIAnalyze macro that fits a univariate ANOVA model and summarises least-squares means and their differences using Rubin’s rules. Multiple calls are appended to form a single dataset for comparing methods.


Requires parallel data format, as provided by the BUILD macro supplied with the MyMCMC macro.
Requires previous fixing of any intermediate missing data


The following files are contained in a zip file downloaded as MISTEP20180614

1) MIStep_explained02.pdf. An introduction to the theory behind using previous residuals, rather than previous absolute values, to generate marginal reference-based imputations such as Jump to Reference (J2R). This also explains possible uses for the macro and results of the example program below.
2) The SAS code for the macro. The header includes a detailed description and development history. Main update is BY= now allows different numbers of factor levels in different BY groups. This is useful for follow-on models where data can be sparse.

3) A SAS macro that is used the examples to run an ANCOVA analysis and summarise across imputed data sets using Rubin’s rules.
4) and mistep_demo10-results.html. Example of using the macro.s on the DIA working group example data set. This includes standard MAR, J2R, CIR, OLCMCF, Casual with K0=0.5 and also with K1=0.5 and separate correlation (shared variance) as examples.
5) and GSKTest5_1-results.html. Program code and output for the same examples using the GSK 5 macros showing similar values based of 1000 imputations in both cases.

6) The SAS code for wrapper macro. Header includes details.

7) and MIStepWrap_demo10-results.pdf. The same examples as MIStep_demo9 which can be run more easily using the wrapper. Results vary due to different seeds.

8) and PSI_Wrap2-results. Example of using the wrapper to run imputation models based on post treatment withdrawal experience.

This page was written by James Roger ( ).

Comments are closed.