El procedimiento BINNING es una herramienta poderosa para la discretización de variables continuas. Cuando se especifica el método 'QUANTILE', el procedimiento analiza la distribución de la variable y crea un número definido de bins, de modo que cada bin contenga una proporción aproximadamente igual de observaciones. Esto es particularmente útil para gestionar distribuciones asimétricas, reducir el ruido en los datos, o preparar variables para modelos que requieren entradas categóricas. Las opciones clave incluyen 'DATA' para la tabla de entrada CAS, 'NUMBIN' para especificar el número deseado de bins, 'METHOD=QUANTILE' para activar el método de binning por cuantiles, 'INPUT' para seleccionar las variables a discretizar, y 'OUTPUT' o 'OUTBIN' para generar tablas de salida que contengan los datos binnados o los detalles de los bins.
Análisis de datos
Type : CREACION_INTERNA
Todos los ejemplos proporcionan el código completo para la generación autónoma de datos de demostración directamente en la sesión CAS, garantizando así su ejecutabilidad sin dependencias externas. Los datos se generan utilizando DATA steps y la función RAND().
1 Bloque de código
PROC BINNING Data
Explicación : Este ejemplo demuestra el uso más simple del procedimiento BINNING para el binning por cuantiles. Crea una tabla de datos 'data_basic' en la sesión CAS con dos variables continuas. Luego, se llama a PROC BINNING con la opción 'NUMBIN=10' para dividir 'x1' y 'x2' en 10 bins de cuantiles. La tabla resultante 'binned_basic' contiene las nuevas variables binnadas.
¡Copiado!
/* 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 Bloque de código
PROC BINNING Data
Explicación : Este ejemplo ilustra cómo personalizar el binning especificando un número diferente de bins (NUMBIN=5) y utilizando la opción 'OUTBIN'. La opción 'OUTBIN' crea una tabla de salida separada ('bin_details_inter') que contiene información detallada sobre cada bin creado, como los límites, el número de observaciones y los identificadores de bin. Esto es útil para inspeccionar la estructura de la discretización.
¡Copiado!
/* 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 Bloque de código
PROC BINNING Data
Explicación : Este ejemplo avanzado muestra cómo aplicar el binning por cuantiles de forma independiente para subgrupos de datos utilizando la instrucción 'BY'. Se crea una variable 'group' en los datos de entrada, y el procedimiento BINNING se ejecuta por separado para cada valor de 'group'. La tabla 'bin_stats_adv' se genera para incluir estadísticas descriptivas completas para cada bin y cada grupo, como la media, la desviación estándar, el mínimo y el máximo.
¡Copiado!
/* 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 Bloque de código
PROC BINNING Data
Explicación : Este ejemplo enfatiza las capacidades de SAS Viya y el motor CAS para manejar conjuntos de datos muy grandes. Genera 5 millones de observaciones directamente en la memoria CAS y luego aplica el procedimiento BINNING. Luego, utiliza 'PROC CASUTIL' para interactuar directamente con la sesión CAS: listar las tablas, describir la estructura de la tabla binnada y recuperar una muestra de los datos para verificar la aplicación del binning. Esto demuestra un enfoque completo para los flujos de trabajo basados en CAS.
¡Copiado!
/* 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
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.