analyzeMissingPatterns
Description
L'action analyzeMissingPatterns effectue une analyse détaillée des profils de valeurs manquantes au sein de votre table de données. Elle est redoutable pour diagnostiquer la qualité de vos données avant toute modélisationProcessus de création de structures mathématiques ou statistiques sur SAS Viya pour prédire des comportements, classifier des données ou identifier des tendances à partir de jeux de données CAS. (parce qu'un modèleReprésentation mathématique entraînée sur des données pour capturer des tendances, prédire des résultats ou classifier des observations via des algorithmes (Régression, Forêt aléatoire, Gradient Boosting). entraîné sur des données trouées, c'est un peu comme un gruyère sans fromage : décevant). Vous pouvez approfondir cette action dans la documentation officielle .
Paramètres Clés
| Nom du paramètre | Description |
|---|---|
| casOut | La table CAS de sortie qui contiendra les résultats de l'analyse des profils manquants. C'est ici que vos trous de données seront fièrement exposés. Paramètre requis. |
| table | La table CAS en entrée contenant les données à analyser. Paramètre requis. |
| inputs | Liste des variables spécifiques à analyser. Si non spécifié, l'action analysera goulûment toutes les variables de la table. |
| nominals | Permet de forcer manuellement le traitement de certaines variables comme étant catégorielles (nominales). |
| target | Variable cible (target). Utile pour observer comment les valeurs manquantes se comportent par rapport à ce que vous essayez de prédire. |
| freq | Spécifie une variable numérique contenant les fréquences (ou poids) pour chaque observation. |
| distinctCountLimit | Limite du nombre de valeurs distinctes. Au-delà, l'algorithme s'adapte ou s'arrête (voir misraGries). |
| misraGries | Si défini sur True, active l'algorithme de Misra-Gries pour estimer la distribution de fréquence quand la 'distinctCountLimit' est dépassée. |
| ecdfTolerance | Tolérance pour l'algorithme de calcul des quantiles (fonction de distribution cumulative empirique). |
Préparation des données
Génération d'une table avec des valeurs manquantes
Nous allons charger la fameuse table SASHELP.CARS dans CAS et y injecter aléatoirement quelques valeurs manquantes pour avoir de la matière à analyser.
| 1 | PROC CASUTIL; |
| 2 | load DATA=sashelp.cars casout="cars_missing" outcaslib="casuser" replace; |
| 3 | QUIT; |
| 4 | DATA casuser.cars_missing; |
| 5 | SET casuser.cars; |
| 6 | /* On supprime ~10% des poids et ~5% des types */ |
| 7 | IF rand("Uniform") < 0.1 THEN weight = .; |
| 8 | IF rand("Uniform") < 0.05 THEN type = ''; |
| 9 | RUN; |
Exemples d'utilisation
Analyse globale basique
Exécution de l'action sur la table entière avec les options par défaut, en spécifiant simplement la table d'entrée et la table de sortie.
| 1 | PROC CAS; |
| 2 | dataSciencePilot.analyzeMissingPatterns / |
| 3 | TABLE={name="cars_missing", caslib="casuser"} |
| 4 | casOut={name="missing_patterns_out", caslib="casuser", replace=true}; |
| 5 | RUN; |
| 6 | QUIT; |
Résultat Attendu :
Analyse ciblée avec variables nominales et algorithme robuste
Cette fois, on cible un sous-ensemble de variables (inputs), en forçant le format de 'Type', en ajoutant la variable 'MSRP' comme cible et en activant le filet de sécurité algorithmique Misra-Gries.
| 1 | PROC CAS; |
| 2 | dataSciencePilot.analyzeMissingPatterns / |
| 3 | TABLE={name="cars_missing", caslib="casuser"} |
| 4 | inputs={"Weight", "Type", "EngineSize", "Horsepower"} |
| 5 | nominals={"Type"} |
| 6 | target="MSRP" |
| 7 | casOut={name="missing_patterns_detailed", caslib="casuser", replace=true, promote=true} |
| 8 | distinctCountLimit=5000 |
| 9 | misraGries=true; |
| 10 | RUN; |
| 11 | QUIT; |