dataPreprocess

impute

##set_datapreprocess

Description

L'action impute du set dataPreprocess est votre baguette magique pour combler les trous (valeurs manquantes) dans vos données. Elle effectue l'imputation de matrice de donnéesStructure de données bidimensionnelle organisée en lignes (observations) et colonnes (variables), stockée en mémoire distribuée (CAS) pour permettre des traitements analytiques haute performance. (variable). Que vous vouliez remplacer les valeurs manquantes par la moyenne, la médiane, un nombre aléatoire (pourquoi pas ?) ou une valeur fixe, cette action s'occupe de tout. Fini les trous dans la raquette de vos modèles prédictifsAlgorithmes entraînés sur SAS Viya pour analyser des données historiques et estimer la probabilité de résultats futurs, facilitant ainsi la prise de décision proactive et automatisée. ! Vous pouvez configurer des méthodes différentes pour les variables continues et nominales.

Syntaxe Officielle
proc cas;
dataPreprocess.impute /
table={name="table_source", caslib="caslib_source"}
casOut={name="table_cible", caslib="caslib_cible", replace=True}
inputs={"var1", "var2"}
methodInterval="MEAN"
methodNominal="MODE"
copyAllVars=True;
run;
quit;

Paramètres Clés

Nom du paramètre Description
table La table en entrée contenant les données avec les trous à combler. Ce paramètre est requis.
casOut La table en sortie qui contiendra vos données toutes belles, toutes propres, avec les valeurs imputées.
casOutImputeInformation Une table optionnelle qui documente les résultats de l'imputation (très utile pour l'audit et vérifier ce qui a été fait !).
code Génère le code de scoring (étape DATA SAS) pour répliquer l'imputation magique ailleurs, par exemple en production.
inputs La liste des variables à traiter. Si vous ne mettez rien, il essaiera de tout traiter, un vrai glouton.
methodInterval La méthode pour boucher les trous des variables numériques (continues). Options: MAX, MEAN, MEDIAN, MIDRANGE, MIN, RANDOM, ou VALUE. Par défaut, c'est MEAN (la bonne vieille moyenne).
methodNominal La technique pour les variables qualitatives (nominales). Options: MODE (la valeur la plus fréquente, un grand classique !) ou VALUE.
valuesInterval Si vous avez choisi 'VALUE' pour methodInterval, c'est ici que vous précisez la liste des valeurs numériques à insérer manuellement.
valuesNominal Si vous avez choisi 'VALUE' pour methodNominal, mettez ici vos chaînes de caractères de remplacement.
copyAllVars Si True, on garde toutes les colonnes d'origine dans la table de sortie, même celles qu'on ne touche pas. Fortement conseillé pour ne pas perdre la moitié de sa table !
outVarsNamePrefix Le préfixe des nouvelles variables imputées. Par défaut c'est 'imp' (comme 'imp_MaVariable').

Préparation des données

Création de données trouées

Un petit jeu de données sur des pingouins avec des valeurs manquantes flagrantes pour tester notre imputation.

1DATA public.pingouins_trous;
2 INPUT nom $ poids taille espece $;
3 DATALINES;
4Pingu 5.2 45 Empereur
5Rico . 30 .
6Skipper 4.8 . Adelie
7Kowalski 4.5 35 Adelie
8;
9RUN;

Exemples d'utilisation

Imputation basique

On remplace les valeurs numériques manquantes par la moyenne et les valeurs textuelles par le mode (valeur la plus fréquente).

1PROC CAS;
2 dataPreprocess.impute /
3 TABLE={name="pingouins_trous", caslib="public"}
4 casOut={name="pingouins_repares", caslib="public", replace=True}
5 inputs={"poids", "taille", "espece"}
6 methodInterval="MEAN"
7 methodNominal="MODE"
8 copyAllVars=True;
9RUN;
10QUIT;
Résultat Attendu :
La table `pingouins_repares` contiendra les pingouins sans valeurs manquantes : Rico aura un poids moyen (environ 4.83) et l'espèce la plus fréquente (Adelie), et Skipper aura une taille moyenne (environ 36.6).
Imputation sur mesure avec table d'informations et génération de code

Ici, on va être maniaque du contrôle : on remplace les poids manquants par une médiane, on garde une trace de ce qu'on fait dans une table d'information, et on exporte le code SAS pour pouvoir le rejouer plus tard ! On va aussi préfixer nos colonnes réparées avec 'fix_'.

1PROC CAS;
2 dataPreprocess.impute /
3 TABLE={name="pingouins_trous", caslib="public"}
4 casOut={name="pingouins_fixes", caslib="public", replace=True}
5 casOutImputeInformation={name="impute_info", caslib="public", replace=True}
6 inputs={"poids", "taille"}
7 methodInterval="MEDIAN"
8 outVarsNamePrefix="fix_"
9 copyAllVars=True
10 code={casOut={name="impute_code", caslib="public", replace=True}};
11RUN;
12QUIT;
Résultat Attendu :
En plus de la table corrigée avec les colonnes 'fix_poids' et 'fix_taille', l'action va créer `impute_info` contenant les détails statistiques de l'imputation, et `impute_code` contenant le bout de code DATA step magique prêt pour la mise en production.