Comment imputer les valeurs manquantes dans R (avec exemples)

Guide académique complet pour imputer les valeurs manquantes dans R : techniques par moyenne, médiane, MICE et k-NN avec exemples de code reproductibles.

Dr. Mohammed Looti Universitaire et chercheur spécialisé en psychologie
PUBLIÉ
Révisé scientifiquement · Dr. Marwa Abd-Alazim · septembre 17, 2026
Revu médicalement et scientifiquement Vérifié le : septembre 17, 2026
Dr. Marwa Abd-Alazim PhD in Psychology
Faculty Member • University of Kerbala
Critères d'évaluation et normes cliniques

Ce contenu fait l'objet d'un examen scientifique rigoureux et de normes éditoriales médicales afin de garantir l'exactitude clinique et la conformité aux directives fondées sur des preuves (APA / OMS).

Dans le paysage contemporain de la science des données, de l’épidémiologie quantitative et de l’économétrie appliquée, la complétude des jeux de données constitue une hypothèse théorique idéale que la réalité empirique contredit systématiquement. Qu’il s’agisse d’enquêtes psychosociales marquées par l’attrition des répondants, de registres cliniques hospitaliers altérés par des examens non réalisés ou de capteurs environnementaux sujets à des défaillances matérielles intermittentes, la présence de données manquantes représente la règle plutôt que l’exception. Loin de constituer une simple nuisance d’ordre logistique que l’on pourrait contourner par une suppression opportuniste des lignes incomplètes, les données manquantes attaquent les fondements mêmes de l’inférence statistique. Elles introduisent des distorsions au niveau des distributions marginales, altèrent les matrices de variance-covariance et affaiblissent la puissance des tests d’hypothèses, menaçant ainsi la validité interne et externe des conclusions scientifiques.

Le langage statistique R s’est imposé au fil des trois dernières décennies comme la plateforme de référence internationale pour le traitement, l’exploration et la modélisation statistique avancée. Sa flexibilité computationnelle, conjuguée à la richesse incomparable de son écosystème de packages spécialisés, offre aux chercheurs et analystes un arsenal méthodologique sans équivalent pour aborder la problématique des données manquantes. De la manipulation élémentaire en R base jusqu’aux architectures d’imputation multiple par équations chaînées ou aux algorithmes d’apprentissage automatique non paramétriques, R permet de transcender la tentation archaïque du nettoyage par élimination pour adopter des stratégies d’imputation robustes, rigoureuses et reproductibles.

Ce guide exhaustif a pour vocation d’articuler la théorie statistique la plus rigoureuse avec la mise en œuvre programmatique en langage R. À travers un parcours didactique et approfondi en douze volets, nous explorerons les fondements probabilistes régissant les mécanismes de perte d’information, les outils de diagnostic visuel et structurel, les techniques univariées déterministes, les algorithmes itératifs et d’apprentissage machine multivariés, pour conclure sur les standards de validation métrologique et de communication scientifique. Chaque section analyse en détail les compromis mathématiques sous-jacents, les commandes exécutables et les pièges conceptuels à éviter pour garantir une intégrité analytique sans faille.

1. Fondements théoriques des données manquantes en analyse statistique

1.1 Typologie des mécanismes de données manquantes selon Rubin

La formalisation mathématique moderne des mécanismes de données manquantes trouve sa genèse dans les travaux séminaux du statisticien Donald Rubin publiés en 1976. Rubin a établi une taxonomie probabiliste qui structure l’ensemble des approches méthodologiques contemporaines. Cette typologie postule l’existence d’une variable indicatrice de manquance, généralement notée sous forme matricielle par R, liée aux données théoriquement complètes Y, elles-mêmes scindées en une fraction observée Y_obs et une fraction manquante Y_mis. Trois régimes distincts gouvernent la distribution conditionnelle de R sachant Y.

Le premier mécanisme est désigné sous le terme de « données manquantes complètement au hasard » (Missing Completely at Random, ou MCAR). Sous cette hypothèse très contraignante, la probabilité qu’une observation soit manquante est strictement indépendante tant des valeurs observées que des valeurs non observées du jeu de données. Mathématiquement, cela s’exprime par l’égalité P(R | Y_obs, Y_mis) = P(R). Dans une telle situation, le sous-échantillon des individus présentant des profils d’observation intègres peut être assimilé à un sous-échantillon aléatoire simple issu de la population mère. Bien que séduisant sur le plan computationnel car il ne génère aucun biais systématique dans l’estimation des moyennes ou des coefficients de régression, le mécanisme MCAR demeure exceptionnel dans la pratique expérimentale ou observationnelle.

Le second mécanisme, prédominant dans les sciences quantitatives, est le mécanisme « manquant au hasard » (Missing at Random, ou MAR). Contrairement à ce que son appellation intuitive pourrait suggérer, la perte de données n’est pas fortuite à l’échelle globale : la probabilité de manquance dépend systématiquement des variables observées Y_obs, mais devient conditionnellement indépendante des valeurs sous-jacentes manquantes Y_mis une fois ces variables observées prises en compte. La formulation probabiliste s’écrit P(R | Y_obs, Y_mis) = P(R | Y_obs). Par exemple, si les hommes plus âgés omettent plus fréquemment de déclarer leur niveau d’anxiété dans un essai clinique, mais que pour une tranche d’âge et un sexe donnés, la probabilité d’omission ne dépend aucunement de la sévérité réelle de l’anxiété non enregistrée, le processus relève du cadre MAR. Ce mécanisme est dit « ignorable » au sens bayésien et de vraisemblance, autorisant le recours à des modélisations conditionnelles avancées sans modéliser explicitement le processus de censure.

Le troisième scénario, méthodologiquement le plus redoutable, concerne les « données non manquantes au hasard » (Missing Not at Random, ou MNAR). Ici, la probabilité qu’une donnée soit absente dépend intrinsèquement de la valeur non observée elle-même, de sorte que P(R | Y_obs, Y_mis) ne peut être simplifié en éliminant Y_mis. L’exemple paradigmatique réside dans l’auto-déclaration des revenus fiscaux ou de la consommation de substances illicites, où les individus affichant les valeurs les plus extrêmes choisissent délibérément de s’abstenir de répondre. Sous le régime MNAR, le mécanisme de sélection est dit « non ignorable » : toute procédure d’imputation standard qui omet de spécifier un modèle conjoint liant la probabilité d’omission à la variable latente engendre des biais inférentiels massifs et incontrôlables.

Le choix raisonné d’une stratégie d’imputation dépend intimement de l’évaluation critique du mécanisme sous-jacent. Tenter d’appliquer des imputations déterministes sous MCAR peut être acceptable pour de simples analyses exploratoires, mais s’avère catastrophique sous MAR et caduque sous MNAR, ce dernier réclamant des modèles de sélection de Heckman ou des modélisations par mélanges de patrons (pattern-mixture models).

1.2 Conséquences statistiques de la suppression des observations

L’attitude historique, et hélas encore largement répandue chez les praticiens novices, consiste à procéder à l’élimination pure et simple des unités statistiques incomplètes. Ce protocole, désigné sous les termes d’« analyse des cas complets » (complete case analysis) ou de suppression par liste (listwise deletion), se caractérise par une brutalité opératoire qui sacrifie l’ensemble des données recueillies sur un individu dès lors qu’une seule variable présente une valeur non renseignée. Les répercussions d’une telle pratique sur la rigueur inférentielle sont profondes et multidimensionnelles.

La première conséquence directe réside dans une hémorragie de puissance statistique. Dans les enquêtes épidémiologiques ou sociologiques comportant des centaines de questions administrées à plusieurs milliers de participants, la probabilité qu’un sujet présente au moins une valeur manquante s’accroît de façon exponentielle avec la dimensionnalité du protocole. Supprimer tous les cas incomplets peut ainsi conduire à amputer le jeu de données de 30 % à 60 % de son effectif initial, augmentant considérablement l’erreur type des estimateurs et compromettant la capacité des tests statistiques à détecter des tailles d’effet pourtant cliniquement ou scientifiquement pertinentes.

La seconde conséquence, plus insidieuse encore, touche au biais d’estimation des paramètres de population. Si le mécanisme générateur de manquance s’écarte de la stricte hypothèse MCAR pour relever du régime MAR ou MNAR, l’échantillon tronqué ne constitue plus une représentation homothétique de la population cible. Les estimateurs ponctuels de tendance centrale (moyennes, proportions) et les coefficients de régression linéaire ou logistique dérivés des cas complets subissent alors un biais systématique impossible à corriger a posteriori. La validité interne de l’étude s’en trouve irrémédiablement compromise.

