Publié le :
Statistique CREATION_INTERNE

Analyse de la Cardinalité d'une Variable : Niveaux Spécifiques

Ce code est également disponible en : Deutsch English Español
En attente de validation
La procédure CARDINALITY permet de déterminer le nombre de niveaux distincts (cardinalité) pour chaque variable spécifiée, ainsi que d'identifier la fréquence de chaque niveau. Cet exemple approfondit l'exploration en filtrant les données pour analyser la cardinalité et la distribution des fréquences des valeurs d'une variable ('SepalLength') au-delà d'un certain seuil. Il montre également comment visualiser les résultats sous forme d'histogramme et interpréter les informations sur la fréquence maximale des niveaux. Les exemples ci-dessous illustrent différentes utilisations de la procédure, de la plus basique à des cas plus complexes, le tout étant exécuté dans l'environnement CAS de SAS© Viya.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des données générées à partir de la bibliothèque SASHELP (iris) chargée en session CAS.

1 Bloc de code
PROC CARDINALITY / DATA STEP Data
Explication :
Cet exemple illustre l'utilisation la plus simple de PROC CARDINALITY. Il charge le jeu de données 'sashelp.iris' dans une session CAS sous le nom 'mycas.iris'. Ensuite, il exécute la procédure CARDINALITY pour la variable 'Species', générant un tableau de cardinalité ('outcard') et un tableau de détails des niveaux ('outdetails'). Les résultats sont affichés à l'aide de PROC PRINT.
Copié !
1CAS;
2LIBNAME mycas cas;
3 
4/* Charger le jeu de données Iris de SASHELP vers la session CAS */
5DATA mycas.iris;
6 SET sashelp.iris;
7RUN;
8 
9/* Exemple 1 : Utilisation Basique pour la variable Species */
10PROC CARDINALITY DATA=mycas.iris outcard=mycas.card_species outdetails=mycas.details_species;
11 var Species;
12RUN;
13 
14PROC PRINT DATA=mycas.card_species;
15 title 'Cardinalité basique pour la variable Species';
16RUN;
17 
18PROC PRINT DATA=mycas.details_species;
19 title 'Détails des niveaux pour la variable Species';
20RUN;
2 Bloc de code
PROC CARDINALITY / PROC SGPLOT
Explication :
Cet exemple démontre l'utilisation des options 'MAXLEVELS' pour limiter le nombre de niveaux détaillés affichés et 'DESCENDING' pour trier ces niveaux par fréquence de manière décroissante. Il génère également un histogramme pour visualiser la distribution des 10 niveaux de 'SepalLength' les plus fréquents.
Copié !
1/* Exemple 2 : Utilisation avec des options courantes (MAXLEVELS et DESCENDING) */
2/* Analyse de SepalLength avec un nombre limité de niveaux affichés et tri décroissant */
3PROC CARDINALITY DATA=mycas.iris outcard=mycas.card_sepal_full outdetails=mycas.details_sepal_full maxlevels=10 descending;
4 var SepalLength;
5RUN;
6 
7PROC PRINT DATA=mycas.card_sepal_full;
8 title 'Cardinalité complète pour SepalLength (10 niveaux max, ordre décroissant)';
9RUN;
10 
11PROC SGPLOT DATA=mycas.details_sepal_full;
12 vbar _cfmt_ / freq=_freq_ categoryorder=DATA;
13 title 'Histogramme des 10 niveaux les plus fréquents de SepalLength';
14RUN;
3 Bloc de code
PROC CARDINALITY / DATA STEP / PROC SGPLOT
Explication :
Cet exemple reprend le scénario du document, en filtrant les données pour n'inclure que les observations où 'SepalLength' est supérieur à 4.7. La procédure CARDINALITY est exécutée avec 'MAXLEVELS=5', ce qui signifie que seuls les 5 niveaux les plus fréquents seront détaillés, les autres étant regroupés. Un pas DATA est utilisé pour préparer les données de sortie pour PROC SGPLOT, en ajoutant un '>' devant les valeurs regroupées pour les distinguer. Enfin, un histogramme est généré, et les informations de fréquence maximale sont affichées.
Copié !
1/* Exemple 3 : Cas Avancé - Analyse des niveaux de SepalLength > 4.7 et visualisation */
2PROC CARDINALITY DATA=mycas.iris (where=(SepalLength > 4.7))
3 outcard=mycas.card_sepal_gt47
4 outdetails=mycas.details_sepal_gt47
5 maxlevels=5; /* Limite à 5 niveaux pour cet exemple */
6 var SepalLength;
7RUN;
8 
9/* Préparation des données pour SGPLOT : ajoute '>' aux niveaux 'Autres' pour le graphique */
10DATA mycas.sp_gt47;
11 SET mycas.details_sepal_gt47;
12 label _cfmt_='Valeur formatée de SepalLength > 4.7';
13 IF _index_ = . THEN DO; /* Si _index_ est manquant, c'est la catégorie 'Autres' */
14 _cfmt_=cats(">",_cfmt_);
15 END;
16 _cfmt_=left(_cfmt_); /* Nettoie les espaces */
17RUN;
18 
19PROC SGPLOT DATA=mycas.sp_gt47;
20 vbar _cfmt_ / freq=_freq_;
21 title 'Histogramme des niveaux de SepalLength > 4.7';
22RUN;
23 
24/* Affichage des informations de fréquence maximale pour ce cas */
25PROC PRINT DATA=mycas.card_sepal_gt47;
26 title 'Informations de fréquence maximale pour SepalLength > 4.7';
27 var _varname_ _mf:;
28RUN;
4 Bloc de code
PROC CARDINALITY
Explication :
Cet exemple met en évidence la capacité de la procédure CARDINALITY à s'exécuter sur des données CAS. Il analyse la cardinalité de plusieurs variables simultanément. L'option 'OUTPUT' avec 'MINRATIO' est utilisée pour identifier les variables dont la cardinalité (nombre de niveaux distincts) dépasse un certain pourcentage (ici, 80%) du nombre total d'observations, ce qui peut être utile pour détecter des identifiants ou des variables à faible variance.
Copié !
1/* Exemple 4 : Intégration Viya/CAS - Analyse de plusieurs variables et détection de cardinalité */
2/* Cet exemple illustre l'exécution en mémoire distribuée (CAS) */
3PROC CARDINALITY DATA=mycas.iris outcard=mycas.multi_var_card maxlevels=10;
4 var SepalLength SepalWidth PetalLength PetalWidth Species;
5 OUTPUT out=mycas.high_card_vars minratio=0.8; /* Garde les variables dont la cardinalité dépasse 80% des observations */
6RUN;
7 
8PROC PRINT DATA=mycas.multi_var_card;
9 title 'Cardinalité pour plusieurs variables';
10RUN;
11 
12PROC PRINT DATA=mycas.high_card_vars;
13 title 'Variables avec une cardinalité supérieure à 80% des observations';
14RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.