Comment traiter les valeurs manquantes ?

lovely analytics missing value.png

Dans une base de données, il arrive que des données soient manquantes : elles ne sont pas renseignées pour tous les individus. Ce qui rend les choses un peu plus complexes, c’est qu’il y a plusieurs manières de considérer et de traiter (on parle d’imputation des données) ces données manquantes selon les cas. La plus simple et la moins contraignante serait de supprimer les lignes qui contiennent une valeur manquante. Mais attention on risque vite d’éliminer beaucoup d’individus et de se retrouver avec des données qui ne sont plus représentatives.

Et si on jetait un coup d’œil à quelques cas standards avec un exemple simple :

Données avec des valeurs manquantes

Parfois, le fait que la donnée soit manquante est une information en soit. Si la variable n’est pas renseignée pour certains individus parce qu’ils ne sont pas concernés alors on ne cherchera pas à imputer statistiquement une valeur. Par exemple la variable date de résiliation ne sera pas renseignée pour les clients actifs. Dans ce cas, vous n’aurez pas besoin de compléter les valeurs manquantes, ça n’aurait tout simplement pas de sens.

Imputation de données manquantes

  • Supprimer les individus qui comportent des données manquantes

C’est tentant de se débarrasser tout simplement des individus ayant des valeurs manquantes. Certains outils le font automatiquement lorsqu’on exécute un algorithme, attention donc à ne pas se retrouver avec un tout petit échantillon.

N’utilisez cette méthode que si vous avez vraiment peu de données manquantes sinon vous risquez de biaiser les données.

  •  Remplacer les données manquantes par une valeur fixe

La méthode la plus simple consiste à remplacer toutes les valeurs manquantes d’une variable par une valeur fixe. Pour choisir cette valeur, on analyse la variable pour les individus ayant des valeurs renseignées, il peut s’agir de : la moyenne, la médiane, la valeur la plus fréquente, valeur fixe, …

Cette méthode est à privilégier s’il y a peu de données manquantes et que vous êtes vraiment pressé.

Dans notre exemple, l’âge moyen, calculé pour les valeurs renseignées est de 11 mois.

Imputation avec une valeur fixe

  •  Remplacer les données manquantes avec un arbre de décision

Avec cette méthode, les choses commencent à se préciser un peu plus. Au lieu d’attribuer toujours la même valeur pour tous les individus on va affecter une valeur personnalisée en fonction des autres données existantes. Vous pouvez donc utiliser pour cela un arbre de décision .

Imputation avec un arbre de décision

Pour aller plus loin, il existe d’ailleurs un package R MissForest qui permet d’imputer les valeurs manquantes grâce à une méthode basée sur des forêts aléatoires (à tester).

  • Remplacer les données manquantes par les valeurs les plus proches

On peut aussi utiliser la méthode KNN (k- plus proches voisins) pour estimer les valeurs manquantes. Pour cela, pour chaque individu ayant une valeur manquante, on recherche les k-individus les plus proches (en calculant la distance sur les autres variables renseignées) puis on remplace la valeur manquante par la moyenne de ces k-individus.

Dans l’exemple, on regarde les 2 plus proches voisins.

Imputation des k plus proches voisins

  • Remplacer les données manquantes avec des algorithmes dédiés

La problématique des données manquantes est telle que des algorithmes spécifiques on été développés pour y répondre. Vous retrouverez ces algorithmes implémentés dans certains outils. Dans R, on retrouvera par exemple AMELIA qui est basé sur l’estimation du maximum de vraissemblance et des échantillons bootstrap. Le package Hmsic permet également d’utiliser plusieurs méthodes à base de régression et de bootstrap.

Dans tous les cas,  que vous utilisiez une méthode simple ou plus compliquée, le traitement des valeurs manquantes est une partie importante du travail de préparation des données … A ne pas négliger 😉 

1 réflexion sur “Comment traiter les valeurs manquantes ?”

Laisser un commentaire

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