Enfin, la déformation structurelle de la variance et de la matrice de variance-covariance représente un danger métrologique majeur. L’élimination des profils incomplets restreint arbitrairement l’étendue des covariations observées dans l’espace multidimensionnel. En réduisant artificiellement la variabilité conjointe, cette pratique fausse l’estimation des corrélations bivariées et multivariées, altère les structures factorielles lors d’analyses en composantes principales (ACP) ou d’analyses factorielles confirmatoires, et peut conduire à identifier des relations fallacieuses ou à masquer des colinéarités cruciales pour la stabilité des modèles prédictifs.

1.3 Représentation et gestion native de NA dans l’environnement R

Pour appréhender sereinement l’ingénierie des données manquantes en langage R, il est impératif d’en comprendre l’infrastructure logique native. L’interpréteur R intègre un type d’objet atomique réservé, baptisé NA (acronyme de Not Available), qui incarne conceptuellement une constante logique signifiant l’absence d’information ou l’inconnu métrologique. Contrairement à de nombreux langages de bas niveau où l’absence de valeur est codée par des sentinelles numériques arbitraires (telles que -999 ou 9999) ou par un pointeur nul générique, R alloue des types typés pour NA (par exemple NA_integer_, NA_real_, NA_complex_ et NA_character_), assurant ainsi une cohérence interne stricte lors de l’exécution vectorielle.

Il convient de distinguer méticuleusement NA de trois autres entités computationnelles souvent confondues par les analystes :

  • NaN (Not a Number) : Représente une indétermination mathématique issue d’une opération arithmétique illégale, telle qu’une division de zéro par zéro ou le calcul du logarithme d’un nombre strictement négatif. Tout NaN est formellement traité comme un NA au sens logique par la fonction de test is.na(), mais la réciproque n’est pas vraie.
  • NULL : Désigne l’absence d’objet ou une structure vide en mémoire. NULL ne possède pas de dimension, ne peut résider au sein d’un vecteur atomique homogène et possède son propre opérateur de test is.null().
  • Inf et -Inf : Représentent les limites infinies résultant de divisions par zéro de nombres réels non nuls. Ce sont des valeurs numériques valides au sens arithmétique et elles ne sont pas qualifiées de valeurs manquantes par les fonctions natives de R.

Une caractéristique fondamentale de l’implémentation de NA en R réside dans le principe de propagation systématique lors des opérations scalaires et vectorielles. Par application stricte de la logique tri-valuée (vrai, faux, inconnu), toute opération arithmétique ou relationnelle impliquant un opérande manquant aboutit inéluctablement à un résultat manquant. L’addition de cinq et d’une valeur inconnue est intrinsèquement inconnue (5 + NA renvoie invariablement NA). De façon analogue, l’application naïve d’une fonction de réduction statistique comme mean(x), sd(x) ou median(x) sur un vecteur contenant au moins un NA se solde par la restitution immédiate de NA, protégeant ainsi l’analyste contre un calcul aveugle qui masquerait une déperdition d’information.

Pour court-circuiter cette propagation conservative et contraindre R à exécuter l’estimation sur les seules valeurs observées, les fonctions statistiques de base exposent l’argument logique na.rm = TRUE (pour NA remove). L’activation de cet argument demande au moteur sous-jacent d’exclure les éléments non renseignés avant d’évaluer la statistique d’intérêt. Si cette flexibilité syntaxique est hautement commode, elle doit être mobilisée avec discernement, car l’usage irréfléchi de na.rm = TRUE revient à exécuter une suppression univariée par défaut, sans vérification préalable du mécanisme d’omission.

2. Diagnostic et exploration systématique des valeurs manquantes

2.1 Fonctions de détection et de quantification en R base

Avant d’envisager la moindre intervention algorithmique sur une matrice de données, le statisticien doit impérativement dresser un bilan quantitatif exhaustif du volume et de la localisation des données manquantes. En environnement R de base, la détection des éléments non renseignés repose sur l’opérateur vectorisé is.na(). Cet opérateur retourne un vecteur ou une matrice de booléens (de même dimension que l’objet évalué) dont les composantes valent TRUE en présence d’une valeur NA et FALSE dans le cas contraire. Il est capital de souligner qu’une comparaison directe via l’opérateur d’égalité usuel (par exemple df$variable == NA) constitue une faute logique majeure : en vertu de la propagation évoquée précédemment, une telle expression ne produit qu’un vecteur entièrement saturé de NA sans jamais discriminer les composantes manquantes.

Pour valider l’intégrité globale d’une structure sans générer d’affichages matriciels volumineux, la fonction anyNA() fournit un contrôle booléen rapide et économe en mémoire vive. Appliquée à un data frame ou à un vecteur atomique, anyNA(df) retourne immédiatement TRUE dès la première occurrence d’une valeur manquante rencontrée, permettant de conditionner l’exécution de pipelines de nettoyage plus complexes.

La quantification fine de l’incomplétude à l’échelle des variables (colonnes) requiert l’association de l’indexation matricielle avec les fonctions de sommation par agrégation. Sachant qu’en R les valeurs logiques TRUE et FALSE sont implicitement converties en 1 et 0 lors des opérations arithmétiques, l’appel à colSums(is.na(df)) dénombre instantanément le total absolu de valeurs manquantes logées dans chaque attribut. Pour obtenir la proportion relative d’omission, la combinaison colMeans(is.na(df)) ou l’usage de apply(df, 2, function(x) mean(is.na(x))) renvoie un profil vectoriel normalisé entre 0 et 1. Ces métriques permettent d’isoler rapidement les variables dont le taux de défaillance excède les seuils critiques admissibles (par exemple plus de 40 % ou 50 % de manquance), orientant le praticien vers leur possible exclusion préliminaire.

Réciproquement, l’évaluation du profil d’incomplétude au niveau des observations (lignes) constitue une étape indispensable pour diagnostiquer la présence de sujets hyper-incomplets. L’évaluation de rowSums(is.na(df)) génère un vecteur indiquant pour chaque unité statistique le nombre exact de variables pour lesquelles aucune information n’a été collectée. L’inspection de la distribution de ces scores de manques individuels (via un simple appel à table(rowSums(is.na(df)))) permet de dissocier les observations présentant des omissions éparses de celles résultant d’abandons précoces d’enquêtes ou d’échecs globaux de numérisation, justifiant dans ce dernier cas précis une suppression unitaire ciblée.

2.2 Cartographie visuelle de l’incomplétude avec les packages spécialisés

L’inspection purement numérique des taux d’omission par ligne ou par colonne échoue souvent à révéler les structures de dépendance spatiale ou temporelle des manques. Pour combler cette limite cognitive, la communauté R a développé des bibliothèques logicielles hautement spécialisées dans la cartographie graphique et combinatoire de la non-réponse. Parmi celles-ci, les packages naniar, visdat et VIM constituent la trilogie d’excellence pour l’analyste moderne.

Le package naniar, développé par Nicholas Tierney, s’intègre harmonieusement dans la philosophie moderne de la manipulation de données. Il introduit la notion de structure de données augmentée par une ombre (shadow matrix), dans laquelle chaque variable originale est dupliquée sous forme d’un facteur indiquant son statut d’observation. Sur le plan visuel, la fonction vis_miss() issue de visdat (ou son pendant dans naniar) produit une restitution matricielle complète du jeu de données sous forme de carte thermique bidimensionnelle haute résolution. Chaque cellule du jeu de données y est représentée selon qu’elle contient une valeur valide ou manquante, avec un récapitulatif synthétique des pourcentages par variable et pour la table entière. Cette cartographie globale permet de détecter en un coup d’œil les grappes d’incomplétude, les blocs temporels de défaillance d’instrumentation ou l’apparition de profils périodiques d’omission.

Au-delà de la représentation matricielle unitaire, le package VIM (Visualization and Imputation of Missing Values) excelle dans la production de diagrammes combinatoires d’incomplétude via sa fonction emblématique aggr(). Cet outil synthétise simultanément deux dimensions fondamentales : d’une part, un histogramme vertical affichant le taux de valeurs manquantes pour chaque attribut délimité ; d’autre part, un diagramme matriciel combinatoire répertoriant tous les patrons d’absence conjoints observables dans l’échantillon. Cette vue combinatoire permet de déceler si certaines variables échouent systématiquement de manière simultanée. Si, par exemple, la variable « revenu du conjoint » et « diplôme du conjoint » sont toujours manquantes de concert, le praticien identifie immédiatement un patron déterministe conditionné par la situation matrimoniale du sujet, plutôt qu’une omission aléatoire indépendante.

2.3 Tests formels de caractérisation du mécanisme d’omission

Si la visualisation graphique autorise des intuitions fécondes, la rigueur métrologique exige de soumettre les distributions empiriques à des tests d’hypothèse formels pour tenter de discriminer le mécanisme générateur de données manquantes. Dans cette perspective, le test de Little constitue le standard méthodologique dominant pour mettre à l’épreuve l’hypothèse nulle selon laquelle les données sont distribuées complètement au hasard (MCAR).

