Shift Value for MCMC imputation in Tipping Point Analysis

This is a continuation of the previous article, Tipping Point Analysis in Multiple Imputation Using SAS. In the last post, we talked about the tipping point analysis in monotone imputation, but how to implement TPA in MCMC imputation since the MNAR statement can only support the shift adjustment in monotone and FCS.

Before that, let's have a look at the process of imputation and shift adjustment in the monotone method. By default, the missing values are imputed sequentially in the order specified in the VAR statement. For example, the following MI procedure uses the regression method to impute each variable by its previous variables, which means variable week8 is imputed by effects from basval to week6, and variable week6 is imputed by effects from basval to week4. The variable basval is not imputed since it is the leading variable in the VAR statement. And you can also specify difference imputation methods in monotone statement for each variable, more details can be found in the SAS documentation

proc mi data=low1_wide seed=12306 nimpute=10 out=imp_mnar2;
    class trt;
    by trt;
    var basval week1 week2 week4 week6 week8;
    monotone reg;
    mnar adjust (week8 / shift=-1 adjustobs=(trt='1'));
    mnar adjust (week8 / shift=1 adjustobs=(trt='2'));

According to above logic, I feel we can manually add shift values instead of MNAR statement in the MCMC imputation by following the steps.

  • Assuming the missingness pattern is arbitary rather than monotone, the MCMC full-data imputation approach is selected.
  • Get the imputed datasets and find out where the missing data is in the original dataset, such as the location of the subject and visit.
  • Adjust the week8 variable with the shift values, for each treatment (if needed).

I have tested the logic by comparing the results of the MNAR statement against manual adjusting. That is identical, so use the SAS code as shown below for MCMC imputation.

proc mi data=low1_wide seed=12306 nimpute=10 out=imp_mcmc;
    mcmc impute=full niter=1000 nbiter=1000;
    by trt;
    var basval week1 week2 week4 week6 week8;
proc sort; by patient _imputation_; run;

proc sort data=low1_wide 
    out=low1_wide_w8(keep=patient week8 rename=(week8=w8)); 
    by patient;
data imp_mcmc_shift;
    merge imp_mcmc low1_wide_w8;
    by patient;
    if missing(w8) then do;
        if trt='1' then week8=week8-1;
        else if trt='2' then week8=week8+1;
    drop w8;

As for the FCS approach, if you want to get the exact shift value, this article (Application of Tipping Point Analysis in Clinical Trials using the Multiple Imputation Procedure in SAS) would be helpful.