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.
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 | DATA Fitness1; |
| 2 | INPUT Oxygen RunTime RunPulse @@; |
| 3 | DATALINES; |
| 4 | 44.609 11.37 178 45.313 10.07 185 |
| 5 | 54.297 8.65 156 59.571 . . |
| 6 | 49.874 9.22 . 44.811 11.63 176 |
| 7 | . 11.95 176 . 10.85 . |
| 8 | 39.442 13.08 174 60.055 8.63 170 |
| 9 | 50.541 . . 37.388 14.03 186 |
| 10 | 44.754 11.12 176 47.273 . . |
| 11 | 51.855 10.33 166 49.156 8.95 180 |
| 12 | 40.836 10.95 168 46.672 10.00 . |
| 13 | 46.774 10.25 . 50.388 10.08 168 |
| 14 | 39.407 12.63 174 46.080 11.17 156 |
| 15 | 45.441 9.63 164 . 8.92 . |
| 16 | 45.118 11.08 . 39.203 12.88 168 |
| 17 | 45.790 10.47 186 50.545 9.93 148 |
| 18 | 48.673 9.40 186 47.920 11.50 170 |
| 19 | 47.467 10.50 170 |
| 20 | ; |
| 1 | PROC MI DATA=Fitness1 seed=1518971 SIMPLE nimpute=0; |
| 2 | em itprint outem=outem; |
| 3 | var Oxygen RunTime RunPulse; |
| 4 | RUN; |
| 1 | |
| 2 | PROC PRINT |
| 3 | DATA=outem; |
| 4 | title 'EM Estimates'; |
| 5 | RUN; |
| 6 |