Veröffentlicht am :
Statistik CREATION_INTERNE

Quantil-Binning (BINNING Prozedur)

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Die BINNING Prozedur ist ein leistungsstarkes Werkzeug zur Diskretisierung kontinuierlicher Variablen. Wenn die Methode 'QUANTILE' angegeben wird, analysiert die Prozedur die Verteilung der Variablen und erstellt eine bestimmte Anzahl von Bins, sodass jeder Bin einen annähernd gleichen Anteil an Beobachtungen enthält. Dies ist besonders nützlich, um asymmetrische Verteilungen zu handhaben, Rauschen in den Daten zu reduzieren oder Variablen für Modelle vorzubereiten, die kategoriale Eingaben erfordern. Zu den Schlüsseloptionen gehören 'DATA' für die CAS-Eingabetabelle, 'NUMBIN' zur Angabe der gewünschten Anzahl von Bins, 'METHOD=QUANTILE' zur Aktivierung der Quantil-Binning-Methode, 'INPUT' zur Auswahl der zu diskretisierenden Variablen und 'OUTPUT' oder 'OUTBIN' zur Generierung von Ausgabetabellen, die die gebinnten Daten oder die Bin-Details enthalten.
Datenanalyse

Type : CREATION_INTERNE


Alle Beispiele enthalten den vollständigen Code zur eigenständigen Generierung von Demodaten direkt in der CAS-Sitzung, wodurch deren Ausführbarkeit ohne externe Abhängigkeiten gewährleistet ist. Die Daten werden mithilfe von DATA Steps und der RAND()-Funktion generiert.

