dataPreprocess

histogram

##set_datapreprocess

Description

L'action dataPreprocess.histogram génère des classes (bins) d'histogramme et des statistiques simples basées sur ces classes pour vos variables numériques . C'est l'outil parfait pour résumer la distribution de vos données continues, un peu comme trier une montagne de chaussettes par catégories de taille pour y voir plus clair. Elle offre un contrôle très fin grâce aux paquets de requêtes , permettant de configurer la largeur des classes, de gérer finement les valeurs aberrantes ou d'imposer des bornes exactes .

Syntaxe Officielle
proc cas;
dataPreprocess.histogram /
table={name="nom_table", caslib="nom_caslib"}
inputs={"var1", "var2"}
casOutBinDetails={name="details_out", replace=true}
freq="var_frequence"
includeMissingGroup=true
requestPackages={{
method="EQUALWIDTH",
nBins=10,
outlierMethod="IQR",
outlierTreatment="WINSOR"
}};
run;
quit;

Paramètres Clés

Nom du paramètre Description
table Spécifie la table d'entrée contenant les données à analyser . Le buffet à volonté de nos données.
inputs Liste des variables numériques à découper en classes . Attention, les variables caractères n'aiment pas être découpées en tranches !
casOutBinDetails Spécifie la table de sortie CAS qui contiendra les détails précis des classes générées .
requestPackages Un tableau de configuration qui définit finement comment construire l'histogramme (méthode de binning, nombre de bins, traitement des outliers, arrondissement) .
freq Spécifie le nom de la variable de fréquence numérique . Idéal si certaines observations pèsent plus lourd que d'autres.
maxIterations Définit le nombre maximal d'itérations pour les statistiques univariées robustes itératives (comme l'estimateur de Gini) .

Préparation des données

Création d'une table de test avec des données numériques continues

Génère une table contenant des mesures de taille et de poids fictives pour expérimenter la création d'histogrammes.

1DATA mycas.mesures;
2 call streaminit(123);
3 DO id = 1 to 1000;
4 taille = rand('Normal', 170, 15);
5 poids = rand('LogNormal', 4, 0.5);
6 OUTPUT;
7 END;
8RUN;

Exemples d'utilisation

Création d'un histogramme basique sur une variable

Cet exemple découpe la variable 'taille' en utilisant l'algorithme automatique de 'nice binning' %%niceBinning%% sans paramétrage complexe.

1PROC CAS;
2 dataPreprocess.histogram /
3 TABLE={name="mesures"}
4 inputs={"taille"}
5 casOutBinDetails={name="bins_taille", replace=True};
6RUN;
7QUIT;
Résultat Attendu :
Le résultat renvoie les statistiques de base de l'histogramme et crée la table 'bins_taille' en mémoire contenant les bornes des intervalles trouvés automatiquement par le moteur.
Histogramme avancé avec gestion des valeurs aberrantes et arrondissement

Ici, on déploie l'artillerie lourde via %%requestPackages%% pour forcer 10 classes de largeur égale %%method%%. Les valeurs aberrantes (outliers) sont détectées par l'écart interquartile %%outlierMethod%% et 'Winsorisées' (ramenées aux seuils) %%outlierTreatment%%. Enfin, les limites des classes sont arrondies au multiple de 5 le plus proche %%roundType%%.

1PROC CAS;
2 dataPreprocess.histogram RESULT=res /
3 TABLE={name="mesures"}
4 inputs={"poids"}
5 casOutBinDetails={name="bins_poids_details", replace=True}
6 requestPackages={{
7 method="EQUALWIDTH",
8 nBins=10,
9 niceBinning=False,
10 round=True,
11 roundType="NEAREST",
12 roundFactor=5,
13 outlierMethod="IQR",
14 outlierTreatment="WINSOR",
15 outlierArguments={scaleMultiplier=1.5}
16 }};
17 PRINT res;
18RUN;
19QUIT;
Résultat Attendu :
L'action génère précisément 10 classes aux bornes esthétiques (multiples de 5). Les données extrêmes n'étirent pas l'histogramme à l'infini car elles sont plafonnées grâce au traitement IQR/WINSOR. Les résultats détaillés s'affichent dans la session SAS.