Données manquantes avec SAS : Maîtrisez l'algorithme EM via la PROC MI

Ce code est également disponible en : Deutsch English Español Français
Niveau de difficulté
Confirmé
Publié le :
Michael

Le Conseil de l'Expert

Michael
Responsable de l'infrastructure Viya.

Face à des données incomplètes, le réflexe courant consiste souvent à supprimer les observations manquantes ou à imputer des valeurs arbitraires. Ce script propose une alternative bien plus rigoureuse : l'algorithme EM (Expectation-Maximization). En utilisant la PROC MI avec l'option NIMPUTE=0, vous ne demandez pas à SAS de "combler les trous", mais d'estimer les paramètres réels de votre population (moyennes et matrice de covariance) à partir de l'information partielle disponible.

La puissance de cette méthode réside dans son processus itératif. L'étape E (Expectation) calcule la vraisemblance des données manquantes en se basant sur les paramètres actuels, tandis que l'étape M (Maximization) met à jour ces paramètres pour maximiser cette vraisemblance. L'option ITPRINT est ici essentielle pour le statisticien, car elle permet de surveiller la convergence de l'algorithme. Utiliser l'EM est particulièrement pertinent pour des mesures physiologiques comme le pouls ou la consommation d'oxygène, où les variables sont souvent corrélées : l'algorithme exploite ces relations pour fournir une estimation bien plus fiable qu'une simple moyenne sur les données complètes. C'est l'outil de choix pour stabiliser vos analyses avant d'envisager une modélisation plus complexe.

Le script commence par créer un jeu de données nommé `Fitness1` contenant des mesures de condition physique (Oxygène, Temps de course, Pouls). Certaines de ces mesures sont volontairement manquantes pour simuler un schéma de données incomplet. Ensuite, la procédure `PROC MI` est appelée avec l'option `nimpute=0` pour ne pas effectuer d'imputation, mais pour utiliser l'algorithme EM afin d'estimer la moyenne, l'écart-type et la matrice de corrélation des variables. Les résultats de cette estimation sont stockés dans la table `outem`, qui est finalement affichée avec `PROC PRINT`.
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 `Fitness1` est donc entièrement autonome.

1 Bloc de code
DATA STEP Data
Explication :
Ce bloc DATA STEP crée la table `Fitness1` en lisant les données fournies via `datalines`. Il définit trois variables numériques : `Oxygen`, `RunTime` et `RunPulse`. Le double arobase `@@` à la fin de l'instruction `input` permet de lire plusieurs observations à partir de 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;
2 Bloc de code
PROC MI Data
Explication :
La procédure statistique `PROC MI` analyse les données manquantes dans `Fitness1`. L'option `nimpute=0` spécifie de ne pas créer de jeux de données imputés. L'instruction `em` demande le calcul des estimations basées sur l'algorithme Espérance-Maximisation (EM), qui sont sauvegardées dans une nouvelle table nommée `outem`. L'option `seed` assure la reproductibilité et `simple` demande des statistiques descriptives de base.
Copié !
1PROC MI DATA=Fitness1 seed=1518971 SIMPLE nimpute=0;
2 em itprint outem=outem;
3 var Oxygen RunTime RunPulse;
4RUN;
3 Bloc de code
PROC PRINT
Explication :
Ce bloc affiche le contenu de la table `outem`, qui contient les estimations (moyennes, covariances) calculées par la procédure `PROC MI`.
Copié !
1 
2PROC PRINT
3DATA=outem;
4title 'EM Estimates';
5RUN;
6 
L'Astuce Pro
L utilisation conjointe de NIMPUTE=0 et de l instruction EM permet d obtenir des estimateurs du maximum de vraisemblance pour la moyenne et la covariance sans generer de jeux de donnees imputes, ce qui est ideal pour valider l hypothese de donnees manquantes au hasard (MAR). L ajout de l option ITPRINT est indispensable car elle affiche l historique de convergence de l algorithme Expectation-Maximization dans le journal SAS, vous permettant de verifier si le nombre d iterations est suffisant ou si des problemes de colinearite empechent une estimation stable des parametres de votre population.
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