1 Codeblock
PROC BINNING Data
Erklärung :
Dieses Beispiel zeigt die einfachste Verwendung der BINNING Prozedur für das Quantil-Binning. Es erstellt eine Datentabelle 'data_basic' in der CAS-Sitzung mit zwei kontinuierlichen Variablen. Anschließend wird PROC BINNING mit der Option 'NUMBIN=10' aufgerufen, um 'x1' und 'x2' in 10 Quantil-Bins zu unterteilen. Die resultierende Tabelle 'binned_basic' enthält die neuen gebinnten Variablen.
Kopiert!
1/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2caslib _all_ assign;
3 
4/* 1. Création des données en mémoire CAS */
5DATA mylib.data_basic;
6 call streaminit(123); /* Pour la reproductibilité */
7 DO id=1 to 10000;
8 x1 = rand("Uniform");
9 x2 = rand("Uniform") * 10;
10 OUTPUT;
11 END;
12RUN;
13 
14/* 2. Binning par quantiles */
15PROC BINNING DATA=mylib.data_basic numbin=10 method=quantile;
16 INPUT x1 x2;
17 OUTPUT out=mylib.binned_basic;
18RUN;
19 
20/* 3. Affichage des détails des bins pour vérification (échantillon) */
21PROC PRINT DATA=mylib.binned_basic (obs=20);
22RUN;
23 
2 Codeblock
PROC BINNING Data
Erklärung :
Dieses Beispiel veranschaulicht, wie das Binning durch Angabe einer unterschiedlichen Anzahl von Bins (NUMBIN=5) und die Verwendung der Option 'OUTBIN' angepasst werden kann. Die Option 'OUTBIN' erstellt eine separate Ausgabetabelle ('bin_details_inter'), die detaillierte Informationen zu jedem erstellten Bin enthält, wie z.B. Grenzen, Anzahl der Beobachtungen und Bin-IDs. Dies ist nützlich, um die Struktur der Diskretisierung zu überprüfen.
Kopiert!
1/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2caslib _all_ assign;
3 
4/* 1. Création des données en mémoire CAS */
5DATA mylib.data_inter;
6 call streaminit(456); /* Pour la reproductibilité */
7 DO id=1 to 15000;
8 x1 = rand("Uniform");
9 x2 = rand("Normal"); /* Une autre distribution */
10 x3 = rand("Uniform") * 50;
11 OUTPUT;
12 END;
13RUN;
14 
15/* 2. Binning par quantiles avec options courantes */
16PROC BINNING DATA=mylib.data_inter numbin=5 method=quantile;
17 INPUT x1 x2 x3; /* Binning sur plusieurs variables */
18 OUTPUT out=mylib.binned_inter;
19 outbin out=mylib.bin_details_inter; /* Sauvegarde les détails des bins */
20RUN;
21 
22/* 3. Affichage des détails des bins */
23PROC PRINT DATA=mylib.bin_details_inter;
24 var _VARNAME_ _BINID_ _LOWER_ _UPPER_ _COUNT_;
25RUN;
26 
3 Codeblock
PROC BINNING Data
Erklärung :
Dieses fortgeschrittene Beispiel zeigt, wie das Quantil-Binning unabhängig für Datenteilgruppen mithilfe der 'BY'-Anweisung angewendet werden kann. Eine Variable 'group' wird in den Eingabedaten erstellt, und die BINNING Prozedur wird für jeden Wert von 'group' separat ausgeführt. Die Tabelle 'bin_stats_adv' wird generiert, um vollständige deskriptive Statistiken für jeden Bin und jede Gruppe zu enthalten, wie Mittelwert, Standardabweichung, Minimum und Maximum.
Kopiert!
1/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2caslib _all_ assign;
3 
4/* 1. Création des données en mémoire CAS avec un groupe */
5DATA mylib.data_adv;
6 call streaminit(789); /* Pour la reproductibilité */
7 DO id=1 to 20000;
8 IF mod(id, 2)=0 THEN group = "A";
9 ELSE group = "B";
10 x1 = rand("Uniform") + (group="A") * 0.5; /* x1 dépend du groupe */
11 x2 = rand("Normal") + (group="B") * 2; /* x2 dépend du groupe */
12 OUTPUT;
13 END;
14RUN;
15 
16/* 2. Binning par quantiles avec BY group et statistiques de sortie */
17PROC BINNING DATA=mylib.data_adv numbin=4 method=quantile;
18 BY group; /* Binning effectué séparément pour chaque groupe */
19 INPUT x1 x2;
20 OUTPUT out=mylib.binned_adv;
21 outbin out=mylib.bin_stats_adv;
22RUN;
23 
24/* 3. Affichage des détails des bins par groupe */
25PROC PRINT DATA=mylib.bin_stats_adv;
26 BY group;
27 var group _VARNAME_ _BINID_ _LOWER_ _UPPER_ _COUNT_ MEAN STD MIN MAX;
28RUN;
29 
4 Codeblock
PROC BINNING Data
Erklärung :
Dieses Beispiel hebt die Fähigkeiten von SAS Viya und der CAS-Engine hervor, sehr große Datensätze zu verwalten. Es generiert 5 Millionen Beobachtungen direkt im CAS-Speicher und wendet dann die BINNING Prozedur an. Anschließend wird 'PROC CASUTIL' verwendet, um direkt mit der CAS-Sitzung zu interagieren: Tabellen auflisten, die Struktur der gebinnten Tabelle beschreiben und eine Stichprobe der Daten abrufen, um die Anwendung des Binnings zu überprüfen. Dies zeigt einen umfassenden Ansatz für CAS-basierte Workflows.
Kopiert!
1/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2caslib _all_ assign;
3 
4/* 1. Création d'une table CAS très volumineuse */
5DATA mylib.data_cas_large;
6 call streaminit(101112); /* Pour la reproductibilité */
7 DO id=1 to 5000000; /* 5 millions d'observations */
8 x1 = rand("Uniform");
9 x2 = rand("Exponential");
10 OUTPUT;
11 END;
12RUN;
13 
14/* 2. Binning par quantiles sur la grande table CAS */
15PROC BINNING DATA=mylib.data_cas_large numbin=10 method=quantile;
16 INPUT x1 x2;
17 OUTPUT out=mylib.binned_cas_large;
18 outbin out=mylib.bin_stats_cas_large;
19RUN;
20 
21/* 3. Inspection des propriétés de la table CAS résultante */
22PROC CASUTIL incaslib="mylib";
23 list files; /* Lister les fichiers dans la caslib pour voir les tables créées */
24 describe TABLE="binned_cas_large"; /* Décrire la structure de la table binnée */
25 fetch casdata="binned_cas_large" to=out; /* Récupérer un échantillon pour vérification */
26RUN;
27QUIT;
28 
29/* 4. Affichage d'un échantillon de la table binnée */
30PROC PRINT DATA=out (obs=10);
31RUN;
32 
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.