Développé par Roderick Little en 1988, ce test d’homogénéité globale évalue si les moyennes observées pour différents sous-groupes définis par leurs patrons de données manquantes s’écartent de façon statistiquement significative des moyennes globales estimées par l’algorithme Espérance-Maximisation (EM). En R, ce test est accessible à travers la fonction mcar_test() du package naniar (ou via le package BaylorEdPsych). La statistique de test dérivée suit asymptotiquement une loi du Chi-deux dont les degrés de liberté dépendent du nombre de patrons d’incomplétude et de paramètres estimés. L’obtention d’une p-valeur supérieure au seuil canonique de 0,05 conduit à ne pas rejeter l’hypothèse MCAR, conférant ainsi une relative sécurité statistique à l’usage de méthodes d’imputation simplifiées.

Toutefois, une vigilance épistémologique aiguë s’impose quant à l’interprétation des résultats de ce test formel. D’une part, le test de Little repose sur une hypothèse sous-jacente de normalité multivariée des distributions continues ; en présence d’asymétries sévères ou de variables ordinales, sa sensibilité peut être fortement biaisée. D’autre part, comme tout test fondé sur la distribution du Chi-deux, il est hautement sensible à la puissance de l’échantillon : sur de très grandes cohortes, des déviations minimes et dénuées de toute pertinence pratique conduiront à rejeter indûment l’hypothèse MCAR. Enfin et surtout, le test de Little est intrinsèquement incapable de faire la distinction entre un mécanisme MAR et un mécanisme MNAR. Aucun test statistique d’hypothèse ne peut mathématiquement valider qu’un jeu de données relève du statut MAR plutôt que MNAR, car cette distinction repose sur l’indépendance conditionnelle vis-à-vis d’informations non observées par définition. Le diagnostic ultime doit donc demeurer une synthèse lucide entre résultats empiriques, analyses bivariées comparant répondants et non-répondants (via des tests de Student ou du Chi-deux sur des variables indicatrices de présence), et connaissances expertes du domaine étudié.

3. Imputation univariée simple : Remplacement par la moyenne arithmétique

3.1 Syntaxe fondamentale pour l’imputation d’une variable isolée

L’imputation univariée par la moyenne arithmétique constitue historiquement la première réponse heuristique développée face au problème des données manquantes. Son implémentation en langage R de base se caractérise par une économie conceptuelle et syntaxique remarquable, exploitant l’indexation logique conditionnelle par crochets droits. Pour une variable numérique continue donnée, l’objectif consiste à cibler exclusivement les indices de position hébergeant une valeur manquante et à leur réassigner la constante scalaire représentant la moyenne empirique calculée sur les seules observations valides.

Sur le plan programmatique, cette opération s’exécute à travers la syntaxe canonique suivante :

df$score[is.na(df$score)] <- mean(df$score, na.rm = TRUE)

Dans cette séquence expressive, la clause is.na(df$score) génère un vecteur booléen qui active l’assignation sélective uniquement pour les cellules défaillantes. Simultanément, l’évaluation de mean(df$score, na.rm = TRUE) dérive la valeur d’imputation en neutralisant les NA préexistants, évitant la propagation de l’indétermination. Une fois la réassignation vectorielle opérée, la validation immédiate s’effectue en s’assurant que anyNA(df$score) renvoie désormais FALSE et que le nombre d’enregistrements correspond exactement à la dimension initiale du vecteur.

3.2 Impacts psychométriques et distributionnels de la moyenne

Bien que cette procédure jouisse d’une popularité persistante liée à son immédiateté calculatoire, ses répercussions sur les propriétés métrologiques et inférentielles de l’échantillon sont universellement reconnues comme délétères par les statisticiens méthodologues. En substituant une valeur invariante et déterministe à l’ensemble des éléments manquants, l’analyste injecte artificiellement une pointe de Dirac au centre exact de la distribution empirique.

Le premier désastre distributionnel concerne l’atrophie systématique de la variance échantillonnale. En concentrant arbitrairement une proportion substantielle des effectifs sur la moyenne mathématique, la somme des carrés des écarts à la moyenne n’enregistre aucune contribution issue des valeurs imputées, alors même que le dénominateur de la formule de la variance (la taille de l’échantillon n – 1) augmente pour intégrer ces cas réputés complétés. La variance observée se trouve donc mécaniquement contractée vers le bas. Par voie de conséquence, les erreurs types des estimateurs sont sévèrement sous-estimées, induisant des intervalles de confiance artificiellement resserrés et gonflant drastiquement le risque d’erreur de type I (rejet intempestif de l’hypothèse nulle là où elle est pourtant vérifiée).

Le second désastre métrologique touche à la dégradation des relations bivariées et multivariées. L’imputation univariée par la moyenne postule implicitement que la valeur manquante d’un individu ne dépend d’aucune de ses autres caractéristiques documentées. De ce fait, elle dilue les relations de corrélation de Pearson entre la variable imputée et l’ensemble des covariables du jeu de données. Ce phénomène d’atténuation tire systématiquement les coefficients de régression vers l’origine, dégradant la fidélité prédictive des modèles et biaisant les paramètres de trajectoire dans les modélisations en équations structurelles.

3.3 Démonstration pas à pas sur jeu de données simulé

Afin de quantifier empiriquement l’ampleur de ces distorsions, considérons la simulation rigoureuse d’un échantillon gaussien standardisé sous R, dans lequel nous introduisons délibérément une perte d’information sous le mécanisme MCAR. Considérons un vecteur initial de mille observations distribuées selon une loi normale centrée réduite, avec une moyenne théorique de zéro et un écart-type de un. Introduisons ensuite un taux d’omission contrôlé de 25 % en sélectionnant aléatoirement deux cent cinquante positions matricielles pour leur assigner la valeur NA.

Lors de l’inspection descriptive initiale de ce jeu incomplet, le calcul de l’écart-type sur les sept cent cinquante observations valides restantes (via sd(valeurs, na.rm = TRUE)) fluctue étroitement autour de la valeur nominale de 1,00, confirmant l’absence de biais distributionnel sous le mécanisme MCAR. En appliquant ensuite l’imputation par la moyenne globale à l’aide de la syntaxe vectorielle standardisée, l’écart-type recalculé sur les mille unités désormais complétées s’effondre de manière spectaculaire pour s’établir aux alentours de 0,86. Cette perte de quatorze pour cent de dispersion statistique illustre de manière éclatante la falsification structurelle induite par le procédé. De surcroît, le kurtosis (coefficient d’aplatissement de Pearson) enregistre une élévation anormale, traduisant une concentration leptokurtique excessive autour de la valeur centrale qui altère la normalité univariée nécessaire à l’application des tests paramétriques subséquents.

4. Imputation par la médiane pour distributions asymétriques

4.1 Justification théorique face aux valeurs extrêmes

Lorsque les distributions empiriques s’écartent du modèle théorique de la loi normale pour afficher des asymétries prononcées (skewness) ou des queues de distribution épaisses peuplées de valeurs extrêmes ou aberrantes, le recours à la moyenne arithmétique devient scientifiquement indéfendable. En tant que moment statistique d’ordre un, la moyenne possède un point de rupture égal à zéro : une unique valeur démesurément élevée ou basse suffit à déplacer arbitrairement la valeur d’imputation dans une zone totalement déconnectée de la masse de probabilité principale de la variable.

Dans ce contexte, la médiane, définie comme la statistique d’ordre divisant l’échantillon ordonné en deux effectifs rigoureusement égaux, offre une robustesse métrologique supérieure grâce à un point de rupture atteignant 50 %. Elle capture fidèlement la tendance centrale typique sans se laisser influencer par les valeurs atypiques logées dans les queues distributionnelles. Cette propriété prend une résonance critique lors du traitement de variables économiques (telles que le patrimoine net ou les dépenses de santé des ménages) ou psychométriques (échelles ordinales de Likert, temps de latence cognitive). Pour ces métriques, imputer par la médiane garantit que la valeur de substitution attribuée aux cas manquants reflète une modalité plausible et représentative de la réalité comportementale observée.

4.2 Implémentation pratique de l’imputation médiane en R base

L’opérationnalisation de l’imputation médiane en R de base s’aligne fidèlement sur l’architecture conditionnelle de l’imputation par la moyenne, tout en substituant l’appel de fonction à median(). La directive s’exécute ainsi :

df$reve\nu[is.na(df$revenu)] <- median(df$revenu, na.rm = TRUE)

