The script begins with the generation of a synthetic dataset named 'Mono1' containing missing values in the 'y1' variable. Then, it uses PROC MI to impute these missing values. The chosen imputation method is monotone regression with displayed details. Particular consideration is given to Missing Not At Random (MNAR) data on 'y1', modeled according to the treatment group 'Trt' when 'Trt' is equal to '0'. The imputed dataset is saved in 'outex15'. PROC PRINT procedures are used to display an overview of the original and imputed data.
Data Analysis
Type : CREATION_INTERNE
The initial dataset 'Mono1' is created directly in the script via a DATA STEP using random number generation functions (rannor, ranuni). The 'outex15' dataset is the result of the imputation performed by PROC MI.
1 Code Block
DATA STEP Data
Explanation : This DATA STEP block creates the 'Mono1' dataset. It generates observations for two treatment groups (Trt=0 and Trt=1) with 'y0' and 'y1' variables. The 'y1' variable is conditionally made missing (value '.') for approximately 30% of observations, thus simulating a missing data scenario.
Copied!
data Mono1;
do Trt=0 to 1;
do j=1 to 5;
y0=10 + rannor(999);
y1= y0 + Trt + rannor(999);
if (ranuni(999) < 0.3) then y1=.;
output;
end; end;
do Trt=0 to 1;
do j=1 to 45;
y0=10 + rannor(999);
y1= y0 + Trt + rannor(999);
if (ranuni(999) < 0.3) then y1=.;
output;
end; end;
drop j;
run;
1
DATA Mono1;
2
DO Trt=0 to 1;
3
DO j=1 to 5;
4
y0=10 + rannor(999);
5
y1= y0 + Trt + rannor(999);
6
IF (ranuni(999) < 0.3) THEN y1=.;
7
OUTPUT;
8
END; END;
9
10
DO Trt=0 to 1;
11
DO j=1 to 45;
12
y0=10 + rannor(999);
13
y1= y0 + Trt + rannor(999);
14
IF (ranuni(999) < 0.3) THEN y1=.;
15
OUTPUT;
16
END; END;
17
drop j;
18
RUN;
2 Code Block
PROC PRINT
Explanation : This PROC PRINT displays the first 10 observations of the 'Mono1' dataset to provide an overview of the data structure before imputation. Only the 'Trt', 'Y0', and 'Y1' variables are included in the output.
Copied!
proc print data=Mono1(obs=10);
var Trt Y0 Y1;
title 'First 10 Obs in the Trial Data';
run;
1
PROC PRINTDATA=Mono1(obs=10);
2
var Trt Y0 Y1;
3
title 'First 10 Obs in the Trial Data';
4
RUN;
3 Code Block
PROC MI
Explanation : This PROC MI performs multiple imputation of missing values in the 'Mono1' dataset. It uses seed '14823' for reproducibility and generates 15 imputed datasets, stored in 'outex15'. The 'monotone reg' method is specified for monotone regression imputation, with the 'details' option for additional information. The 'mnar' clause indicates that 'y1' is Missing Not At Random, and its model is conditioned on 'Trt' being '0'.
Copied!
proc mi data=Mono1 seed=14823 nimpute=15 out=outex15;
class Trt;
monotone reg (/details);
mnar model( y1 / modelobs= (Trt='0'));
var y0 y1;
run;
Explanation : This PROC PRINT displays the first 10 observations of the imputed dataset 'outex15'. This allows visualizing the results of the multiple imputation performed by PROC MI.
Copied!
proc print data=outex15(obs=10);
title 'First 10 Observations of the Imputed Data Set';
run;
1
2
PROC PRINT
3
DATA=outex15(obs=10);
4
title 'First 10 Observations of the Imputed
5
Data Set';
6
RUN;
7
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.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.