Données manquantes sous SAS : Comment utiliser PROC MI pour ne plus biaiser vos analyses

Ce code est également disponible en : Deutsch English
Niveau de difficulté
Confirmé
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

Pour traiter efficacement les données manquantes, l'utilisation de la PROC MI avec la méthode MCMC est une approche d'expert qui surpasse l'imputation simple en préservant la variabilité et les relations de corrélation entre vos variables. Dans ce script, l'algorithme génère par défaut 25 imputations (paramètre NIMPUTE), créant ainsi un jeu de données étendu où chaque valeur manquante est remplacée par plusieurs estimations plausibles. La réussite technique de cette opération repose sur deux piliers : d'une part, l'hypothèse que vos données suivent une distribution normale multivariée (condition sine qua non du MCMC standard) et, d'autre part, la convergence de la chaîne de Markov. Il est crucial d'ajouter l'option PLOTS=TIMEPLOT pour vérifier visuellement que les itérations se stabilisent avant l'imputation finale. Enfin, n'oubliez pas que ce n'est que la première étape : vous devrez ensuite analyser ces 25 jeux de données via la procédure statistique de votre choix (comme PROC REG ou GLM) et combiner les résultats avec PROC MIANALYZE pour obtenir des inférences valides qui tiennent compte de l'incertitude liée aux données manquantes.

Le script crée d'abord un jeu de données nommé 'Fitness1' contenant des mesures de condition physique (consommation d'oxygène, temps de course, pouls au repos) avec des valeurs manquantes introduites arbitrairement. Ensuite, la procédure `PROC MI` est utilisée avec une méthode MCMC (Markov Chain Monte Carlo) pour générer des imputations multiples pour ces données manquantes. Le résultat est stocké dans un nouveau jeu de données 'outmi'. Finalement, les 10 premières observations du jeu de données imputé sont affichées pour vérification.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées directement dans le script via une étape DATA avec l'instruction `datalines`. Le jeu de données 'Fitness1' contient des mesures de condition physique.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc de code crée la table 'Fitness1'. Il lit des données directement intégrées dans le programme grâce à l'instruction 'datalines'. Le spécificateur de formatage '@@' est utilisé dans l'instruction INPUT pour indiquer à SAS que plusieurs observations peuvent se trouver sur la même ligne de données.
Copié !
1DATA Fitness1;
2 INPUT Oxygen RunTime RunPulse @@;
3 DATALINES;
444.609 11.37 178 45.313 10.07 185
554.297 8.65 156 59.571 . .
649.874 9.22 . 44.811 11.63 176
7 . 11.95 176 . 10.85 .
839.442 13.08 174 60.055 8.63 170
950.541 . . 37.388 14.03 186
1044.754 11.12 176 47.273 . .
1151.855 10.33 166 49.156 8.95 180
1240.836 10.95 168 46.672 10.00 .
1346.774 10.25 . 50.388 10.08 168
1439.407 12.63 174 46.080 11.17 156
1545.441 9.63 164 . 8.92 .
1645.118 11.08 . 39.203 12.88 168
1745.790 10.47 186 50.545 9.93 148
1848.673 9.40 186 47.920 11.50 170
1947.467 10.50 170
20;
21 
2 Bloc de code
PROC MI Data
Explication :
Cette procédure réalise une imputation multiple sur le jeu de données 'Fitness1'. L'option 'seed' initialise le générateur de nombres aléatoires pour la reproductibilité. L'option 'mu0' spécifie les moyennes initiales pour l'algorithme d'imputation. L'instruction 'mcmc' invoque la méthode de Monte Carlo par chaînes de Markov. Les variables 'Oxygen', 'RunTime' et 'RunPulse' sont spécifiées pour l'imputation. Le résultat est sauvegardé dans la table 'outmi'.
Copié !
1PROC MI DATA=Fitness1 seed=501213 mu0=50 10 180 out=outmi;
2 mcmc;
3 var Oxygen RunTime RunPulse;
4RUN;
3 Bloc de code
PROC PRINT
Explication :
Ce bloc affiche les 10 premières lignes (option obs=10) du jeu de données 'outmi', qui contient les valeurs imputées par PROC MI. Un titre est ajouté pour clarifier la sortie.
Copié !
1 
2PROC PRINT
3DATA=outmi (obs=10);
4title 'First 10 Observations of the Imputed
5Data Set';
6RUN;
7 
L'Astuce Pro
Pour garantir la validite de vos resultats, verifiez toujours la convergence des chaines de Markov en ajoutant l option PLOTS=TIMEPLOT dans PROC MI, car l algorithme MCMC utilise ici par defaut repose sur l hypothese d une distribution normale multivariee et necessite une phase de chauffe (burn-in) suffisante pour que les valeurs imputees soient statistiquement coherentes.
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 : S A S S A M P L E L I B R A R Y