Une précaution technique essentielle concerne le traitement des variables quantitatives discrètes ou des scores d’échelles de Likert codés sous forme d’entiers. Lorsque l’échantillon observé comprend un nombre pair d’éléments valides, la fonction median() de R calcule par défaut la demi-somme des deux valeurs centrales, ce qui peut résulter en une valeur décimale intermédiaire (par exemple 3,5 sur une échelle graduée de 1 à 5). Si l’analyste souhaite impérativement préserver l’intégrité discrète de l’attribut, il doit encapsuler l’expression dans une fonction d’arrondi appropriée, telle que round(median(df$score, na.rm = TRUE)), garantissant que la valeur imputée appartienne formellement à l’espace d’état observable de l’échelle d’évaluation.

4.3 Étude comparative : Moyenne vs Médiane

L’arbitrage formel entre l’imputation par la moyenne et l’imputation par la médiane repose sur l’évaluation conjointe de deux critères d’erreur : l’écart quadratique moyen (RMSE) et l’écart absolu moyen (MAE). Sur le plan théorique de l’optimisation mathématique, la moyenne minimise la somme des carrés des erreurs par rapport aux observations réelles, tandis que la médiane minimise la somme des valeurs absolues des déviations. Par conséquent, dès lors que la fonction de perte privilégiée par le chercheur vise la résilience face aux erreurs substantielles isolées, la médiane surpasse structurellement la moyenne.

Sur le plan distributionnel, une analyse comparée menée sur des données log-normales (caractéristiques des salaires ou des temps de survie) démontre que l’imputation par la moyenne distord considérablement le coefficient d’asymétrie de l’échantillon imputé, car elle place la valeur d’imputation bien au-delà de la zone de densité maximale, dans le flanc descendant de la courbe. À l’inverse, l’imputation par la médiane maintient le pic de densité à son emplacement naturel. Il est dès lors formellement recommandé, pour toute analyse univariée déterministe, d’évaluer préalablement le coefficient d’asymétrie de Fisher-Pearson : si la valeur absolue du coefficient excède 1,0, l’imputation médiane doit prévaloir sur l’imputation par la moyenne afin de limiter les distorsions de représentativité.

5. Traitement des variables catégorielles : Imputation par le mode

5.1 Algorithmique du calcul du mode en langage R

Lorsque le processus de nettoyage se confronte à des variables qualitatives, qu’elles soient nominales (nationalité, statut d’emploi) ou ordinales non assimilables à des métriques continues, les concepts de moyenne et de médiane perdent toute signification arithmétique. Le paramètre de tendance centrale adéquat devient alors le mode statistique, défini comme la modalité ou le niveau de facteur affichant la fréquence empirique d’apparition la plus élevée dans l’échantillon observé.

Curieusement, l’interpréteur de base du langage R ne propose pas de fonction intégrée nommée mode() dédiée à l’extraction de la fréquence modale (la commande native mode(x) servant exclusivement à interroger le mode de stockage d’un objet en mémoire interne, tel que numeric, character ou logical). L’analyste doit par conséquent implémenter son propre algorithme fonctionnel. La construction canonique repose sur l’interaction des fonctions table() et which.max() :

calculer_mode <- function(v) { table_v <- table(v); names(table_v)[which.max(table_v)] }

Cette syntaxe compile la distribution de fréquences marginales en excluant nativement les NA, isole la position de l’effectif maximal grâce à which.max(), puis extrait le nom textuel associé à cet indice. Dans les contextes où l’on gère des distributions bimodales ou multimodales parfaites, un algorithme plus sophistiqué est requis afin d’éviter de privilégier systématiquement la première catégorie rencontrée dans l’ordre d’énumération, par exemple en procédant à un tirage au sort aléatoire équiprobable parmi l’ensemble des modalités partageant le rang maximal.

5.2 Application sur facteurs et vecteurs nominaux

L’application concrète de l’imputation par le mode sur un vecteur de type factor requiert une manipulation soigneuse de la structure de ses niveaux d’attribut (levels). En environnement R, toute tentative d’assigner une chaîne textuelle absente de la nomenclature préétablie des niveaux du facteur génère immédiatement une valeur manquante supplémentaire assortie d’un avertissement explicite. Heureusement, puisque le mode est par essence extrait des valeurs observées, ce risque est structurellement neutralisé dès lors que le vecteur cible est correctement formaté.

La mise en œuvre pratique s’articule comme suit sur un facteur :

valeur_modale <- names(which.max(table(df$groupe)))
df$groupe[is.na(df$groupe)] <- valeur_modale

Bien que cette démarche restaure une matrice rectangulaire sans lacunes, ses conséquences méthodologiques sont éminemment problématiques. En assignant mécaniquement la catégorie modale à tous les profils de non-répondants, on procède à un surgonflement artificiel de la prévalence marginale de cette classe majoritaire. L’hétérogénéité qualitative de l’échantillon se trouve artificiellement réduite, et les tables de contingence bivariées (croisant cette variable imputée avec d’autres facteurs de stratification) subissent une altération drastique des statistiques du test du Chi-deux et des rapports de cotes (odds ratios), faussant la détection des interactions sociologiques ou biologiques réelles.

5.3 Alternatives probabilistes pour les attributs discrets

Afin d’échapper à la distorsion unilatérale imposée par l’imputation déterministe du mode, l’analyste rigoureux peut mobiliser une imputation probabiliste univariée fondée sur le tirage aléatoire proportionnel aux fréquences marginales observées. Cette technique permet de respecter la distribution multinomiale de la variable d’origine tout en évitant d’hypertrophier la classe dominante.

En R, cette stratégie probabiliste s’orchestre avec une grande élégance à l’aide de la fonction générique sample() :

indices_manquants <- which(is.na(df$categorie))
modalites_valides <- na.omit(df$categorie)
df$categorie[indices_manquants] <- sample(modalites_valides, size = length(indices_manquants), replace = TRUE)

Dans ce protocole, le vecteur de substitution est constitué par un rééchantillonnage avec remise tiré au sein de la population des observations intègres. Par construction mathématique, chaque niveau de facteur possède une probabilité d’assignation strictement identique à sa proportion empirique au sein de l’échantillon valide. Cette méthode préserve rigoureusement l’entropie informationnelle, maintient la conformité des pourcentages globaux et prévient l’effondrement de la variabilité catégorielle. Sa limite réside toutefois, à l’instar des imputations univariées continues, dans son incapacité à capter les liens d’association que cette variable entretient avec les autres descripteurs individuels.

6. Automatisation itérative sur colonnes multiples en R base

6.1 Implémentation par boucles itératives for

Dès lors que la structure tabulaire analysée comprend plusieurs dizaines ou centaines de descripteurs altérés par des taux variables de valeurs manquantes, la répétition manuelle d’instructions univariées devient intenable sur le plan de l’ingénierie logicielle et expose le projet à de nombreuses erreurs humaines. L’automatisation du balayage des colonnes représente donc une compétence opérationnelle déterminante pour le data scientist travaillant dans l’environnement R de base.

La première voie d’automatisation repose sur la conception d’une boucle impérative for parcourant l’ensemble de l’espace indiciaire des colonnes via seq_len(ncol(df)). Un enjeu capital réside dans le filtrage défensif préalable du type de chaque colonne : exécuter aveuglément un calcul de moyenne arithmétique sur un vecteur de dates ou de chaînes textuelles déclencherait l’arrêt immédiat du script avec émission d’une erreur d’incompatibilité de type. La boucle doit ainsi intégrer des gardes d’exécution vérifiant simultanément la nature de la variable et la présence effective de données manquantes :

for (j in seq_along(df)) {
  if (is.numeric(df[[j]]) && anyNA(df[[j]])) {
    valeur_subst <- mean(df[[j]], na.rm = TRUE)
    df[[j]][is.na(df[[j]])] <- valeur_subst
  }
}

Sur le plan de l’efficience algorithmique, cette approche itérative en R de base présente une complexité temporelle linéaire par rapport au nombre de colonnes et se montre parfaitement performante sur des jeux de données de taille moyenne (jusqu’à plusieurs centaines de milliers d’enregistrements), à condition d’utiliser la double indexation par crochets df[[j]] qui évite les copies structurelles superflues de l’enveloppe du data frame.

6.2 Approches vectorisées avec la famille apply

Bien que les boucles for soient devenues très efficientes dans les versions récentes de R grâce au compilateur d’octocode (byte-code compiler), l’idiome fondamental du langage repose sur le paradigme fonctionnel et la vectorisation de haut niveau incarnée par la famille des fonctions apply. Pour la transformation en masse d’un tableau de données, lapply() constitue l’outil de prédilection, car un data frame est formellement implémenté en R sous forme d’une liste chaînée de vecteurs de longueurs égales.

L’opérationnalisation fonctionnelle s’exécute en projetant une fonction anonyme de mutation sur chaque élément de la liste :

