
Cette vidéo explique comment réaliser une Analyse en Composantes Principales (ACP) sur des jeux de données incomplets en utilisant le package R missMDA, complémentaire de FactoMineR. Après avoir présenté les limites des approches naïves (suppression d’observations ou imputation par la moyenne), l’auteur décrit en détail l’algorithme itératif d’imputation par ACP : initialisation, construction de l’ACP, mise à jour des valeurs manquantes à partir des coordonnées des individus et des variables, puis ré‑estimation des moyennes et écarts‑types, le tout répété jusqu’à convergence. Il souligne le risque de sur‑ajustement et recommande la version régularisée implémentée dans missMDA. Le choix du nombre de composantes à retenir pour l’imputation est effectué avec la fonction estim_ncpPCA, puis l’imputation proprement dite avec inputPCA (ou imputePCA). Le résultat, un tableau complet, peut être analysé avec la fonction PCA de FactoMineR. L’impact de l’imputation sur les pourcentages d’inertie (surestimation des premières dimensions) et sur l’incertitude des valeurs imputées est discuté, ainsi que la méthode d’imputation multiple (MIPCA) pour quantifier cette incertitude et visualiser les ellipses de confiance sur les plans factoriels. La vidéo conclut sur les bonnes pratiques : toujours considérer les valeurs imputées comme moins fiables que les observations réelles et utiliser les outils d’évaluation d’incertitude lorsqu’un grand nombre de données manquantes est présent.
Chapters
Nous allons voir dans cette vidéo comment effectuer une ACP sur un jeu de données incomplet, c'est-à-dire contenant des données manquantes. Ce problème est très fréquent en pratique et les raisons d'avoir des données manquantes sont malheureusement nombreuses: refus de réponse d'un enquêté, appareil qui tombe en panne, perte de données, etc. Pour gérer les données manquantes en ACP, nous allons utiliser le package missMDA qui est complémentaire du package FactoMineR. Nous allons dans cette vidéo utiliser le jeu de données oranges qui est disponible dans le package missMDA. Ce jeu de données contient 12 individus, ici 12 jus d'orange, décrits par 8 variables quantitatives. Quelques données sont manquantes, elles sont notées par des NA, ce qui signifie not available. Une première solution consiste à éliminer les individus ou les variables qui ont des données manquantes. Dans l'exemple, il ne resterait que 3 individus ou une seule variable, ce qui est évidemment inenvisageable. Plus généralement, ceci est très rarement satisfaisant et celui qui passe du temps à recueillir des données n'aura jamais envie de perdre des données même si celles-ci sont incomplètes. Une autre solution consiste à remplacer chaque valeur manquante par la moyenne de chaque variable. C'est ce qui est fait par défaut dans de nombreux logiciels, y compris dans FactoMineR. Donc en écrivant simplement PCA, on obtient les graphes de l'ACP mais les données manquantes ont été remplacées par la moyenne de chaque variable. Cette imputation par la moyenne est un peu grossière. Si on prend un exemple simple avec 2 variables X et Y qui sont étroitement liées et des valeurs manquantes sur les 2 variables, si nous imputons les données manquantes par la moyenne, voici ce que cela donne sur les variables X et Y. Les points noirs correspondent aux individus n'ayant pas de données manquantes. On voit bien la liaison entre les 2 variables. Les points verts correspondent aux individus ayant des données manquantes sur X et les points rouges aux individus ayant des données manquantes sur Y. Y. On voit bien ici que l'imputation a complètement déformé la distribution de x, la distribution de y et a modifié la liaison entre les 2 variables. L'imputation par la moyenne n'est donc pas satisfaisante et il existe d'autres méthodologies plus sophistiquées qui, profitant de la structure du tableau de données, s'avèrent généralement plus performantes. Comme les 2 variables X et Y sont étroitement corrélées, en l'absence de valeur de Y pour un individu, il serait naturel d'estimer la valeur manquante à partir de la valeur de X pour ce même individu, par exemple par régression simple. Si on considère maintenant le cas où on a de nombreuses variables, si 2 individus i et j ont des valeurs très proches sur toutes les variables et qu'une valeur est manquante pour l'individu i sur la variable k, alors il est naturel d'estimer la valeur manquante par celle prise par l'individu j sur cette même variable puisque les 2 individus se ressemblent sur toutes les autres variables. Donc on peut appliquer ces 2 idées à la fois sur un ensemble d'individus et un ensemble de variables en prenant en compte les ressemblances globales des individus sur toutes les variables et les liaisons entre variables sur tous les individus. En disant cela, en prenant en compte les ressemblances globales entre individus et les liaisons entre toutes les variables, on est en train de parler de l'ACP. Et en effet, on peut imputer les données manquantes par ACP. C'est ce que fait l'algorithme d'ACP itérative qui fonctionne selon le principe suivant. On va prendre un petit exemple de 5 individus et 2 variables X1 et X2. 4 individus ont des données sur les 2 variables et un individu, le 4ème, a une donnée manquante sur x2. On représente sur le graphe les 4 individus qui ont des données complètes et par un trait ici un individu qui a une donnée manquante. La première étape de l'algorithme d'ACP itératif consiste à imputer les données manquantes par une valeur quelconque. On peut prendre par exemple la moyenne de la variable pour laquelle la donnée est manquante ou une autre valeur raisonnable. Ici on impute par 0. Ensuite, 2 étapes sont alternées. La première étape consiste à construire l'ACP sur le tableau précédemment complété. On construit ici l'ACP et on dessine la droite d'ACP. Chaque individu se projette sur la droite d'ACP, ce sont les points en rouge. Et donc on a les coordonnées de ces points sur x1 et x2. Le 4ème individu, qui avait une donnée manquante sur x2, est projeté ici et a donc pour coordonnée sur X2 la valeur 0.57. On va alors utiliser cette valeur de 0.57 comme nouvelle imputation dans le jeu de données. Donc on reprend toutes les valeurs observées et pour la valeur manquante on prend 0.57. Et on va itérer ces 2 étapes, construire l'ACP, récupérer la coordonnée du 4ème individu pour la variable X2 pour construire un nouveau tableau de données. Et on itère jusqu'à convergence. À convergence, on obtient une valeur de 1.48 pour l'individu 4 et la variable X2 et la droite d'ACP qui est donnée ici. Alors on peut résumer l'algorithme par les différentes étapes suivantes: une étape d'initialisation dans laquelle les valeurs manquantes sont complétées par, par exemple, la moyenne de chaque variable. Puis on itère 3 étapes A, B, C. L'étape A consiste à construire l'ACP sur le tableau complété. On va ensuite choisir un nombre de dimensions pour construire une nouvelle imputation. Dans l'exemple, on avait pris une seule dimension puisqu'on avait construit une droite d'ACP. Donc ce choix du nombre de dimensions pour compléter le tableau est important. L'étape B, on complète les données manquantes par ACP en utilisant les coordonnées des individus et les coordonnées des variables de l'ACP. Et puis l'étape C, on va mettre à jour les moyennes et écarts-types de chaque variable après l'imputation. Et puis on passe à nouveau à l'étape A, on reconstruit l'ACP, on complète le jeu de données et puis on va itérer les étapes A, B, C jusqu'à convergence. La convergence est généralement très rapide mais l'algorithme peut parfois souffrir de surajustement. En pratique, le surajustement est très fréquent. Il est dû à une trop grande croyance dans des liaisons entre variables qui ne sont pas aussi fortes qu'on pourrait le croire, notamment à cause des données manquantes. Alors pour cette raison, on va préférer utiliser une version régularisée de cet algorithme d'ACP itérative. On ne va pas détailler ici la description de la version régularisée de l'algorithme, mais c'est celle qui est implémentée dans le package missMDA et c'est celle qui doit être utilisée en pratique. L'idée est d'un peu moins croire dans les liaisons et d'imputer par une valeur un peu plus proche de la moyenne de la variable. Donc on prend moins de risques en fait dans l'imputation. In fine, l'algorithme complète le jeu de données par des valeurs qui n'ont pas d'influence sur les résultats de l'ACP, c'est-à-dire qui n'ont pas d'influence sur les coordonnées des individus et les coordonnées des variables. Et comme l'algorithme est basé sur l'ACP, il prend en compte à la fois les ressemblances entre individus et les liaisons entre variables. Donc on peut noter que l'imputation est de qualité comparée à l'imputation obtenue par d'autres méthodes statistiques. Et cette imputation peut être utilisée pour faire une ACP mais également pour d'autres analyses statistiques. L'algorithme d'ACP itérative régularisée est implémenté dans la librairie missMDA. Cette librairie contient plusieurs fonctions. Comme nous l'avons vu, il est nécessaire d'estimer le nombre de dimensions que l'ACP utilisera pour compléter le jeu de données. Pour ce faire, nous utilisons la fonction estim_ncppca. Donc nous allons écrire estime_ncppca . Cette fonction trouve le nombre optimal de composantes pour pouvoir imputer le jeu de données. Donc on précise qu'on utilise une ACP réduite pour imputer, ce qui est l'option par défaut et c'est ce qu'on doit utiliser si par la suite on voudra faire une ACP réduite sur le jeu de données complété. Dans l'exemple, le nombre de composantes optimal estimé est égal à 2. Donc c'est ce nombre que nous allons utiliser pour imputer les données dans le tableau de données. Nous pouvons maintenant réaliser l'imputation proprement dite grâce à l'algorithme d'imputation itérative en écrivant inputPCA de orange et ncp= 2 puisque nous allons compléter en utilisant 2 composantes et scale= TRUE parce que nous voulons utiliser une ACP réduite pour compléter. Les résultats du tableau de données complété sont dans l'objet complete_obs. Si on compare au jeu de données initial, nous pouvons voir que là où il y avait des données présentes, les valeurs n'ont pas changé et là où il y avait des données manquantes, par exemple pour l'individu 1 et la variable sweet, on a une estimation par 5.54 et cette estimation est plus intéressante que l'estimation obtenue par la moyenne puisqu'on prend en compte les liaisons entre variables et ressemblances entre individus pour compléter la valeur de cette cellule. Sur ce tableau de données complété, nous pouvons lancer l'ACP de façon classique en utilisant la fonction PCA de FactoMineR. Et nous obtiendrons les résultats classiques de l'ACP avec le graphe des individus et celui des variables. Alors quelques remarques sur cette imputation par ACP du jeu de données et ses conséquences sur l'ACP qui sera effectuée ensuite sur le jeu de données complété. Lors de l'imputation, les données manquantes sont entre guillemets prédites sur le sous-espace qui a été choisi. Le sous-espace choisi dépend du nombre de dimensions utilisées pour imputer le jeu de données. Si on utilise 2 dimensions, les données manquantes sont imputées par des valeurs qui laissent les individus sur les 2 premières dimensions et les variables sur les 2 premières dimensions. On renforce, on amplifie ainsi la qualité de projection sur les 2 premières dimensions et donc les pourcentages d'inertie de l'ACP associés aux 2 premières dimensions seront surestimés. Si nous reprenons le petit exemple avec 2 variables et l'imputation par la droite d'ACP, donc par une seule dimension, on voit bien que les points correspondant aux données imputées sont alignés sur la droite d'ACP. Et par la suite, si on fait une ACP sur ce tableau de données ainsi complété, la première composante de l'ACP aura un pourcentage d'inertie trop grand. Donc les pourcentages d'inertie de l'ACP associés aux premières dimensions de l'ACP seront surestimés si on impute les données manquantes. Il faut donc, lors de l'interprétation, atténuer un peu ce que l'on pourra dire sur les pourcentages d'inertie associés aux premières dimensions. Notamment si le nombre de données manquantes est important. Autre problème, les données manquantes qui ont été imputées sont considérées lors de l'ACP Exactement comme s'il s'agissait d'observations. Or il s'agit d'une imputation et il y a donc une incertitude sur chaque valeur imputée. Il est possible d'évaluer cette incertitude grâce à ce que l'on appelle l'imputation multiple. Au lieu d'imputer une seule fois le tableau, on va l'imputer plusieurs fois, par différentes valeurs, pour voir quelles sont les valeurs plausibles que peut prendre une cellule manquante et donc quelle est la variabilité que les valeurs imputées peuvent prendre. La fonction MIPCA du package missMDA permet de générer ces tableaux avec différentes imputations pour chaque valeur. La fonction plot.MIPCA, qui peut être appelée simplement par plot, permet ensuite de visualiser cette incertitude sur les plans d'ACP. Alors il y a 2 façons de visualiser cette incertitude. La première consiste à projeter en supplémentaire tous les tableaux multiples sur le plan d'ACP obtenus avec l'imputation simple. On considère alors que les dimensions factorielles sont fixées et seule l'incertitude sur la position des individus et des variables ayant des données manquantes est observée. Ainsi dans l'exemple, l'individu 12 n'a pas de données manquantes et il n'y a pas d'incertitude sur sa position tandis que l'individu 5 a plusieurs données manquantes et l'incertitude sur sa position est matérialisée par une ellipse. De même, la variable typicity n'a pas de données manquantes tandis que la variable sweet a plusieurs données manquantes et il y a une incertitude sur sa position. Chaque point bleu correspond à l'extrémité de la flèche de la variable sweet. Le nuage des points bleus est dispersé et donc il faut interpréter la position de cette variable avec prudence. Une autre façon de prendre en compte l'incertitude est de se dire que les valeurs imputées ont une certaine variabilité. Et que cette variabilité joue aussi sur les dimensions factorielles. Et on va représenter l'incertitude sur la position des individus, de tous les individus y compris ceux qui n'ont pas de données manquantes car les individus qui ont des données manquantes font bouger les axes et donc la position de tous les individus. On retrouve alors le graphe suivant pour les individus avec cette fois une ellipse autour de chaque individu, y compris de l'individu qui n'a pas de données manquantes. Le graphe de droite montre les projections des dimensions des ACP de chaque tableau imputé sur le plan d'ACP obtenu à partir du tableau complété par l'imputation simple. Comme toutes les flèches sont proches soit de l'axe 1 soit de l'axe 2, cela signifie que les axes sont stables pour les ACP sur les différents tableaux. Une forte instabilité ici nous insisterait à ne pas interpréter les résultats de l'ACP car ces résultats seraient trop sujets à l'imputation, dépendraient trop de l'imputation. Cette stratégie permet de s'assurer que le nombre de données manquantes dans le tableau n'est pas trop important et qu'il reste possible de faire et interpréter une ACP. Pour conclure, il faut bien garder en tête qu'une donnée manquante peut toujours être imputée par une méthode ou une autre mais cette imputation ne vaut jamais une donnée observée. Il est important de garder cela en tête lors de l'interprétation en s'aidant si possible d'outils permettant de mesurer l'impact de l'imputation. Comme ici, les zones de confiance permettent de mesurer l'impact de l'imputation. Ceci est d'autant plus important lorsque les données manquantes sont nombreuses.
More from Yamossoun

Algorithme de calcule de la racine carrée par dichotomie #dichotomy #squareroot #algorithm









