Published on :
Statistics CREATION_INTERNE

Documentation Example 16 for PROC MI

This code is also available in: Deutsch Español Français
Awaiting validation
This script illustrates how to perform multiple imputation when missing data are assumed to be Missing Not At Random (MNAR). It begins by creating a synthetic dataset ('Fcs1') with simulated missing values. Then, it uses `PROC MI` with the `FCS` (Fully Conditional Specification) option and the `MNAR` statement to adjust the imputed values of variables `y1` and `y2` specifically for the treatment group `Trt='1'`, by applying shifts.
Data Analysis

Type : CREATION_INTERNE


The data are artificially generated in the DATA step `Fcs1` using loops and random number generation functions (`rannor`, `ranuni`) to simulate clinical trial data.

1 Code Block
DATA STEP Data
Explanation :
Creation of the `Fcs1` dataset. Generates `y0`, `y1`, `y2` variables based on a normal distribution and randomly introduces missing values (`.`) for `y1` or `y2`.
Copied!
1DATA Fcs1;
2 DO Trt=0 to 1;
3 DO j=1 to 5;
4 y0=10 + rannor(99);
5 y1= y0 + 0.9*Trt + rannor(99);
6 y2= y0 + 0.9*Trt + rannor(99);
7 IF (ranuni(99) < 0.3) THEN y1=.;
8 ELSE IF (ranuni(99) < 0.3) THEN y2=.;
9 OUTPUT;
10 END; END;
11 DO Trt=0 to 1;
12 DO j=1 to 45;
13 y0=10 + rannor(99);
14 y1= y0 + 0.9*Trt + rannor(99);
15 y2= y0 + 0.9*Trt + rannor(99);
16 IF (ranuni(99) < 0.3) THEN y1=.;
17 ELSE IF (ranuni(99) < 0.3) THEN y2=.;
18 OUTPUT;
19 END; END;
20 drop j;
21RUN;
2 Code Block
PROC PRINT
Explanation :
Displays the first 10 observations of the generated dataset for verification.
Copied!
1PROC PRINT DATA=Fcs1(obs=10);
2 var Trt Y0 Y1 Y2;
3 title 'First 10 Obs in the Trial Data';
4RUN;
3 Code Block
PROC MI Data
Explanation :
Performs multiple imputation. Uses the `FCS` method with 25 iterations. The `MNAR` statement applies an adjustment (shift of -0.4 for `y1` and -0.5 for `y2`) only for observations where `Trt='1'`, simulating a bias for missing data.
Copied!
1PROC MI DATA=Fcs1 seed=52387 out=outex16;
2 class Trt;
3 fcs nbiter=25 reg( /details);
4 mnar adjust( y1 /shift=-0.4 adjustobs=(Trt='1'))
5 adjust( y2 /shift=-0.5 adjustobs=(Trt='1'));
6 var Trt y0 y1 y2;
7RUN;
4 Code Block
PROC PRINT
Explanation :
Displays the first 10 observations of the output dataset `outex16`, which contains the imputed data.
Copied!
1PROC PRINT DATA=outex16(obs=10);
2 var _Imputation_ Trt y0 y1 y2;
3 title 'First 10 Observations of the Imputed Data Set';
4RUN;
This material is provided "as is" by We Are Cas. There are no warranties, expressed or implied, as to merchantability or fitness for a particular purpose regarding the materials or code contained herein. We Are Cas is not responsible for errors in this material as it now exists or will exist, nor does We Are Cas provide technical support for it.
Copyright Info : SAS SAMPLE LIBRARY, NAME: MIEX16, PRODUCT: STAT