Publicado el :
Estadística CREATION_INTERNE

Discretización por puntos de corte (Cutpoint Binning)

Este código también está disponible en: Deutsch English Français
En espera de validación
Esta funcionalidad utiliza el procedimiento BINNING, que forma parte de los procedimientos estadísticos visuales de SAS© Viya. El método CUTPTS permite definir manualmente los umbrales para cada categoría. Cada intervalo se define por un límite inferior y un límite superior. El proceso transforma los valores numéricos originales en identificadores de bin. El procedimiento también puede calcular estadísticas descriptivas para cada bin y generar tablas de salida que contienen los datos discretizados. La ejecución se realiza en el motor Cloud Analytic Services (CAS), lo que permite procesar grandes volúmenes de datos de forma distribuida y eficiente.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o tablas SASHELP para asegurar la autonomía de cada bloque de código.

1 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo crea una tabla de datos simple 'auto_data' en la librería CASUSER. Luego, se utiliza el procedimiento BINNING con el método CUTPTS para la variable 'Horsepower'. Se especifican puntos de corte en 180 y 200, creando así tres categorías: Horsepower <= 180, 180 < Horsepower <= 200, y Horsepower > 200. La tabla de salida 'binned_data' contendrá la nueva variable discretizada, así como las variables originales copiadas. Los resultados se muestran para las primeras observaciones y se realiza una frecuencia en la variable discretizada para verificar la discretización.
¡Copiado!
1/* Création d'une table CAS temporaire */
2options casdatalimit=1000;
3caslib _all_ assign;
4 
5DATA casuser.auto_data;
6 INPUT MSRP Invoice EngineSize Horsepower Cylinders MPG_City MPG_Highway Weight Wheelbase LENGTH;
7 DATALINES;
825945 23722 3.5 210 6 18 26 3470 110 195
926445 24300 3.5 210 6 18 26 3470 110 195
1028495 26033 3.5 210 6 18 26 3470 110 195
1123720 21683 2.0 165 4 23 30 2778 101 179
1224595 22473 2.0 165 4 23 30 2778 101 179
1327270 24806 2.0 190 4 21 29 2833 104 184
1428170 25686 2.0 190 4 21 29 2833 104 184
1520000 18456 2.0 160 4 24 31 2901 106 187
1622000 20387 2.0 170 4 23 31 2946 106 187
1730000 27500 3.0 220 6 17 25 3450 109 188
18;
19RUN;
20 
21/* Application du découpage par points de coupure */
22PROC BINNING DATA=casuser.auto_data numbin=3 method=cutpts;
23 INPUT Horsepower / cutpts(180, 200);
24 OUTPUT out=casuser.binned_data copyvars=(MSRP Horsepower);
25RUN;
26 
27/* Affichage des résultats (facultatif) */
28PROC PRINT DATA=casuser.binned_data (obs=5);
29RUN;
30 
31PROC FREQ DATA=casuser.binned_data;
32 tables Binned_Horsepower;
33RUN;
34 
2 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo ilustra la discretización por puntos de corte en dos variables, 'SqFt' y 'YearBuilt', a partir de una tabla de datos 'house_prices'. La opción MONITOR=(SalePrice) se utiliza para la variable 'SqFt' con el fin de monitorear la variable 'SalePrice' en las estadísticas de los bins, lo cual es útil para evaluar el rendimiento de la discretización. La opción OUTSTAT genera una tabla adicional 'bin_stats' que contiene las estadísticas de cada bin, ofreciendo una vista detallada de los resultados de la agrupación.
¡Copiado!
1/* Création d'une table CAS temporaire */
2options casdatalimit=1000;
3caslib _all_ assign;
4 
5DATA casuser.house_prices;
6 INPUT SqFt Bedrooms Bathrooms LotSize YearBuilt SalePrice;
7 DATALINES;
81500 3 2 5000 1990 150000
91800 4 2.5 6000 1995 200000
101200 2 1 4000 1980 100000
112000 3 3 7000 2000 250000
121600 3 2 5500 1992 160000
131300 2 1.5 4500 1985 110000
142200 4 3.5 8000 2005 300000
151700 3 2 5800 1998 180000
161900 4 2 6500 2002 220000
171400 3 1 4800 1988 130000
18;
19RUN;
20 
21/* Application du découpage par points de coupure avec options */
22PROC BINNING DATA=casuser.house_prices numbin=4 method=cutpts;
23 INPUT SqFt / cutpts(1500, 1800, 2000) monitor=(SalePrice);
24 INPUT YearBuilt / cutpts(1990, 2000) monitor=(SalePrice);
25 OUTPUT out=casuser.binned_house_data copyvars=(SqFt YearBuilt SalePrice) outstat=casuser.bin_stats;
26RUN;
27 
28/* Affichage des détails des bins */
29PROC PRINT DATA=casuser.bin_stats;
30RUN;
31 
32/* Affichage des données binées */
33PROC PRINT DATA=casuser.binned_house_data (obs=5);
34RUN;
35 
3 Bloque de código
PROC BINNING Data
Explicación :
Este ejemplo avanzado utiliza una tabla de datos de clientes con valores perdidos. Para la variable 'Age', se definen puntos de corte específicos (30, 40, 50). Para 'Income_Monthly', aunque se proporcionan puntos de corte, la opción HANDLEMISSING=BIN indica que los valores perdidos deben tratarse como una categoría de bin distinta. Esto demuestra un enfoque más robusto para la agrupación de datos, teniendo en cuenta escenarios reales de datos incompletos.
¡Copiado!
1/* Création d'une table CAS temporaire avec des valeurs manquantes */
2options casdatalimit=1000;
3caslib _all_ assign;
4 
5DATA casuser.customer_data;
6 INPUT Age Income_Monthly Education_Level $ Credit_Score_PreBinning Gender $;
7 DATALINES;
830 3000 Bac NA . M
945 5000 Master NA 750 F
1025 2000 HighSchool NA 600 M
11NA 4000 PhD NA 800 F
1235 NA Bachelor NA 700 M
1350 6000 Master NA 850 F
1428 2500 HighSchool NA 620 M
1540 4500 Bachelor NA 720 F
16NA 3500 PhD NA 780 M
1732 3200 HighSchool NA 680 F
18;
19RUN;
20 
21/* Application du découpage avec gestion des manquantes et différentes numbin */
22PROC BINNING DATA=casuser.customer_data numbin=5 method=cutpts;
23 INPUT Age / cutpts(30, 40, 50);
24 INPUT Income_Monthly / numbin=3 cutpts(3000, 5000) handlemissing=bin;
25 OUTPUT out=casuser.binned_customer_data copyvars=(Age Income_Monthly Credit_Score_PreBinning);
26RUN;
27 
28/* Affichage des résultats pour les données binées */
29PROC PRINT DATA=casuser.binned_customer_data;
30RUN;
31 
32/* Vérification des fréquences pour les variables binées */
33PROC FREQ DATA=casuser.binned_customer_data;
34 tables Binned_Age Binned_Income_Monthly;
35RUN;
36 
4 Bloque de código
PROC BINNING
Explicación :
Este ejemplo demuestra la integración de PROC BINNING en el entorno SAS Viya/CAS. Carga la tabla 'iris' de SASHELP en una librería CAS. Luego, aplica la discretización por puntos de corte a 'PetalLength' y 'SepalWidth' y guarda el estado de la discretización (las reglas de binning) en una tabla 'binning_state' utilizando la opción SAVE STATE. Este 'estado' puede reutilizarse para aplicar exactamente las mismas reglas de discretización (puntuación) a nuevos datos sin tener que redefinir los puntos de corte. La tabla 'scored_iris' muestra el resultado de la discretización en los nuevos datos.
¡Copiado!
1/* Assurez-vous d'avoir une session CAS active et une caslib assignée */
2options casdatalimit=1000;
3caslib _all_ assign;
4 
5/* Charger des données SASHELP dans CAS pour l'exemple */
6DATA casuser.iris;
7 SET sashelp.iris;
8RUN;
9 
10/* Application du découpage par points de coupure sur une table CAS */
11PROC BINNING DATA=casuser.iris numbin=3 method=cutpts;
12 INPUT PetalLength / cutpts(1.5, 4.5);
13 INPUT SepalWidth / cutpts(3.0, 3.5);
14 OUTPUT out=casuser.binned_iris (replace=true) copyvars=(Species PetalLength SepalWidth);
15 save state out=casuser.binning_state (replace=true);
16RUN;
17 
18/* Appliquer le découpage sur de nouvelles données (scoring) */
19DATA casuser.new_iris_data;
20 INPUT PetalLength SepalWidth Species $;
21 DATALINES;
221.2 3.8 Setosa
235.0 3.0 Virginica
244.0 2.5 Versicolor
25;
26RUN;
27 
28PROC BINNING DATA=casuser.new_iris_data;
29 score state=casuser.binning_state out=casuser.scored_iris;
30RUN;
31 
32PROC PRINT DATA=casuser.scored_iris;
33RUN;
34 
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.