Este script ilustra cómo realizar una imputación múltiple cuando se supone que los datos faltantes no son aleatorios (MNAR). Comienza creando un conjunto de datos sintético ('Fcs1') con valores faltantes simulados. Luego, utiliza `PROC MI` con la opción `FCS` (Fully Conditional Specification) y la instrucción `MNAR` para ajustar los valores imputados de las variables `y1` e `y2` específicamente para el grupo de tratamiento `Trt='1'`, aplicando desplazamientos (shift).
Data Analysis
Type : CREACIÓN_INTERNA
Los datos se generan artificialmente en el paso DATA `Fcs1` utilizando bucles y funciones de generación de números aleatorios (`rannor`, `ranuni`) para simular datos de ensayos clínicos.
1 Code Block
DATA STEP Data
Explanation : Creación del conjunto de datos `Fcs1`. Genera variables `y0`, `y1`, `y2` basadas en una distribución normal e introduce aleatoriamente valores faltantes (`.`) para `y1` o `y2`.
Copied!
data Fcs1;
do Trt=0 to 1;
do j=1 to 5;
y0=10 + rannor(99);
y1= y0 + 0.9*Trt + rannor(99);
y2= y0 + 0.9*Trt + rannor(99);
if (ranuni(99) < 0.3) then y1=.;
else if (ranuni(99) < 0.3) then y2=.;
output;
end; end;
do Trt=0 to 1;
do j=1 to 45;
y0=10 + rannor(99);
y1= y0 + 0.9*Trt + rannor(99);
y2= y0 + 0.9*Trt + rannor(99);
if (ranuni(99) < 0.3) then y1=.;
else if (ranuni(99) < 0.3) then y2=.;
output;
end; end;
drop j;
run;
1
DATA 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
ELSEIF (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
ELSEIF (ranuni(99) < 0.3) THEN y2=.;
18
OUTPUT;
19
END; END;
20
drop j;
21
RUN;
2 Code Block
PROC PRINT
Explanation : Muestra las primeras 10 observaciones del conjunto de datos generado para verificación.
Copied!
proc print data=Fcs1(obs=10);
var Trt Y0 Y1 Y2;
title 'First 10 Obs in the Trial Data';
run;
1
PROC PRINTDATA=Fcs1(obs=10);
2
var Trt Y0 Y1 Y2;
3
title 'First 10 Obs in the Trial Data';
4
RUN;
3 Code Block
PROC MI Data
Explanation : Ejecuta la imputación múltiple. Utiliza el método `FCS` con 25 iteraciones. La instrucción `MNAR` aplica un ajuste (desplazamiento de -0.4 para `y1` y -0.5 para `y2`) únicamente para las observaciones donde `Trt='1'`, simulando un sesgo para los datos faltantes.
Copied!
proc mi data=Fcs1 seed=52387 out=outex16;
class Trt;
fcs nbiter=25 reg( /details);
mnar adjust( y1 /shift=-0.4 adjustobs=(Trt='1'))
adjust( y2 /shift=-0.5 adjustobs=(Trt='1'));
var Trt y0 y1 y2;
run;
1
PROC MIDATA=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;
7
RUN;
4 Code Block
PROC PRINT
Explanation : Muestra las primeras 10 observaciones del conjunto de datos de salida `outex16`, que contiene los datos imputados.
Copied!
proc print data=outex16(obs=10);
var _Imputation_ Trt y0 y1 y2;
title 'First 10 Observations of the Imputed Data Set';
run;
1
PROC PRINTDATA=outex16(obs=10);
2
var _Imputation_ Trt y0 y1 y2;
3
title 'First 10 Observations of the Imputed Data Set';
4
RUN;
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
Related Documentation
Aucune documentation spécifique pour cette catégorie.
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.