df_impute <- as.data.frame(lapply(df, function(col) {
  if (is.numeric(col)) {
    col[is.na(col)] <- median(col, na.rm = TRUE)
    return(col)
  } else if (is.factor(col) || is.character(col)) {
    mode_val <- names(which.max(table(col)))
    col[is.na(col)] <- mode_val
    return(col)
  }
  return(col)
}))

Cette approche fonctionnelle offre l’avantage insigne d’isoler les effets de bord au sein de la closure d’évaluation et de retourner un objet entièrement réassemblé via as.data.frame(). Elle permet en outre de combiner au sein d’une unique passe d’exécution des règles d’imputation différenciées selon la typologie sous-jacente des vecteurs atomiques rencontrés, conférant au script une concision et une lisibilité optimales conformes aux standards de l’ingénierie statistique.

6.3 Développement d’une routine modulaire et réutilisable

Pour assurer la pérennité et la reproductibilité des analyses dans des environnements de production ou de recherche collaborative, la meilleure pratique consiste à encapsuler la logique de nettoyage dans une fonction personnalisée, paramétrable et hautement défensive. Cette routine doit exposer des arguments permettant à l’utilisateur de sélectionner la statistique de centrage de son choix (moyenne ou médiane), de contrôler le comportement face aux valeurs aberrantes et d’émettre des rapports d’exécution détaillés.

Une fonction industrielle rigoureuse doit intégrer des mécanismes d’interception des cas dégénérés, notamment :

  • L’identification des colonnes totalement composées de valeurs manquantes (all(is.na(x))), pour lesquelles aucun calcul de tendance centrale n’est mathématiquement réalisable. La fonction doit alors refuser d’imputer ces vecteurs et avertir l’analyste par un message explicite (via warning()).
  • La préservation scrupuleuse des attributs méta-analytiques, des noms de colonnes et des étiquettes de facteurs.
  • L’option de retourner un journal d’audit répertoriant la liste précise des variables modifiées, la proportion d’éléments altérés par variable et la valeur scalaire exacte employée pour la substitution.

Ce niveau de modularité logicielle constitue le socle technique indispensable pour transformer des scripts empiriques hétéroclites en composants d’ingénierie logicielle pérennes et auditables.

7. Approches modernes d’imputation avec l’écosystème Tidyverse

7.1 Remplacement vectorisé avec mutate() et across() de dplyr

L’émergence de l’écosystème Tidyverse, structuré autour de principes de manipulation fonctionnelle fluide et de syntaxe déclarative unifiée, a profondément transformé les pratiques d’ingénierie des données sous R. Au sein du package fondamental dplyr, la combinaison de la directive de mutation mutate() avec le sélecteur multifonctionnel across() offre une élégance et une expressivité remarquables pour l’imputation sur des ensembles d’attributs vérifiant certaines propriétés prédéfinies.

En mobilisant l’opérateur de composition moderne (pipe natif |> introduit depuis la version 4.1 de R), le traitement simultané de toutes les colonnes numériques s’orchestre avec une grande clarté conceptuelle :

library(dplyr)
library(tidyr)

df_impute <- df |>
  mutate(across(where(is.numeric), ~ replace_na(.x, median(.x, na.rm = TRUE))))

Dans ce paradigme de programmation fonctionnelle, le sélecteur contextuel where(is.numeric) inspecte dynamiquement le schéma de la table pour n’extraire que les colonnes quantitatives. La fonction lambda ~ replace_na(.x, ...) issue de tidyr se charge ensuite de substituer l’évaluation de la médiane aux seules lacunes identifiées par .x. En complément, la fonction polyvalente coalesce() peut être exploitée pour chaîner des remplacements prioritaires : coalesce(valeur_principale, valeur_secondaire, valeur_par_defaut) évalue séquentiellement ses arguments et retient la première valeur non manquante disponible pour chaque observation, facilitant la fusion hiérarchique de colonnes de mesures concordantes.

7.2 Imputation conditionnelle stratifiée par groupe

L’un des apports majeurs de la grammaire de données de dplyr réside dans la fluidité de la manipulation conditionnelle stratifiée grâce à l’adjonction de l’opérateur group_by(). Dans la quasi-totalité des études empiriques, l’hypothèse selon laquelle les individus d’une population partagent une valeur centrale identique indépendamment de leurs covariables majeures est non seulement réductionniste, mais introduit un biais statistique direct lorsque la distribution des paramètres diffère significativement entre sous-populations.

À titre d’illustration méthodologique, considérons l’imputation de la masse salariale ou du taux de cholestérol sérique au sein d’une cohorte clinique hétérogène comprenant divers groupes d’âge et de sexe. Imputer un homme de 65 ans par la moyenne générale de l’échantillon global (comprenant des femmes de 20 ans) revient à injecter une information structurellement biaisée. Avec dplyr, l’imputation contextuelle intra-groupe s’exécute de façon native sans nécessiter de boucles de découpage complexes :

df_stratifie <- df |>
  group_by(sexe, tranche_age) |>
  mutate(across(where(is.numeric), ~ replace_na(.x, mean(.x, na.rm = TRUE)))) |>
  ungroup()

Sous cette construction, le calcul de la moyenne est partitionné de manière totalement indépendante pour chaque combinaison factorielle identifiée. L’imputation s’ajuste à l’hétérogénéité contextuelle, préservant ainsi les différentiels inter-groupes essentiels à la pertinence des modélisations ultérieures. L’appel terminal à ungroup() dissout l’index de regroupement pour restituer un tibble neutre prêt pour les phases d’inférence.

7.3 Propagation longitudinale des données avec tidyr

Les recherches longitudinales, les protocoles à mesures répétées et les séries temporelles financières introduisent une dynamique séquentielle d’incomplétude que les méthodes transversales statiques ne peuvent appréhender de manière optimale. Dans ces environnements dynamiques, une valeur manquante observée à un instant t fait souvent suite à une mesure intègre recueillie à l’instant t-1, justifiant le recours à des heuristiques de propagation séquentielle.

Le package tidyr met à disposition de l’analyste la fonction fill(), spécifiquement conçue pour ces architectures temporelles. Deux approches symétriques y sont nativement implémentées :

  • La dernière observation reportée (Last Observation Carried Forward, ou LOCF) : Déclenchée via le paramètre .direction = "down", cette méthode propage la dernière valeur valide observée vers le bas chronologique pour combler les absences immédiatement consécutives.
  • La prochaine observation reportée rétroactivement (Next Observation Carried Backward, ou NOCB) : Activée via .direction = "up", elle effectue la propagation inverse en projetant la première valeur future valide vers le passé manquant.

Il est impératif d’émettre une mise en garde méthodologique sévère concernant la validité épidémiologique et statistique de la méthode LOCF. Bien qu’extrêmement répandue dans les essais cliniques de phase III en raison de sa simplicité opérationnelle apparente, l’approche LOCF repose sur l’hypothèse ultra-restrictive selon laquelle l’état clinique ou physiologique du patient demeure parfaitement stationnaire entre sa dernière mesure valide et sa défection du protocole. Si cette hypothèse est violée, la méthode LOCF peut introduire un biais massif et imprévisible dans l’estimation de l’efficacité thérapeutique des traitements, en particulier lors d’études sur des pathologies dégénératives où l’absence de mesure résulte précisément de la dégradation de l’état de santé du participant. Son utilisation doit dès lors être réservée à des séries courtes ou à des analyses de sensibilité explicitement confrontées à des modèles mixtes longitudinaux ou à des équations d’estimation généralisées (GEE).

8. Imputation multivariée par les k plus proches voisins (k-NN)

8.1 Principes géométriques de la méthode k-NN

Pour dépasser les tares congénitales de l’imputation univariée tout en exploitant la structure de dépendance multivariée globale des observations, l’algorithme des k plus proches voisins (k-Nearest Neighbors ou k-NN) propose un cadre d’imputation fondé sur la proximité géométrique au sein d’un espace multidimensionnel normé. Formulée pour la première fois pour les données manquantes dans les années 1990, cette méthode substitue au remplacement univarié une prédiction locale conditionnée par le profil complet des unités statistiques les plus similaires.

Sur le plan topologique, chaque observation constitue un vecteur de coordonnées dans un espace métrique à p dimensions. Lorsqu’un individu cible i présente une valeur manquante sur une variable particulière Y, l’algorithme k-NN calcule la distance géométrique séparant cet individu de tous les autres sujets j pour lesquels la variable Y est pleinement documentée, le calcul de cette distance s’opérant exclusivement sur le sous-ensemble de variables auxiliaires X intégralement partagées par les deux individus. Les métriques de distance employées dépendent étroitement de la nature des descripteurs :

  • La distance euclidienne ou la distance de Manhattan pour les variables continues pures.
  • La distance de Gower, métrique composite par excellence pour les jeux de données mixtes, capable de sommer de manière cohérente des distances continues standardisées, des similarités de Dice ou Jaccard pour les variables binaires, et des distances de concordance de rang pour les variables ordinales.

