EDA Integrador: BigMart Sales

Heterogeneidad · Concentración · Correlación · PCA

Diego Villalba

El encargo

El encargo

BigMart es una cadena de supermercados con 10 tiendas en distintas ciudades. El equipo directivo hace la pregunta:

“¿Qué factores explican por qué algunos productos y algunas tiendas venden mucho más que otras?”

Nuestro rol hoy: analistas de datos. Antes de construir cualquier modelo predictivo, necesitamos entender los datos.

Note

Este es exactamente el trabajo de un EDA completo: no solo calcular números, sino responder preguntas de negocio con evidencia estadística.

El dataset

Item_Identifier Item_Weight Item_Fat_Content Item_Visibility Item_Type Item_MRP Outlet_Type Outlet_Size Outlet_Location_Type Outlet_Age Item_Outlet_Sales
0 FDA15 9.30 Low Fat 0.016047 Dairy 249.8092 Supermarket Type1 Medium Tier 1 14 3735.1380
1 DRC01 5.92 Regular 0.019278 Soft Drinks 48.2692 Supermarket Type2 Medium Tier 3 4 443.4228
2 FDN15 17.50 Low Fat 0.016760 Meat 141.6180 Supermarket Type1 Medium Tier 1 14 2097.2700
3 FDX07 19.20 Regular 0.000000 Fruits and Vegetables 182.0950 Grocery Store Small Tier 3 15 732.3800

Variables clave

Variable Tipo Descripción
Item_MRP Numérica Precio máximo de venta al público
Item_Visibility Numérica % de espacio en anaquel que ocupa el producto
Item_Weight Numérica Peso del producto (kg)
Outlet_Age Numérica Años de operación de la tienda

Variables clave

Variable Tipo Descripción
Outlet_Type Categórica Tipo de tienda (Grocery / Supermercado 1–3)
Outlet_Location_Type Categórica Nivel socioeconómico de la ciudad (Tier 1–3)
Outlet_Size Categórica Tamaño físico de la tienda

Variables clave

Variable Tipo Descripción
Outlet_Size Categórica Tamaño físico de la tienda
Item_Type Categórica Categoría del producto (16 tipos)
Item_Outlet_Sales Numérica Ventas totales del producto en esa tienda

Lo que ya sabemos

Lo que ya sabemos: ventas

Medidas univariadas de dsitribución de Item_Outlet_Sales:

Medida Valor Interpretación
Media $2,181 Promedio de ventas
Mediana $1,794 Menor que la media
Desv. std $1,706 Alta variabilidad
Sesgo 1.18 Asimetría positiva
Curtosis 1.62 Colas pesadas

Lo que ya sabemos: distribución

Tip

Punto de partida: la distribución es asimétrica y tiene outliers. Esto ya nos dice que no todas las observaciones se comportan igual. Hoy investigamos por qué.

Pregunta 1

¿Todas las tiendas venden igual?

Heterogeneidad

Cuando queremos comparar variabilidad entre grupos con distintas medias, la desviación estándar sola no es suficiente.

CV = \frac{\sigma}{\mu} \times 100\%

El el coeficiente de variación (CV) nos dice: ¿qué tan grande es la dispersión relativa a la media?

CV Interpretación
< 15 % Muy homogéneo
15–30 % Moderadamente variable
> 30 % Alta heterogeneidad

¿Por qué no comparar desviaciones estándar?

CV por tipo de tienda

¿Por qué Grocery Store tiene menor media pero mayor CV?

  • Grocery Store tiene bajo volumen de ventas

  • Presenta alta variabilidad relativa (CV alto)

Insight EDA

  • La distribución es inestable respecto a su escala
  • La media no es representativa por sí sola

Insight negocio

  • Las ventas son difíciles de anticipar
  • El comportamiento es más volátil que en supermercados

¿Qué implica esto para la gestión de inventario?

  • Alta variabilidad → demanda poco predecible

  • Mayor riesgo de:

    • sobrestock
    • quiebres de inventario

Insight EDA

  • Se requiere análisis adicional ( como segmentación ) para entender mejor los patrones de demanda

Heterogeneidad entre tiendas individuales

Heterogeneidad entre tiendas individuales

  • Existe alta variabilidad entre tiendas del mismo tipo

  • OUT027 vende ~10x más que OUT010 y OUT019

Insight EDA

  • El tipo de tienda no explica completamente las ventas

  • Hay subgrupos internos (heterogeneidad intra-clase)

  • Posible mezcla de distribuciones → no es unimodal

Insight negocio

  • No todas las tiendas del mismo tipo deben tratarse igual, se requiere segmentación a nivel tienda (no solo tipo)

Boxplots por tipo de tienda

Para discutir:

  • ¿Qué nos dice la diferencia entre media y mediana en Grocery Store?
  • ¿Cómo se refleja el sesgo aquí?

Pregunta 2

¿Pocos productos generan casi todo el ingreso?

Concentración: Lorenz y Gini

La curva de Lorenz visualiza qué fracción de las ventas totales acumula el X% de los productos (ordenados de menor a mayor).

El índice de Gini resume esa desigualdad en un número:

G = 1 - 2\int_0^1 L(x)\,dx \qquad G \in [0,\,1]

  • G = 0: todos los productos venden exactamente igual (igualdad perfecta)
  • G = 1: un solo producto genera todo el ingreso (desigualdad máxima)

Curva de Lorenz: ventas por producto

Número de productos únicos: 1559
Índice de Gini:             0.3275
Top 20% de productos →      38.5% de ventas

¿Se cumple la regla 80/20 de Pareto?

  • El top 20% de productos genera ~38.5% de ventas

  • No se cumple estrictamente la regla 80/20

