Publicado el :
Estadísticas CREACION_INTERNA

Binning por Cuantiles (Procedimiento BINNING)

Este código también está disponible en: Deutsch English Français
En espera de validación
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!
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 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!
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 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!
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 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!
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 
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.