Une fois les distances évaluées, l’algorithme isole les k observations les plus proches (les donneurs) et agrège leurs valeurs sur la variable manquante Y pour imputer l’individu receveur. Cette agrégation s’effectue usuellement par la moyenne arithmétique simple, la médiane locale ou par une moyenne pondérée par l’inverse de la distance géométrique relative, accordant ainsi un poids décisionnel prépondérant aux voisins les plus rigoureusement concordants.

8.2 Implémentation pratique avec le package VIM

L’implémentation de référence la plus complète et la plus flexible en R de la méthodologie k-NN est hébergée au sein du package spécialisé VIM, à travers sa fonction de haut niveau kNN(). Cette routine intègre nativement la métrique de distance de Gower, ce qui lui confère la capacité de traiter des data frames complexes contenant simultanément des variables numériques, factorielles ordinales et nominales sans nécessiter d’encodage disjonctif préalable manuel.

L’exécution de la méthode requiert une attention méticuleuse portée au paramétrage des hyperparamètres statistiques :

library(VIM)

df_impute_knn <- kNN(df,
                    variable = c("salaire", "score_satisfaction"),
                    k = 5,
                    numFun = median,
                    catFun = maxCat,
                    imp_var = TRUE)

Dans cet extrait, le paramètre k = 5 détermine la taille du voisinage de donneurs. Le choix de cet hyperparamètre procède d’un arbitrage fondamental de la théorie de l’apprentissage entre biais et variance : un k trop restreint (par exemple k = 1) expose l’imputation à une instabilité majeure en surajustant sur le bruit de mesure du seul voisin retenu ; inversement, un k trop élevé dilue la spécificité locale et converge progressivement vers l’imputation globale de la moyenne, anéantissant l’intérêt du modèle géométrique. L’argument imp_var = TRUE ordonne la création automatique de colonnes booléennes d’audit (nommées avec le suffixe _imp) indiquant pour chaque cellule si la valeur finale provient d’un relevé empirique ou d’une imputation algorithmique.

8.3 Évaluation comparative des résultats de k-NN

Le bénéfice premier de la procédure k-NN réside dans sa remarquable faculté à préserver les corrélations multivariées non linéaires et les groupements naturels au sein des données, car les valeurs imputées proviennent directement d’individus réels partageant des caractéristiques convergentes. De plus, elle évite l’écueil des valeurs impossibles : une variable imputée par k-NN ne prendra jamais une valeur située hors des frontières des valeurs réelles observables dans la cohorte des donneurs.

Néanmoins, l’algorithme k-NN présente plusieurs contreparties méthodologiques et computationnelles qui en restreignent la portée dans certains contextes. D’une part, sa complexité algorithmique s’élève à O(n² × p), ce qui engendre un temps d’exécution prohibitif dès lors que la base de données excède plusieurs dizaines de milliers d’enregistrements. D’autre part, la méthode souffre du fléau de la dimensionnalité (curse of dimensionality) : lorsque le nombre de covariables auxiliaires p augmente, le volume de l’espace métrique croît de manière exponentielle, de sorte que tous les points deviennent presque équidistants les uns des autres, dégradant substantiellement la pertinence de la notion même de « voisinage le plus proche ». Enfin, la présence de variables accessoires ou de bruit blanc dans l’ensemble X perturbe le calcul des distances de Gower en masquant l’influence des véritables prédicteurs informatifs.

9. Imputation multiple par équations chaînées (MICE)

9.1 Fondements de l’approche Fully Conditional Specification (FCS)

L’imputation multiple par équations chaînées (Multiple Imputation by Chained Equations, ou MICE) constitue le standard d’or (gold standard) universellement reconnu pour l’imputation sous l’hypothèse de mécanisme manquant au hasard (MAR). Théorisée par Stef van Buuren et ses collaborateurs, la méthode MICE repose sur le paradigme de la spécification entièrement conditionnelle (Fully Conditional Specification, ou FCS). Contrairement à l’imputation multiple par modélisation conjointe (Joint Modeling) qui exige la formulation d’une distribution normale multivariée pour l’ensemble des variables, la FCS décompose le problème d’imputation multivariée en une série de sous-modèles univariés conditionnels itératifs, résolus variable par variable au sein d’une chaîne de Markov de Monte-Carlo (MCMC).

L’innovation conceptuelle décisive de l’imputation multiple réside dans la gestion explicite de l’incertitude statistique. Toute méthode d’imputation simple (qu’elle repose sur la moyenne, une régression déterministe ou k-NN) attribue une valeur unique à la cellule vide et traite cette prédiction avec la même certitude absolue qu’une valeur empiriquement mesurée lors des analyses ultérieures. Cette négation de l’incertitude d’imputation conduit inéluctablement à une sous-estimation des erreurs types et à une inflation artificielle du taux de faux positifs dans l’inférence.

Pour surmonter cette aporie, MICE déploie un protocole probabiliste en trois phases séquentielles :

  • Imputation : L’algorithme génère non pas un, mais m jeux de données complets distincts (généralement m compris entre 5 et 50 selon le taux de données manquantes). Dans chaque jeu, les données manquantes sont remplacées par des tirages stochastiques intégrant à la fois l’incertitude sur les paramètres du modèle de régression conditionnel et le résidu aléatoire d’échantillonnage.
  • Analyse : Le modèle statistique cible (par exemple une régression linéaire, un modèle logistique ou un modèle à risques proportionnels de Cox) est ajusté de façon totalement indépendante sur chacun des m jeux de données imputés, produisant m vecteurs d’estimations de coefficients et de matrices de variance-covariance associés.
  • Agrégation (Pooling) : Les résultats obtenus sur chaque jeu sont combinés mathématiquement selon les règles d’algèbre inférentielle formalisées par Rubin pour fournir un jeu unifié de coefficients, d’erreurs types ajustées et de p-valeurs fiables.

9.2 Mise en œuvre pas à pas avec le package mice

L’écosystème R dispose avec le package éponyme mice d’une implémentation remarquablement robuste de l’architecture FCS. La flexibilité du package permet de spécifier des formes fonctionnelles distinctes pour chaque variable en fonction de sa distribution : l’appariement prédictif de moyenne (Predictive Mean Matching, ou PMM) pour les variables numériques continues asymétriques ou bornées, la régression logistique binaire (logreg) pour les variables dichotomiques, la régression logistique multinomiale (polyreg) pour les facteurs non ordonnés, et la régression logistique ordinale à seuils proportionnels (polr) pour les facteurs ordonnés.

L’orchestration d’une session complète d’imputation sous mice se configure selon le déroulement rigoureux suivant :

library(mice)

# Configuration de la matrice des prédicteurs et des méthodes
init <- mice(df, maxit = 0)
methode_vector <- init$method
methode_vector["salaire"] <- "pmm"
methode_vector["fumeur"] <- "logreg"

matrice_pred <- init$predictorMatrix
# Exclure un identifiant d'observation du modèle prédictif
matrice_pred[, "id_patient"] <- 0

# Génération de 10 jeux de données multiples sur 20 itérations MCMC
imputations_mice <- mice(df,
                        m = 10,
                        method = methode_vector,
                        predictorMatrix = matrice_pred,
                        maxit = 20,
                        seed = 2026,
                        printFlag = FALSE)

Après l’exécution, il est impératif d’évaluer la convergence de l’échantillonneur de Gibbs sous-jacent. Cette étape diagnostique s’effectue par l’inspection des trajectoires itératives via la fonction plot(imputations_mice). Les courbes représentant la moyenne et l’écart-type des valeurs imputées au cours des maxit itérations doivent s’entrelacer harmonieusement sans afficher de dérive directionnelle monotone, confirmant que la chaîne de Markov a atteint son régime stationnaire de convergence ergonomique.

9.3 Agrégation des modèles statistiques selon les règles de Rubin

Une fois les m jeux d’imputations validés, l’étape analytique finale consiste à estimer le modèle statistique cible sur l’objet de classe mids (Multiply Imputed Data Set) via la fonction with(), puis à agréger les sorties analytiques grâce à la fonction pool() :

# Ajustement d'une régression logistique sur chaque jeu imputé
modeles_separes <- with(imputations_mice, glm(maladie ~ age + salaire + fumeur, family = binomial))

# Agrégation selon les règles de Rubin
resultat_final <- pool(modeles_separes)
summary(resultat_final)

