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).
Análisis de datos
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 Bloque de código
DATA STEP Data
Explicación : 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`.
¡Copiado!
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 Bloque de código
PROC PRINT
Explicación : Muestra las primeras 10 observaciones del conjunto de datos generado para verificación.
¡Copiado!
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 Bloque de código
PROC MI Data
Explicación : 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.
¡Copiado!
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 Bloque de código
PROC PRINT
Explicación : Muestra las primeras 10 observaciones del conjunto de datos de salida `outex16`, que contiene los datos imputados.
¡Copiado!
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;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : SAS SAMPLE LIBRARY, NAME: MIEX16, PRODUCT: STAT
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.