Vous avez des données manquantes ? Essayez missMDA !

La semaine dernière j’ai assisté à une présentation, par François Husson, du package missMDA, dont il est co auteur avec Julie Josse.

Le package missMDA permet de faire de l’imputation, c’est à dire de remplacer les données manquantes d’un tableau de données par des valeurs plausibles.

Le principe est prédire ces valeurs plausibles à partir d’un modèle qui prend en compte à la fois les similarités entre les individus et entre les variables. Ces modèles implicites reposent sur :

  • l’Analyse en Composantes Principales (ACP) lorsque les données sont continues,
  • l’Analyse des Correspodances Multiples (ACM) lorsque les données sont catégorielles
  • ou encore l’Analyse Factorielle de Données Mixtes (AFDM) lorsque les données sont continues et catégorielles.

A noter que les méthodes proposées dans le packages missMDA ne sont applicables que lorsque les données manquantes sont dites “missing at random” (MAR). Cela signifie que la probabilité qu’une observation de la variable X soit manquante peut être fonction des valeurs prises par certaines autres variables recueillies, mais qu’elle ne dépend pas de la vraie valeur de X

Contenu :

  • Comment ça marche l’imputation des données manquantes ?
  • Evaluation-de-la-qualité de l’imputation
  • Les lignes de code
  • Pour aller plus loin
  • Conclusion

Comment ça marche l’imputation des données manquantes ?

L’exemple fourni par Julie Josse et Fraçois Husson dans leur article missMDA: A Package for Handling Missing Values in Multivariate Data Analysis est particulièrement didactique. Il s’agit d’un tableau de données avec 5 sujets et deux variables (x1 et x2), avec une donnée manquante au niveau de la variable x2 du 4ème sujet (1er plot).

  1. La première étape consiste à remplacer la valeur manquante par la moyenne des valeurs observées pour la variable x2 (2ème plot)

  2. Une ACP est ensuite réalisée sur ce premier jeu de données complet (3ème et 4ème plots). L’ACP consiste à trouver la droite qui minimise les distances entre les points et leur projection perpendiculaire sur cette droite, on parle d’erreurs perpendiculaires. Ces erreurs perpendiculaires sont notamment illustreés dans [ce post](http://www.cerebralmastication.com/2010/09/principal component-analysis-pca-vs-ordinary-least-squares-ols-a-visual-explination/). La droite qui minimise les erreurs perpendiculaires est aussi celle qui maximise la dispersion des projections des points sur cette droite. Pour visualiser ce processus, je vous recommande d’aller voir cette question de Cross Validated(2ème figure).

  3. Dans un troisième temps, la valeur prédite par l’ACP, pour la donnée manquante, est utilisée à la place de la moyenne (5ème plot).

  4. Et une nouvelle ACP est réalisée (6ème plot).

  5. Ces étapes sont répétées jusqu’à ce qu’il y ait convergence, c’est à dire lorsque la nouvelle valeur prédite par l’ACP est identique, ou très très proche, de la valeur prédite par l’ACP précédente (7ème,8ème et 9ème plots).

Cette figure provient de l’article missMDA: A Package for Handling Missing Values in Multivariate Data
Analysis
 

L’algorithme employé ici s’appelle “iterative PCA”, plus précisément il s’agit d’une version dite “regularized iteractive PCA” . Cette modification permet de gérer les problèmes de sur-ajustement (overfitting) qui peuvent être rencontrés lorsque les données ont beaucoup de bruit et, ou, sont peu nombreuses.

Il est à noter que le nombre de composantes principales à utiliser dans l’ACP, pour réaliser les prédictions, n’est pas triviale et forcément identique pour tous les jeux de données. missMDA propose alors une fonction, basée sur une approche de cross-validation, pour déterminer ce nombre de façon spécifique au jeu de données étudié.

 

Evaluation de la qualité de l’imputation

Un des atouts de missMDA est de permettre d’évaluer la qualité de l’imputation réalisée : on ne se contente donc plus d’imputer et de croiser les doigts ! On visualise l’incertitude liées aux prédictions !

C’est très utile parce qu’il n’est pas possible de proposer un seuil, en terme de pourcentages de données manquantes, au delà duquel l’imputation serait de pauvre qualité. Le pourcentage de données manquantes est important mais la structure des données, c’est à dire les relations entre les variables, a également une influence sur la qualité de l’imputation.

L’évaluation de la qualité de l’imputation de missMDA repose sur un algorithme d’imputations multiples (qui s’appelle MIPCA), et qui va conduire à la prédiction de plusieurs valeurs plausibles pour chaque donnée manquante.

Le principe est de générer, dans un premier temps, B jeux de données dans lesquels seules les valeurs imputées sont différentes. Pour cela, une approche de type “bootstrap sur les résidus” est
employée.

Dans un second temps, l’algorithme d’imputation simple (regularized iterative PCA ), décrit précédemment, est appliqué sur chacun de ces B jeux de données, ce qui conduit à B jeux de données imputés(complets).

Dans un troisième temps une représentation graphique globale, selon les deux composantes principales de l’ACP, est réalisée pour les points sujets d’une part, et pour les points variables d’autre part. D’après ce que j’ai compris, ces représentations sont obtenues en considérant les données des B jeux de données imputés comme des sujets et des variables supplémentaires.

Sur le graphique des points sujets, des ellipses sont dessinées autour de la position de chaque sujet, elles témoignent de la variabilité inter imputation.

Sur la figure globale des variables, ce sont des nuages de points qui sont représentés ; ils reflètent l’incertitude des prédictions.

Ici les deux représentations précédentes laissent à penser que l’imputation est de bonne qualité et que les données imputées peuvent être employées pour des analyses statistiques ultérieures.

A l’inverse, les deux graphiques ci-dessous témoignent d’une mauvaise qualité d’imputation et doivent inciter à ne pas utiliser les données ainsi imputées.



Les 4 figures précédentes proviennent du post Can we believe in the imputations?.

Les lignes de code

L’utilisation du package missMDA nécessite le chargement du package FactomineR.

En dehors du chargement du jeu de données contenant les données manquantes, l’imputation ne nécessite que 2 lignes de code.

La première consiste à déterminer le nombre de composantes principales à utiliser, en utilisant la fonction estim_ncpPCA

La seconde réalise à proprement parlé l’imputation, en utilisant la fonction imputePCA

Enfin, l’évaluation de la qualité de l’imputation se réalise avec deux lignes de commandes. La première consiste à réaliser l’imputation multiple grâce à la fonction MIPCA. Et la seconde à représenter les résultats par la fonction plot.

 

Pour aller plus loin

 

Conclusion

La simplicité de ce package et la claretée des explications m’a vraiment donné envie de l’essayer la prochaine fois que je serai confronté à des données manquantes.

Et vous, que faites vous de ces données ? Pour réaliser vos analyses statistiques, vous avez l’habitude d’écarter les données manquantes ou de les imputer ? Si vous réalisez des imputations quel package utilisez vous ?

Si cet article vous a plu, partagez le !

Crédits photos : geralt

Retrouvez ici 3 de mes articles les plus partagés:

Data visualisation des variables
catégorielles

Versionnage de vos scripts avec RStudio +
Git

Comment retrouver sous R une couleur employée avec Excel
?

Partager l'article
  •  
  •  
  •  
  •  
  •  
    13
    Partages
  • 13
  •  
  •  
  •  
  •  

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *