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!
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
caslib _all_ assign;
/* 1. Création des données en mémoire CAS */
data mylib.data_basic;
call streaminit(123); /* Pour la reproductibilité */
do id=1 to 10000;
x1 = rand("Uniform");
x2 = rand("Uniform") * 10;
output;
end;
run;
/* 2. Binning par quantiles */
proc binning data=mylib.data_basic numbin=10 method=quantile;
input x1 x2;
output out=mylib.binned_basic;
run;
/* 3. Affichage des détails des bins pour vérification (échantillon) */
proc print data=mylib.binned_basic (obs=20);
run;
1
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2
caslib _all_ assign;
3
4
/* 1. Création des données en mémoire CAS */
5
DATA mylib.data_basic;
6
call streaminit(123); /* Pour la reproductibilité */
/* 3. Affichage des détails des bins pour vérification (échantillon) */
21
PROC PRINTDATA=mylib.binned_basic (obs=20);
22
RUN;
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!
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
caslib _all_ assign;
/* 1. Création des données en mémoire CAS */
data mylib.data_inter;
call streaminit(456); /* Pour la reproductibilité */
do id=1 to 15000;
x1 = rand("Uniform");
x2 = rand("Normal"); /* Une autre distribution */
x3 = rand("Uniform") * 50;
output;
end;
run;
/* 2. Binning par quantiles avec options courantes */
proc binning data=mylib.data_inter numbin=5 method=quantile;
input x1 x2 x3; /* Binning sur plusieurs variables */
output out=mylib.binned_inter;
outbin out=mylib.bin_details_inter; /* Sauvegarde les détails des bins */
run;
/* 3. Affichage des détails des bins */
proc print data=mylib.bin_details_inter;
var _VARNAME_ _BINID_ _LOWER_ _UPPER_ _COUNT_;
run;
1
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2
caslib _all_ assign;
3
4
/* 1. Création des données en mémoire CAS */
5
DATA 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;
13
RUN;
14
15
/* 2. Binning par quantiles avec options courantes */
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 */
20
RUN;
21
22
/* 3. Affichage des détails des bins */
23
PROC PRINTDATA=mylib.bin_details_inter;
24
var _VARNAME_ _BINID_ _LOWER_ _UPPER_ _COUNT_;
25
RUN;
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!
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
caslib _all_ assign;
/* 1. Création des données en mémoire CAS avec un groupe */
data mylib.data_adv;
call streaminit(789); /* Pour la reproductibilité */
do id=1 to 20000;
if mod(id, 2)=0 then group = "A";
else group = "B";
x1 = rand("Uniform") + (group="A") * 0.5; /* x1 dépend du groupe */
x2 = rand("Normal") + (group="B") * 2; /* x2 dépend du groupe */
output;
end;
run;
/* 2. Binning par quantiles avec BY group et statistiques de sortie */
proc binning data=mylib.data_adv numbin=4 method=quantile;
by group; /* Binning effectué séparément pour chaque groupe */
input x1 x2;
output out=mylib.binned_adv;
outbin out=mylib.bin_stats_adv;
run;
/* 3. Affichage des détails des bins par groupe */
proc print data=mylib.bin_stats_adv;
by group;
var group _VARNAME_ _BINID_ _LOWER_ _UPPER_ _COUNT_ MEAN STD MIN MAX;
run;
1
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2
caslib _all_ assign;
3
4
/* 1. Création des données en mémoire CAS avec un groupe */
5
DATA 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;
14
RUN;
15
16
/* 2. Binning par quantiles avec BY group et statistiques de sortie */
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;
22
RUN;
23
24
/* 3. Affichage des détails des bins par groupe */
25
PROC PRINTDATA=mylib.bin_stats_adv;
26
BY group;
27
var group _VARNAME_ _BINID_ _LOWER_ _UPPER_ _COUNT_ MEAN STD MIN MAX;
28
RUN;
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!
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
caslib _all_ assign;
/* 1. Création d'une table CAS très volumineuse */
data mylib.data_cas_large;
call streaminit(101112); /* Pour la reproductibilité */
do id=1 to 5000000; /* 5 millions d'observations */
x1 = rand("Uniform");
x2 = rand("Exponential");
output;
end;
run;
/* 2. Binning par quantiles sur la grande table CAS */
proc binning data=mylib.data_cas_large numbin=10 method=quantile;
input x1 x2;
output out=mylib.binned_cas_large;
outbin out=mylib.bin_stats_cas_large;
run;
/* 3. Inspection des propriétés de la table CAS résultante */
proc casutil incaslib="mylib";
list files; /* Lister les fichiers dans la caslib pour voir les tables créées */
describe table="binned_cas_large"; /* Décrire la structure de la table binnée */
fetch casdata="binned_cas_large" to=out; /* Récupérer un échantillon pour vérification */
run;
quit;
/* 4. Affichage d'un échantillon de la table binnée */
proc print data=out (obs=10);
run;
1
/* Création d'une bibliothèque CAS pour les exemples si elle n'existe pas */
2
caslib _all_ assign;
3
4
/* 1. Création d'une table CAS très volumineuse */
5
DATA 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;
12
RUN;
13
14
/* 2. Binning par quantiles sur la grande table CAS */
/* 3. Inspection des propriétés de la table CAS résultante */
22
PROC 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 */
26
RUN;
27
QUIT;
28
29
/* 4. Affichage d'un échantillon de la table binnée */
30
PROC PRINTDATA=out (obs=10);
31
RUN;
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.