Ce script illustre comment effectuer une imputation multiple lorsque les données manquantes sont supposées ne pas être aléatoires (MNAR). Il commence par créer un jeu de données synthétique ('Fcs1') avec des valeurs manquantes simulées. Ensuite, il utilise `PROC MI` avec l'option `FCS` (Fully Conditional Specification) et l'instruction `MNAR` pour ajuster les valeurs imputées des variables `y1` et `y2` spécifiquement pour le groupe de traitement `Trt='1'`, en appliquant des décalages (shift).
Analyse des données
Type : CREATION_INTERNE
Les données sont générées artificiellement dans l'étape DATA `Fcs1` à l'aide de boucles et de fonctions de génération de nombres aléatoires (`rannor`, `ranuni`) pour simuler des données d'essai clinique.
1 Bloc de code
DATA STEP Data
Explication : Création du jeu de données `Fcs1`. Génère des variables `y0`, `y1`, `y2` basées sur une distribution normale et introduit aléatoirement des valeurs manquantes (`.`) pour `y1` ou `y2`.
Copié !
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 Bloc de code
PROC PRINT
Explication : Affiche les 10 premières observations du jeu de données généré pour vérification.
Copié !
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 Bloc de code
PROC MI Data
Explication : Exécute l'imputation multiple. Utilise la méthode `FCS` avec 25 itérations. L'instruction `MNAR` applique un ajustement (décalage de -0.4 pour `y1` et -0.5 pour `y2`) uniquement pour les observations où `Trt='1'`, simulant un biais pour les données manquantes.
Copié !
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 Bloc de code
PROC PRINT
Explication : Affiche les 10 premières observations du jeu de données de sortie `outex16`, qui contient les données imputées.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : SAS SAMPLE LIBRARY, NAME: MIEX16, PRODUCT: STAT
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.