Imputation Multiple sous SAS : Maîtrisez PROC MI et MIANALYZE pour vos analyses de régression

Ce code est également disponible en : English Español
Niveau de difficulté
Expert
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

Face à des données manquantes, beaucoup ont encore le réflexe de supprimer les lignes incomplètes. C'est une erreur statistique majeure qui introduit des biais et réduit la puissance de vos tests. La force du flux PROC MI et PROC MIANALYZE est de ne pas se contenter de "deviner" une valeur unique, mais de capturer l'incertitude réelle liée à l'absence d'information.

Le secret du code : Dans cet exemple, l'astuce réside dans la parfaite synchronisation des trois étapes. PROC MI crée plusieurs versions "plausibles" de votre réalité. PROC REG analyse chaque version séparément grâce à l'instruction BY _Imputation_. Enfin, le véritable "cerveau" de l'opération, PROC MIANALYZE, applique les règles de Rubin pour fusionner ces résultats.

Le détail qui fait la différence : Notez bien l'option covout dans la procédure de régression. Sans elle, vous ne transmettez pas les erreurs-types à l'étape finale, rendant l'ajustement de la variance impossible. En utilisant ce workflow, vous ne faites pas que remplir des cases vides : vous produisez des inférences robustes et scientifiquement défendables, même sur un jeu de données imparfait.

Le processus commence par la création d'un jeu de données 'Fitness1' contenant des mesures de condition physique avec des valeurs manquantes introduites volontairement. Ensuite, PROC MI est utilisé pour générer plusieurs jeux de données complets par imputation multiple. Une analyse de régression (PROC REG) est effectuée sur chaque jeu de données imputé. Finalement, PROC MIANALYZE combine les résultats de ces régressions pour produire des estimations et des tests statistiques valides qui tiennent compte de l'incertitude liée à l'imputation.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées directement dans le script via une étape DATA avec une instruction DATALINES. Le jeu de données s'appelle Fitness1.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc crée la table 'Fitness1' à partir de données internes fournies via 'datalines'. Des valeurs manquantes (représentées par des points '.') sont intentionnellement incluses pour les variables RunTime et RunPulse.
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;
2 Bloc de code
PROC MI Data
Explication :
La procédure MI (Multiple Imputation) est utilisée pour gérer les données manquantes. Elle génère plusieurs jeux de données 'complets' en remplaçant les valeurs manquantes par des estimations plausibles. Le résultat est stocké dans la table 'outmi'.
Copié !
1 
2PROC MI
3DATA=Fitness1 seed=3237851 noprint out=outmi;
4var Oxygen RunTime RunPulse;
5RUN;
6 
3 Bloc de code
PROC REG Data
Explication :
Une régression linéaire (PROC REG) est exécutée pour modéliser 'Oxygen' en fonction de 'RunTime' et 'RunPulse'. L'instruction 'by _Imputation_' force l'exécution d'une régression distincte pour chaque jeu de données imputé par PROC MI. Les estimations des paramètres de chaque modèle sont sauvegardées dans la table 'outreg'.
Copié !
1PROC REG DATA=outmi outest=outreg covout noprint;
2 model Oxygen= RunTime RunPulse;
3 BY _Imputation_;
4RUN;
4 Bloc de code
PROC MIANALYZE
Explication :
La procédure MIANALYZE combine les résultats des régressions effectuées sur les multiples jeux de données imputés. Elle lit les estimations depuis 'outreg' et produit une inférence statistique finale (estimations des paramètres, erreurs standard, tests) qui est valide en tenant compte de la variabilité due à l'imputation.
Copié !
1PROC MIANALYZE DATA=outreg edf=28;
2 modeleffects Intercept RunTime RunPulse;
3 test Intercept, RunTime=RunPulse / mult;
4RUN;
L'Astuce Pro
Pour garantir la validite de vos tests d hypothese avec PROC MIANALYZE, n oubliez pas de toujours inclure l option COVOUT dans votre PROC REG (ou l option COVB dans d autres procedures) : sans cette option, les erreurs types et les matrices de covariance indispensables au calcul de la variance intra-imputation ne sont pas transmises, ce qui fausse les resultats combines de l analyse finale.
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