Sur le plan mathématique, l’estimateur final de Rubin combine deux sources de variabilité structurelle pour calculer l’erreur type totale de chaque coefficient :

  • La variance intra-imputation (within-imputation variance, W) : Elle correspond à la moyenne arithmétique des carrés des erreurs types calculées à l’intérieur de chacun des m modèles.
  • La variance inter-imputations (between-imputation variance, B) : Elle quantifie la variance des estimations ponctuelles des coefficients d’un jeu de données imputé à l’autre, matérialisant l’incertitude directement attribuable à l’omission d’information.

La variance totale T est ensuite déduite par la formule canonique T = W + (1 + 1/m) * B. L’algorithme pool() dérive automatiquement des métriques d’évaluation hautement instructives, notamment la fraction de variance manquante (Fraction of Missing Information, ou FMI). La métrique FMI informe l’analyste sur la proportion exacte de l’incertitude résiduelle pesant sur un coefficient qui est imputable à la non-réponse empirique. Si la FMI d’un prédicteur s’avère substantielle, il est recommandé d’accroître le nombre de jeux générés m afin de stabiliser les degrés de liberté et de garantir une puissance statistique optimale lors du calcul des intervalles de confiance.

10. Imputation non paramétrique par forêts aléatoires avec missForest

10.1 Mécanisme algorithmique de missForest

Tandis que l’imputation multiple par équations chaînées repose sur la spécification manuelle et explicite de modèles de régression conditionnels (dont la forme linéaire peut être mise en défaut face à des surfaces de réponse complexes), l’algorithme missForest, formalisé par Daniel Stekhoven et Peter Bühlmann en 2012, introduit un changement de paradigme radical en transposant la puissance des forêts aléatoires au champ de l’imputation des données.

Le fonctionnement de missForest repose sur une dynamique non paramétrique itérative d’apprentissage supervisé. Pour chaque variable contenant des données manquantes, l’algorithme divise l’ensemble des observations en deux partitions : l’ensemble d’apprentissage constitué des individus pour lesquels cette variable est observée, et l’ensemble de prédiction formé par les unités statistiques affichant une valeur manquante. Une forêt aléatoire d’arbres de décision de régression (pour les variables continues) ou de classification (pour les variables qualitatives) est alors entraînée en utilisant toutes les autres variables du jeu de données comme prédicteurs. La forêt entraînée prédit ensuite les valeurs manquantes de la variable ciblée. Ce processus est répété séquentiellement pour l’ensemble des attributs incomplets, bouclant une première itération globale.

Cette boucle d’apprentissage et d’imputation se poursuit de manière récursive à travers plusieurs itérations jusqu’à ce qu’un critère d’arrêt mathématique soit satisfait, c’est-à-dire dès que la différence relative entre les matrices imputées successives commence à croître, signalant la convergence de l’algorithme vers une structure stable. Les atouts fondamentaux de ce mécanisme sont remarquables :

  • Absence totale d’hypothèses distributionnelles : l’algorithme n’exige ni normalité multivariée, ni linéarité des relations, ni homoscédasticité des résidus.
  • Détection native et automatique des interactions d’ordre élevé et des non-linéarités complexes sans nécessiter leur spécification manuelle par l’utilisateur.
  • Prise en charge élégante des types de données mixtes au sein d’une architecture algorithmique uniforme.

10.2 Application et optimisation des paramètres sous R

L’exécution de la méthode au sein de l’environnement R s’opère par l’entremise du package spécialisé missForest. Pour tirer pleinement parti de la vectorisation moderne et réduire des temps de calcul parfois exigeants, il est fortement conseillé de coupler l’algorithme à un backend de calcul parallèle tel que doParallel.

La mise en œuvre et le paramétrage des hyperparamètres d’arbres s’illustrent dans l’exemple canonique suivant :

library(missForest)
library(doParallel)

# Enregistrement du cluster de calcul parallèle sur plusieurs cœurs
cl <- makeCluster(parallel::detectCores() - 1)
registerDoParallel(cl)

# Exécution de missForest avec parallélisation
resultat_mf <- missForest(df,
                         maxiter = 10,
                         ntree = 100,
                         mtry = floor(sqrt(ncol(df))),
                         parallelize = "forests")

stopCluster(cl)

# Récupération de la matrice imputée
df_impute_mf <- resultat_mf$ximp

Le contrôle des hyperparamètres joue un rôle fondamental dans la précision du traitement. L’argument ntree = 100 fixe le nombre d’arbres constitutifs de chaque forêt ; si des valeurs de 100 à 200 suffisent dans la plupart des situations pratiques, des architectures plus denses peuvent être mobilisées pour réduire la variance des prédictions sur des données complexes. Le paramètre mtry régit le nombre de variables candidates tirées au hasard à chaque division de nœud : sa valeur par défaut (la racine carrée du nombre de colonnes) offre un excellent compromis entre décorrélation des arbres et puissance prédictive.

10.3 Évaluation de l’erreur d’imputation interne (OOB)

L’une des fonctionnalités les plus attractives de missForest réside dans sa capacité structurelle à fournir une estimation objective et interne de la précision de ses imputations, sans nécessiter la mise en œuvre d’une validation croisée externe coûteuse. Cette métrique découle directement de l’exploitation des observations « hors-poche » (Out-Of-Bag, ou OOB) inhérentes à la mécanique des forêts aléatoires.

Lors de chaque itération, pour chaque individu appartenant à l’échantillon observé, une prédiction est calculée en mobilisant exclusivement le sous-ensemble d’arbres qui n’ont pas utilisé cet individu lors de leur phase d’échantillonnage bootstrap. En confrontant ces prédictions OOB aux véritables valeurs observées, l’objet retourné restitue deux métriques d’erreur de haute précision logées dans resultat_mf$OOBerror :

  • L’erreur quadratique normalisée (Normalized Root Mean Squared Error, ou NRMSE) pour les variables continues. Une valeur de NRMSE proche de 0 indique une précision prédictive remarquable, tandis qu’une valeur avoisinant ou dépassant 1,0 signale que la forêt échoue à faire mieux qu’une simple imputation naïve par la moyenne.
  • La proportion de faux classements (Proportion of Falsely Classified, ou PFC) pour les variables qualitatives et factorielles. Cette métrique correspond au taux d’erreur de classification directe observé sur les classes réelles des données intègres.

Ces métriques OOB constituent un outil de diagnostic précieux pour le chercheur : elles permettent d’attester empiriquement de la qualité de la reconstruction de l’information manquante dans les rapports d’analyse, conférant aux résultats finaux une transparence et une assise méthodologique particulièrement rigoureuses.

11. Validation métrologique et analyse de sensibilité post-imputation

11.1 Contrôles visuels et tests d’ajustement distributionnel

L’exécution technique d’un algorithme d’imputation ne marque nullement l’achèvement de la responsabilité du statisticien. Il est indispensable de procéder à une validation métrologique approfondie afin de vérifier que les données synthétisées respectent l’écologie distributionnelle de la population d’origine et n’introduisent pas d’artefacts structurels indésirables.

Le premier niveau de contrôle diagnostique relève de l’inspection visuelle comparative des densités empiriques. À l’aide de packages graphiques de pointe tels que ggplot2 ou des fonctions de restitution intégrées à mice (comme densityplot(imputations_mice)), l’analyste doit superposer la courbe de densité des valeurs originellement observées et celle des valeurs nouvellement imputées. Sous un mécanisme MCAR, les deux courbes doivent théoriquement coïncider presque parfaitement. Sous un mécanisme MAR valide, des divergences locales raisonnables entre les deux distributions sont attendues (reflétant la dépendance légitime vis-à-vis des covariables de stratification), mais toute apparition de discontinuités brutales, d’effets de bord anormaux ou de dépassements d’intervalles physiques admissibles doit conduire au rejet de l’imputation.

Au-delà de l’inspection visuelle, des tests d’ajustement non paramétriques peuvent être mobilisés pour évaluer la cohérence distributionnelle :

ks.test(valeurs_observees, valeurs_imputees)

Le test de Kolmogorov-Smirnov bivarié permet de tester l’égalité des lois de probabilité sous-jacentes. En complément, l’examen des diagrammes de dispersion croisant la variable imputée avec les principaux régresseurs du modèle permet de valider le strict maintien des pentes de corrélation bivariées et l’absence de contraction aberrante de la dispersion résiduelle autour de la ligne de tendance.

11.2 Protocoles de simulation par amputation de données (MCAR/MAR)

Pour mesurer de manière impartiale l’efficacité comparative de différentes techniques d’imputation face à une structure empirique spécifique, la démarche méthodologique la plus robuste consiste à implémenter un protocole expérimental de simulation par amputation de données. Cette stratégie s’articule autour de l’utilisation du package ampute (intégré à l’écosystème mice), qui permet d’introduire des motifs contrôlés de données manquantes au sein d’un jeu de données initialement complet.

