simple crossTab

Análisis de Comportamiento de Compra y Segmentación de Clientes

Scénario de test & Cas d'usage

Contexto empresarial

Una cadena minorista desea analizar la relación entre el nivel de fidelidad del cliente (Oro, Plata, Bronce) y las categorías de productos comprados. El objetivo es determinar si ciertos segmentos gastan más en categorías específicas y validar estadísticamente si las preferencias son independientes del nivel de fidelidad. Además, se requiere saber el total gastado, no solo la cantidad de transacciones.
Preparación de datos

Simulación de 1000 transacciones de ventas con Nivel de Cliente, Categoría y Monto gastado.

¡Copiado!
1 
2DATA casuser.retail_sales;
3call streaminit(12345);
4array levels[3] $8 ('Bronce' 'Plata' 'Oro');
5array cats[3] $12 ('Electronica' 'Ropa' 'Hogar');
6DO i=1 to 1000;
7CustomerID = i;
8LoyaltyLevel = levels[rand('Integer', 1, 3)];
9Category = cats[rand('Integer', 1, 3)];
10PurchaseAmount = rand('Uniform', 10, 500);
11OUTPUT;
12END;
13 
14RUN;
15 

Étapes de réalisation

1
Carga de datos simulados en memoria.
¡Copiado!
1 
2PROC CAS;
3TABLE.loadTable / caslib="casuser" path="retail_sales.sashdat" casout={name="retail_sales", replace=true};
4 
5RUN;
6 
2
Ejecución de CrossTab con ponderación por monto (SUM) y prueba de Chi-cuadrado.
¡Copiado!
1 
2PROC CAS;
3SIMPLE.crossTab / TABLE={name="retail_sales"} row="LoyaltyLevel" col="Category" weight="PurchaseAmount" aggregator="SUM" chiSq=true;
4 
5RUN;
6 

Resultado esperado


Se espera una tabla de contingencia donde las celdas contengan la SUMA del 'PurchaseAmount' en lugar del conteo de filas, cruzando 'LoyaltyLevel' vs 'Category'. Adicionalmente, se debe generar una tabla de estadísticas de Chi-cuadrado indicando si existe una dependencia significativa entre el nivel de fidelidad y la categoría comprada.