Exemple 17 pour PROC MI : Imputation Multiple avec ajustement MNAR

Ce code est également disponible en : Deutsch English Español
Niveau de difficulté
Débutant
Publié le :
Ce script crée d'abord un jeu de données synthétique nommé 'Mono2' avec des valeurs manquantes simulées de manière conditionnelle. Il utilise ensuite la procédure MI (Multiple Imputation) pour imputer les données manquantes. La particularité de cet exemple réside dans l'utilisation de l'instruction MNAR (Missing Not At Random) combinée à une méthode logistique monotone (link=glogit) pour la variable 'Grade', appliquant un décalage (shift) spécifique aux valeurs imputées.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées intégralement dans le script via un Data Step utilisant des boucles DO et des générateurs de nombres aléatoires (ranuni, rannor).

1 Bloc de code
DATA STEP Data
Explication :
Génération du jeu de données 'Mono2' contenant des variables démographiques et de scores, avec introduction artificielle de valeurs manquantes pour la variable 'Grade' basée sur des probabilités définies.
Copié !
1DATA Mono2;
2 DO Grd= 6 to 8;
3 DO j=1 to 50;
4 
5 Grade= Grd;
6 IF (Grd=6) THEN DO;
7 IF (ranuni(999) > .80) THEN Grade= .;
8 END;
9 ELSE IF (ranuni(99) > .95) THEN Grade= .;
10 
11 IF (j < 26) THEN Study= 1;
12 ELSE Study= 0;
13 
14 Score0= 70 + 3*rannor(1);
15 IF (Score0 >= 100) THEN Score0= 100 - 10*ranuni(99);
16 
17 Score= Score0 + 2*rannor(99) + 2;
18 IF (Study = 1) THEN DO;
19 Score= Score + 3;
20 IF (Grd = 6) THEN Score= Score + 1;
21 IF (Grd = 8) THEN Score= Score + 3;
22 END;
23 
24 OUTPUT;
25 END; END;
26 drop Grd j;
27RUN;
2 Bloc de code
PROC PRINT
Explication :
Affichage des 10 premières observations du jeu de données généré pour vérification.
Copié !
1PROC PRINT DATA=Mono2(obs=10);
2 var Grade Score0 Score Study;
3 title 'First 10 Obs in the Student Test Data';
4RUN;
3 Bloc de code
PROC MI Data
Explication :
Exécution de l'imputation multiple. L'option 'nimpute=20' crée 20 jeux de données imputés. L'instruction 'mnar' ajuste les valeurs imputées pour la variable 'Grade' (lorsque l'événement est '6') avec un décalage de 2, supposant un mécanisme de données manquantes non aléatoire.
Copié !
1PROC MI DATA=Mono2 seed=34857 nimpute=20 out=outex17;
2 class Study Grade;
3 monotone logistic (Grade / link=glogit);
4 mnar adjust( Grade (event='6') /shift=2);
5 var Study Score0 Score Grade;
6RUN;
4 Bloc de code
PROC PRINT
Explication :
Affichage des résultats de l'imputation (jeu de données 'outex17'), montrant notamment le numéro d'imputation.
Copié !
1PROC PRINT DATA=outex17(obs=10);
2 var _Imputation_ Grade Study Score0 Score;
3 title 'First 10 Observations of the Imputed Student Test Data Set';
4RUN;
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