L’expérimentateur génère ainsi artificiellement de l’incomplétude selon des scénarios paramétrables (MCAR, MAR conditionnel, ou MNAR logistique) avec des taux d’omission croissants (par exemple 10 %, 30 %, 50 %). L’ensemble des algorithmes candidats (moyenne, médiane, k-NN, MICE, missForest) sont alors appliqués sur ces matrices artificiellement altérées. Puisque les véritables valeurs masquées demeurent connues de l’expérimentateur, il devient possible de calculer des métriques absolues d’évaluation de la performance de recouvrement :

  • L’erreur quadratique moyenne (Root Mean Squared Error, ou RMSE) : Mesure la pénalisation quadratique des déviations individuelles d’imputation.
  • L’erreur absolue moyenne (Mean Absolute Error, ou MAE) : Évalue la proximité globale sans sur-pénaliser les écarts sporadiques.
  • Le biais moyen absolu : Détermine la tendance de la méthode à surestimer ou sous-estimer systématiquement le paramètre de localisation de la population.

Ce protocole de simulation fournit des preuves empiriques irréfutables pour arbitrer scientifiquement le choix de l’algorithme d’imputation optimal dans le cadre d’un protocole de recherche préenregistré.

11.3 Conduite d’une analyse de sensibilité rigoureuse

Dans toute analyse quantitative rigoureuse, la conclusion scientifique ne doit jamais être dépendante de choix algorithmiques arbitraires opérés lors du traitement des données manquantes. L’analyse de sensibilité constitue l’ultime garantie épistémologique validant la robustesse des inférences causales ou associatives dégagées.

La conduite d’une analyse de sensibilité implique l’estimation du modèle statistique décisionnel sous une multiplicité de scénarios méthodologiques concurrents :

  • Modèle 1 : Analyse des cas complets (listwise deletion) agissant comme point de référence classique.
  • Modèle 2 : Imputation univariée conservatrice (médiane/mode conditionnel).
  • Modèle 3 : Imputation par les k plus proches voisins (k-NN avec distance de Gower).
  • Modèle 4 : Imputation multiple par équations chaînées (MICE sous hypothèse MAR avec 20 jeux).
  • Modèle 5 : Imputation non paramétrique avancée par forêts aléatoires (missForest).

L’analyste synthétise ensuite au sein d’un tableau récapitulatif standardisé l’évolution des coefficients de régression cibles, de leurs erreurs types respectives et des largeurs des intervalles de confiance à 95 % à travers l’ensemble des spécifications. Si la direction de l’effet, son ordre de grandeur et sa significativité statistique demeurent invariants à travers ces différents paradigmes de traitement, l’analyste peut affirmer avec une grande confiance que ses conclusions sont robustes et indépendantes des hypothèses relatives aux mécanismes d’omission.

12. Recommandations méthodologiques et standards de publication scientifique

12.1 Normes de reporting académique (APA et déclarations STROBE)

La crédibilité de la littérature académique contemporaine souffre d’un déficit récurrent de transparence quant au traitement des valeurs manquantes. Pour remédier à cette crise de reproductibilité, les comités éditoriaux internationaux de référence, notamment l’American Psychological Association (APA) et les consortiums méthodologiques à l’origine des déclarations STROBE (pour l’épidémiologie observationnelle) et CONSORT (pour les essais randomisés contrôlés), ont édicté des directives de publication strictes.

Le reporting scientifique exige désormais la satisfaction systématique des critères suivants dans la section méthodologique des manuscrits :

  • Quantification exhaustive : Présenter un tableau récapitulatif renseignant le nombre absolu et la proportion exacte d’observations manquantes pour chaque variable incluse dans les modèles analytiques, ainsi que le nombre de participants présentant au moins une donnée manquante.
  • Diagnostic des mécanismes : Exposer explicitement les arguments théoriques et les vérifications empiriques (tests d’homogénéité, analyses de non-réponse) soutenant l’hypothèse adoptée quant au mécanisme générateur de données manquantes (MCAR, MAR ou MNAR).
  • Transparence logicielle : Documenter de façon exhaustive la dénomination des packages R mobilisés, leurs versions exactes, la méthode d’imputation algorithmique précise, les valeurs des hyperparamètres clés (tels que m, k, ou le nombre d’arbres), ainsi que les graines aléatoires fixées pour la réplicabilité.
  • Règles d’agrégation : Pour les imputations multiples, expliciter l’application des règles de Rubin et rapporter systématiquement la fraction de variance manquante (FMI) relative aux estimations principales.

12.2 Arbre de décision pour le choix optimal d’imputation

Face à la diversité des architectures méthodologiques examinées, la formulation d’un arbre décisionnel synthétique permet de guider l’analyste vers la solution la plus adaptée à ses contraintes expérimentales et à ses objectifs de modélisation :

  • Cas 1 : Taux global de données manquantes trivial (< 3 % à 5 %) sur un très grand échantillon et mécanisme présumé MCAR : L’analyse des cas complets peut être tolérée pour sa commodité, bien qu’une imputation univariée rapide (médiane/mode) ou une imputation multiple minimale soit méthodologiquement préférable pour préserver la taille de l’échantillon.
  • Cas 2 : Taux d’incomplétude modéré à élevé (5 % à 40 %) sous hypothèse de mécanisme MAR dans un cadre d’inférence statistique formelle : L’imputation multiple par équations chaînées (MICE) s’impose comme la solution de référence absolue, garantissant la validité des intervalles de confiance et la préservation de l’incertitude d’échantillonnage selon les règles de Rubin.
  • Cas 3 : Données hautement dimensionnelles avec relations complexes, présence d’interactions d’ordre élevé et absence d’inférence paramétrique classique : L’approche non paramétrique par forêts aléatoires via missForest constitue l’option la plus puissante pour maximiser la fidélité prédictive des représentations multivariées sans risquer d’erreurs de spécification de modèle.
  • Cas 4 : Données mixtes (variables continues et qualitatives complexes) avec un échantillon de taille modérée : L’algorithme k-NN (via le package VIM) exploitant la distance de Gower représente un excellent compromis géométrique déterministe pour des analyses exploratoires ou du profilage multivarié.
  • Cas 5 : Suspicion avérée d’un mécanisme non ignorable (MNAR) : Aucune méthode standard ne peut être appliquée naïvement. Il est impératif de recourir à des modélisations de sélection de Heckman, des modèles conjoints à effets aléatoires partagés, ou de borner formellement les résultats par des analyses de sensibilité en pire et meilleur des cas (tipping-point analysis).

12.3 Reproductibilité et gestion des flux de travail scientifiques

L’intégrité de la démarche scientifique contemporaine repose sur le principe cardinal de la reproductibilité computationnelle. Puisque les algorithmes d’imputation avancés (tels que MICE, missForest ou les imputations univariées probabilistes) reposent sur des tirages de nombres pseudo-aléatoires pour simuler les distributions sous-jacentes, l’omission de fixer explicitement l’état du générateur de nombres aléatoires aboutit inévitablement à des résultats numériques légèrement divergents à chaque exécution du code R.

Il est donc impératif de sanctuariser chaque pipeline analytique par l’invocation préalable de la fonction set.seed() (par exemple set.seed(2026)) en préambule de toute section de code exécutant une imputation stochastique. De plus, une saine hygiène d’ingénierie des données prescrit d’adopter une séparation physique stricte au niveau du système de fichiers entre le jeu de données brut original en lecture seule (raw data) et les jeux de données nettoyés ou imputés (processed data), interdisant toute écrasement direct des fichiers d’origine.

Enfin, la formalisation du projet statistique au sein d’un document computationnel dynamique (élaboré sous Quarto ou R Markdown) garantit l’alignement rigoureux entre le code source R, les diagnostics graphiques d’incomplétude, les sorties des modèles aggregés et le corps textuel du manuscrit scientifique, inscrivant ainsi la recherche dans les standards d’excellence les plus exigeants de la science ouverte (Open Science).

Références

★

Rate This Content

5.0 / 5 • 1 vote

Citer cet article

Looti, M. (2026, septembre 17). Comment imputer les valeurs manquantes dans R (avec exemples). Base de données de psychologie en français. https://fr.arabpsychology.com/statistics/comment-imputer-valeurs-manquantes-r-exemples/
Looti, Mohammed. “Comment imputer les valeurs manquantes dans R (avec exemples).” Base de données de psychologie en français, 17 septembre 2026, https://fr.arabpsychology.com/statistics/comment-imputer-valeurs-manquantes-r-exemples/.
Looti, Mohammed. “Comment imputer les valeurs manquantes dans R (avec exemples).” Base de données de psychologie en français. septembre 17, 2026. https://fr.arabpsychology.com/statistics/comment-imputer-valeurs-manquantes-r-exemples/.