Insight EDA

  • Existe concentración, pero no extrema
  • Distribución “Pareto-like”, no pura

Insight negocio

  • Las ventas no dependen solo de unos pocos productos
  • Existe diversificación en el catálogo

Concentración por categoría de producto

Pregunta 3

¿Qué variables se relacionan con las ventas?

Correlación: recuerdo rápido

El coeficiente de correlación de Pearson mide la fuerza y dirección de la relación lineal entre dos variables:

r = \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i-\bar{x})^2 \cdot \sum(y_i-\bar{y})^2}} \qquad r \in [-1,\,1]

Important

Correlación ≠ causalidad. Una relación estadística fuerte no implica que una variable cause la otra.

Correlación: Guia de interpretación

|r| Interpretación
0.0 – 0.1 Despreciable
0.1 – 0.3 Débil
0.3 – 0.5 Moderada
0.5 – 0.7 Fuerte
0.7 – 1.0 Muy fuerte

Matriz de correlación

¿Qué correlación es más sorprendente?

  • La correlación entre visibilidad y ventas es débil o negativa

  • No sigue la intuición de “más visibilidad → más ventas”

Insight EDA

  • Posible relación no lineal o sesgada
  • La variable puede estar mal medida o contener outliers

Insight negocio

  • Mayor visibilidad puede asociarse a productos de baja rotación
  • No necesariamente indica mejor desempeño

¿Esperaríamos una correlación negativa?

  • Intuitivamente, esperaríamos correlación positiva

  • Sin embargo, observamos lo contrario

Insight EDA

  • La correlación simple no captura causalidad
  • Puede existir confusión por variables ocultas

Insight negocio

  • Productos con baja demanda reciben más visibilidad
  • Estrategias de exhibición buscan impulsar ventas bajas

Precio vs Ventas: la correlación más fuerte

Visibilidad vs Ventas: la paradoja del anaquel

Para discutir:

  • ¿Por qué productos con más espacio en anaquel venden menos?
  • ¿Podría ser que los productos de nicho necesiten más espacio pero tengan demanda baja?

Pregunta 4

¿Existe estructura latente en los datos?

Del EDA al PCA

Hasta ahora exploramos cada variable por separado o en pares.

Pero los datos tienen 4 dimensiones numéricas simultáneas:

(\text{Peso},\; \text{Visibilidad},\; \text{Precio},\; \text{Antigüedad tienda})

La pregunta ahora es: ¿podemos resumir estas 4 dimensiones en 2 o 3 componentes que conserven la mayor información posible, y que nos permitan visualizar la estructura de los datos?

Tip

PCA no reemplaza el EDA univariado y bivariado — lo sintetiza. Las variables que mostraron correlaciones altas entre sí tenderán a dominar los mismos componentes principales.

Paso 1: Estandarizar

Las escalas son completamente distintas — sin estandarización, el PCA quedaría dominado por Item_MRP:

pca_cols = ['Item_Weight','Item_Visibility','Item_MRP','Outlet_Age']

# Ver la escala de cada variable
df[pca_cols].describe().loc[['mean','std','min','max']].round(3)
Item_Weight Item_Visibility Item_MRP Outlet_Age
mean 12.875 0.066 140.993 15.168
std 4.645 0.052 62.275 8.372
min 4.555 0.000 31.290 4.000
max 21.350 0.328 266.888 28.000

Paso 1: Estandarizar

scaler = StandardScaler()
X_std  = scaler.fit_transform(df[pca_cols])

# Verificar: todas con media ≈ 0 y std ≈ 1
pd.DataFrame(X_std, columns=pca_cols).describe().loc[['mean','std']].round(4)
Item_Weight Item_Visibility Item_MRP Outlet_Age
mean 0.0000 -0.0000 -0.0000 -0.0000
std 1.0001 1.0001 1.0001 1.0001

Paso 2: Aplicar PCA

Para discutir: ¿Cuántos componentes retendríamos por la regla de Kaiser (\lambda > 1)? ¿Y por la regla del 80%?

Loadings: ¿qué mide cada componente?

                    PC1     PC2     PC3     PC4
Item_Weight      0.0222  0.7217 -0.6520 -0.2315
Item_Visibility  0.7037 -0.0539  0.2050 -0.6782
Item_MRP        -0.0520  0.6853  0.7182  0.1087
Outlet_Age       0.7083  0.0813 -0.1306  0.6890

Biplot: estructura en 2D

Para discutir:

  • ¿Por qué Grocery Store se separa del resto en el eje PC1?
  • ¿Qué dice eso sobre cómo difieren de los supermercados?

¿Qué sigue?

Lo que encontramos hoy

El EDA como mapa para el modelado

El EDA no es un fin en sí mismo — es el mapa que guía las decisiones de modelado:

Hallazgo EDA Decisión para el modelo
Item_MRP tiene r = 0.57 con ventas Incluirla, probablemente sea el predictor más importante
Outlet_Type genera grupos muy distintos Considerar variables dummy o modelos por segmento
Item_Visibility tiene r negativa Investigar si hay colinealidad o efecto confusor

El EDA como mapa para el modelado

El EDA no es un fin en sí mismo — es el mapa que guía las decisiones de modelado:

Hallazgo EDA Decisión para el modelo
Ventas con sesgo positivo fuerte Considerar transformación logarítmica de la variable objetivo
PC1 separa Grocery Store Posible variable de interacción tipo×precio

Tip

Próxima clase: con este mapa, construiremos un modelo de regresión para predecir Item_Outlet_Sales. El EDA que hicimos hoy nos dirá exactamente qué variables incluir y cómo prepararlas.

¿Preguntas?

Almacenes y Minería de Datos

Facultad de Ciencias · UNAM · 2026