En este informe se analizara.
# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(RecordLinkage)
library(leaflet)
library(htmltools)
library(plotrix)
library(readxl)
library(dplyr)
library(corrplot)
library(scales)
library(readxl)
DatosCaso1_1_ <- read_excel("C:/Users/mec10/Downloads/DatosCaso1 (1).xlsx",
col_types = c("text", "text", "text",
"text", "text", "numeric", "numeric",
"numeric", "numeric", "numeric",
"text"))
head(DatosCaso1_1_)
## # A tibble: 6 × 11
## distribuidor region estado ciudad producto precio_unidad unidades_vendidas
## <chr> <chr> <chr> <chr> <chr> <dbl> <dbl>
## 1 Foot Locker Northeast New Yo… New Y… Men's S… 50 1200
## 2 Foot Locker Northeast New Yo… New Y… Men's A… 50 1000
## 3 Foot Locker Northeast New Yo… New Y… Women's… 40 1000
## 4 Foot Locker Northeast New Yo… New Y… Women's… 45 850
## 5 Foot Locker Northeast New Yo… New Y… Men's A… 60 900
## 6 Foot Locker Northeast New Yo… New Y… Women's… 50 1000
## # ℹ 4 more variables: ventas_total <dbl>, utilidad_operativa <dbl>,
## # margen_operativo <dbl>, metodo_venta <chr>
##Analitica descriptiva
# Resumen estadístico de las variables relevantes
resumen <- DatosCaso1_1_ %>%
select(unidades_vendidas,ventas_total, utilidad_operativa) %>%
summary()
resumen
## unidades_vendidas ventas_total utilidad_operativa
## Min. : 0.0 Min. : 0 Min. : 0
## 1st Qu.: 106.0 1st Qu.: 4065 1st Qu.: 1753
## Median : 176.0 Median : 7804 Median : 3263
## Mean : 256.9 Mean :12455 Mean : 4895
## 3rd Qu.: 350.0 3rd Qu.:15864 3rd Qu.: 6192
## Max. :1275.0 Max. :82500 Max. :39000
# Crear y mostrar el boxplot precio unitario
ggplotly(
ggplot(DatosCaso1_1_, aes(y=precio_unidad)) +
geom_boxplot(fill="blue", color="black", outlier.colour="red", outlier.shape=200, outlier.size=5) +
labs(title="Figura 1. Boxplot del precio unitario",
y="Precio") +
theme_minimal()
)
El boxplot del precio unitario evidencia una distribución con mediana en aproximadamente 45, lo que indica que la mitad de los productos se comercializan por debajo de este valor y la otra mitad por encima. El rango intercuartílico (Q1 ≈ 35 y Q3 ≈ 55) muestra una concentración importante de precios en un intervalo relativamente acotado, lo que sugiere una estrategia de precios consistente en el portafolio principal. Sin embargo, la presencia de múltiples valores atípicos por encima del límite superior (upper fence ≈ 85), alcanzando precios máximos cercanos a 110, indica la existencia de productos premium o segmentos de alto valor que se alejan significativamente del comportamiento central. En contraste, el límite inferior cercano a 7 refleja productos de bajo costo, posiblemente orientados a estrategias de penetración de mercado. En términos analíticos, esta distribución sugiere una estructura de precios segmentada, donde coexisten líneas económicas, estándar y premium, lo cual es coherente con una estrategia de diferenciación y maximización de ingresos en distintos nichos de mercado.
# Crear el gráfico de barras interactivo
grafico_barras_ingresos <- DatosCaso1_1_ %>%
plot_ly(x = ~producto, y = ~ventas_total, type = 'bar',
marker = list(color = 'blue')) %>%
layout(title = "Ventas totales por producto",
xaxis = list(title = "Producto"),
yaxis = list(title = "Figura 2. Ventas (Miles de pesos)"),
hovermode = "x")
# Mostrar el gráfico
grafico_barras_ingresos
El gráfico de barras de ventas totales por producto permite identificar de manera clara la contribución relativa de cada categoría al ingreso global de la compañía, evidenciando que Men’s Street Footwear es la línea con mayor desempeño, alcanzando aproximadamente 28 millones, lo que la posiciona como el principal generador de ingresos dentro del portafolio. Le sigue Women’s Apparel, con un nivel cercano a los 24 millones, consolidándose como una categoría estratégica en el segmento femenino. En contraste, Women’s Athletic Footwear presenta el menor volumen de ventas, situándose alrededor de los 14 millones, lo que podría indicar una menor penetración de mercado o una oportunidad de crecimiento. Desde una perspectiva analítica, este gráfico es altamente relevante porque permite comparar categorías discretas de producto y detectar rápidamente concentraciones de ingresos, lo cual es fundamental para la toma de decisiones estratégicas relacionadas con asignación de recursos, fortalecimiento de líneas líderes y rediseño de aquellas con menor desempeño.
# Agrupar ventas por distribuidor
ventas_dist <- DatosCaso1_1_ %>%
group_by(distribuidor) %>%
summarise(ventas_total = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas_total))
# Crear colores
colores <- rainbow(nrow(ventas_dist))
# Si tienes menos o más categorías, ajusta automáticamente:
colores <- colores[1:nrow(ventas_dist)]
# Crear gráfico tipo pie 3D
pie3D(ventas_dist$ventas_total,
labels = paste(ventas_dist$distribuidor,"\n",round(ventas_dist$ventas_total/sum(ventas_dist$ventas_total)*100,1), "%"),
col = colores,
main = "Figura 3. Participación de Ventas por Distribuidor",
explode = 0.1,
labelcex = 0.7,
theta = 1.2)
El gráfico de participación de ventas por distribuidor evidencia una clara concentración del ingreso en pocos canales, donde West Gear lidera con un 27%, seguido por Foot Locker con 24.2% y Sports Direct con 20.5%, consolidándose como los principales impulsores comerciales de la compañía. En contraste, distribuidores como Kohl’s (11.2%), Walmart (8.7%) y Amazon (8.4%) presentan una menor participación relativa, lo que sugiere oportunidades de crecimiento o menor penetración en estos canales. Desde una perspectiva analítica, esta distribución indica una dependencia significativa en los principales distribuidores, lo cual representa tanto una fortaleza en términos de volumen como un riesgo estratégico ante posibles cambios en estos socios comerciales.
# Agrupar ventas por metodo de venta
ventas_metodo <- DatosCaso1_1_ %>%
group_by(metodo_venta) %>%
summarise(ventas_total = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas_total))
# Definir colores manualmente (ajusta a tu gusto)
colores <- c('darkblue','blue','skyblue','lightblue' )
# Si tienes menos o más categorías, ajusta automáticamente:
colores <- colores[1:nrow(ventas_metodo)]
# Crear gráfico tipo pie 3D
pie3D(ventas_metodo$ventas_total,
labels = paste(ventas_metodo$metodo_venta,"\n",round(ventas_metodo$ventas_total/sum(ventas_metodo$ventas_total)*100,1), "%"),
col = colores,
main = "Figura 4. Participación de Ventas por Metodo",
explode = 0.1,
labelcex = 0.7,
theta = 1.2)
El gráfico muestra que el canal Online lidera la participación en ventas con un 37.4%, seguido por Outlet con 32.9% y In-store con 29.7%, lo que evidencia una mayor relevancia de los canales digitales y de descuento en la generación de ingresos, sugiriendo una tendencia hacia la digitalización y estrategias comerciales más competitivas en precio.
# Agrupar ventas por region
ventas_region <- DatosCaso1_1_ %>%
group_by(region) %>%
summarise(ventas_total = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas_total))
# Definir colores manualmente (ajusta a tu gusto)
colores <- c('darkblue','yellow','green','red','lightblue','purple')
# Si tienes menos o más categorías, ajusta automáticamente:
colores <- colores[1:nrow(ventas_region)]
# Crear gráfico tipo pie 3D
pie3D(ventas_region$ventas_total,
labels = paste(ventas_region$region,"\n",round(ventas_region$ventas_total/sum(ventas_region$ventas_total)*100,1), "%"),
col = colores,
main = "Figura 5. Participación de Ventas por Region",
explode = 0.1,
labelcex = 0.7,
theta = 1.2)
### Analisis de margen por venta
# Crear y mostrar el boxplot margen por venta
ggplotly(
ggplot(DatosCaso1_1_, aes(y=margen_operativo)) +
geom_boxplot(fill="blue", color="black", outlier.colour="red", outlier.shape=1000, outlier.size=3) +
labs(title="Figura 6. Boxplot de margen por venta",
y="Margen") +
theme_minimal()
)
El boxplot del margen por venta evidencia una varianza moderada, con una mediana cercana a 0.41 y un rango intercuartílico entre aproximadamente 0.35 (Q1) y 0.49 (Q3), lo que indica que la mayoría de las transacciones presentan niveles de rentabilidad relativamente consistentes. No obstante, la amplitud entre los límites (desde valores cercanos a 0.15 hasta alrededor de 0.70) y la presencia de valores atípicos superiores que alcanzan hasta 0.80 reflejan una dispersión significativa en ciertos casos, lo que sugiere que algunas ventas logran márgenes excepcionalmente altos. Desde una perspectiva analítica, esta combinación de concentración en el rango central y presencia de extremos indica que, aunque el negocio mantiene una eficiencia operativa estable en la mayoría de las operaciones, existen factores puntuales —como tipo de producto, canal o condiciones comerciales— que generan variaciones relevantes en la rentabilidad.
# Crear y mostrar el boxplot precio unitario
ggplotly(
ggplot(DatosCaso1_1_, aes(y=ventas_total)) +
geom_boxplot(fill="blue", color="black", outlier.colour="red", outlier.shape=1000, outlier.size=3) +
labs(title="Figura 6. Boxplot de total por venta",
y="Precio") +
theme_minimal()
)
El boxplot del total por venta muestra una distribución altamente asimétrica hacia la derecha, evidenciada por una mediana cercana a 7,803.5 y un rango intercuartílico entre aproximadamente 4,063.5 (Q1) y 15,867 (Q3), lo que indica que la mayoría de las transacciones se concentran en niveles relativamente moderados. Sin embargo, la presencia de numerosos valores atípicos por encima del límite superior (upper fence ≈ 33,250), alcanzando máximos de hasta 82,500, refleja la existencia de ventas significativamente elevadas que podrían corresponder a pedidos de gran volumen o clientes estratégicos. Desde una perspectiva analítica, esta dispersión sugiere una estructura de ingresos heterogénea, donde pocas transacciones de alto valor tienen un impacto considerable en el total de ventas, lo que implica tanto oportunidades de rentabilidad como riesgos asociados a la dependencia de grandes operaciones.
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(DatosCaso1_1_, aes(x = precio_unidad, y = unidades_vendidas)) +
geom_point(color = "darkblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "lm", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 7. Relación entre unidades vendidas y precio de venta ventas\nCoef. de correlación: ",
round(cor(DatosCaso1_1_$unidades_vendidas, DatosCaso1_1_$precio_unidad, use = "complete.obs"), 2)),
x = "Precio por unidad",
y = "Unidades vendidas",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
El gráfico de dispersión evidencia una relación positiva pero débil entre el precio por unidad y las unidades vendidas, reflejada en un coeficiente de correlación de 0.27. Esto indica que, aunque existe una ligera tendencia a que precios más altos se asocien con mayores niveles de ventas, dicha relación no es significativa ni determinante, sugiriendo que otros factores —como marca, canal de venta o tipo de producto— influyen de manera más relevante en la demanda. Desde una perspectiva económica, este comportamiento puede estar asociado a la presencia de segmentos diferenciados, donde ciertos productos con mayor valor percibido mantienen volúmenes de venta elevados, rompiendo parcialmente la relación inversa tradicional entre precio y cantidad demandada.
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(DatosCaso1_1_, aes(x = unidades_vendidas, y = utilidad_operativa)) +
geom_point(color = "darkblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "lm", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 8. Relación entre unidades vendidas y utilidad\nCoef. de correlación: ",
round(cor(DatosCaso1_1_$unidades_vendidas, DatosCaso1_1_$utilidad_operativa, use = "complete.obs"), 2)),
x = "Unidades vendidas",
y = "utilidad",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
El gráfico de dispersión evidencia una fuerte relación positiva entre las unidades vendidas y la utilidad, respaldada por un coeficiente de correlación de 0.87, lo que indica que el incremento en el volumen de ventas se traduce directamente en mayores niveles de rentabilidad. Este comportamiento sugiere una estructura de negocio donde los ingresos crecen de manera consistente con las cantidades comercializadas, manteniendo márgenes relativamente estables. Desde una perspectiva financiera, este resultado es altamente relevante, ya que confirma que la estrategia de aumentar el volumen de ventas es un driver clave de generación de valor, aunque la dispersión observada también indica que existen variaciones en la utilidad para niveles similares de ventas, lo cual puede estar asociado a diferencias en precios, costos o mix de productos.
# Crear y mostrar el boxplot comparativo por producto
ggplotly(
ggplot(DatosCaso1_1_, aes(x = producto, y = margen_operativo, fill = producto)) +
geom_boxplot(fill="lightblue", color="black", outlier.colour="red", outlier.shape=1000, outlier.size=3) +
labs(title="Figura 9. Boxplot de margen operativo por producto",
y="margen") +
theme_minimal()
)
El boxplot del margen operativo por producto evidencia que, en términos generales, la rentabilidad se mantiene relativamente homogénea entre las distintas categorías, con medianas cercanas al 40%–45%, lo que sugiere una estructura operativa consistente en el portafolio. Sin embargo, se observan diferencias en la dispersión: Women’s Apparel presenta una mayor variabilidad, indicando fluctuaciones en su margen posiblemente asociadas a cambios en costos o estrategias comerciales, mientras que categorías como Men’s Street Footwear muestran márgenes más altos y concentrados, reflejando mayor estabilidad y eficiencia. Asimismo, la presencia de valores atípicos en varias líneas de producto sugiere operaciones con rentabilidades significativamente diferentes, lo cual puede estar relacionado con promociones, segmentación de clientes o canales de venta específicos. En conjunto, el análisis permite identificar no solo qué productos son rentables, sino también cuáles presentan mayor estabilidad en su desempeño financiero.
# Crear y mostrar el boxplot comparativo por metodo de venta
ggplotly(
ggplot(DatosCaso1_1_, aes(x = metodo_venta, y = margen_operativo, fill = metodo_venta)) +
geom_boxplot(fill="blue", color="black", outlier.colour="red", outlier.shape=1000, outlier.size=3) +
labs(title="Figura 10. Boxplot de margen operativo por metodo de venta",
y="margen") +
theme_minimal()
)
El boxplot del margen operativo por método de venta evidencia no solo diferencias en niveles de rentabilidad, sino también en variabilidad entre canales. El canal Online presenta la mediana más alta (alrededor de 0.45–0.48) junto con una dispersión considerable y presencia de valores atípicos superiores, lo que indica tanto un alto potencial de rentabilidad como una mayor volatilidad en los resultados. Por su parte, el canal Outlet muestra una variabilidad amplia, con un rango intercuartílico más extendido y múltiples outliers tanto bajos como altos, reflejando la naturaleza fluctuante de las estrategias de descuento y liquidación. En contraste, In-store presenta una menor dispersión y márgenes más concentrados alrededor de valores más bajos, lo que sugiere una operación más estable pero menos eficiente en términos de rentabilidad. En conjunto, el análisis revela un trade-off claro entre rentabilidad y estabilidad: mientras canales como Online ofrecen mayores márgenes, también implican mayor variabilidad en el desempeño.
# Crear y mostrar el boxplot comparativo por region
ggplotly(
ggplot(DatosCaso1_1_, aes(x = region, y = margen_operativo, fill = region)) +
geom_boxplot(fill="lightblue", color="black", outlier.colour="red", outlier.shape=1000, outlier.size=3) +
labs(title="Figura 10. Boxplot de margen operativo por region",
y="margen") +
theme_minimal()
)
El boxplot del margen operativo por región muestra que, aunque las medianas se mantienen relativamente cercanas (alrededor de 0.40–0.45), existen diferencias importantes en términos de variabilidad. La región South presenta no solo uno de los márgenes más altos, sino también una mayor dispersión y presencia de valores atípicos superiores, lo que indica un mayor potencial de rentabilidad acompañado de mayor volatilidad. Por su parte, regiones como Midwest y Southeast exhiben una variabilidad moderada, con márgenes relativamente estables. En contraste, West presenta una dispersión amplia con valores atípicos tanto bajos como altos, sugiriendo inconsistencias en el desempeño operativo. Northeast, por su parte, muestra una distribución más concentrada, indicando mayor estabilidad aunque con márgenes ligeramente inferiores. En conjunto, el análisis evidencia un trade-off entre rentabilidad y estabilidad regional, lo cual es clave para la toma de decisiones estratégicas en asignación de recursos y gestión de riesgos.
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(DatosCaso1_1_, aes(x = ventas_total, y = utilidad_operativa)) +
geom_point(color = "darkblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "lm", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 11. Relación entre Toral ventas y Utilidad operativa\nCoef. de correlación: ",
round(cor(DatosCaso1_1_$ventas_total, DatosCaso1_1_$utilidad_operativa, use = "complete.obs"), 2)),
x = "Total Ventas",
y = "Utilidad Operativa",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
El gráfico evidencia una relación fuertemente positiva entre las ventas totales y la utilidad operativa, respaldada por un coeficiente de correlación de 0.94, lo que indica que el crecimiento en ingresos se traduce de manera directa y consistente en mayores niveles de rentabilidad. Desde una perspectiva de análisis de mercado, este comportamiento sugiere que la empresa opera en un entorno donde el aumento en la demanda y el volumen de ventas es el principal motor de generación de valor, manteniendo estructuras de costos relativamente controladas. Además, la alineación lineal observada refleja una eficiencia operativa sólida, donde no se presentan pérdidas significativas al escalar las ventas. Sin embargo, la dispersión en niveles altos de ventas indica que, aunque el crecimiento es rentable, existen diferencias en el desempeño entre segmentos o productos, lo que abre oportunidades para optimizar el mix comercial y enfocar estrategias en aquellos segmentos que maximizan la utilidad por unidad vendida.
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(DatosCaso1_1_, aes(x = precio_unidad, y = unidades_vendidas)) +
geom_point(color = "darkblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "lm", color = "black", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 12. Relación entre Precio por unidad y unidades vendidas\nCoef. de correlación: ",
round(cor(DatosCaso1_1_$precio_unidad, DatosCaso1_1_$unidades_vendidas, use = "complete.obs"), 2)),
x = "Precio por unidad",
y = "Unidades vendidas",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
El gráfico de dispersión muestra una relación positiva débil entre el precio por unidad y las unidades vendidas, reflejada en un coeficiente de correlación de 0.27, lo que indica que el precio no es un determinante fuerte del volumen de ventas. Aunque se observa una ligera tendencia creciente, la alta dispersión de los datos evidencia que existen múltiples factores adicionales —como el tipo de producto, canal de venta o posicionamiento de marca— que influyen de manera más significativa en la demanda. Desde una perspectiva económica, este comportamiento sugiere la presencia de productos diferenciados o segmentos de mercado donde precios más altos no necesariamente reducen el volumen de ventas, lo cual es consistente con estrategias de valor percibido o posicionamiento premium.
# Seleccionar únicamente variables numéricas relevantes
datos_cor <- DatosCaso1_1_ %>%
select(precio_unidad,
unidades_vendidas,
ventas_total,
utilidad_operativa,
margen_operativo)
# Calcular matriz de correlación
matriz_cor <- cor(datos_cor, use = "complete.obs", method = "pearson")
# Visualizar la matriz numérica en consola
print(round(matriz_cor, 2))
## precio_unidad unidades_vendidas ventas_total
## precio_unidad 1.00 0.27 0.54
## unidades_vendidas 0.27 1.00 0.92
## ventas_total 0.54 0.92 1.00
## utilidad_operativa 0.50 0.87 0.94
## margen_operativo -0.14 -0.31 -0.30
## utilidad_operativa margen_operativo
## precio_unidad 0.50 -0.14
## unidades_vendidas 0.87 -0.31
## ventas_total 0.94 -0.30
## utilidad_operativa 1.00 -0.05
## margen_operativo -0.05 1.00
# Graficar heatmap de correlación
corrplot(matriz_cor,
method = "color",
type = "upper",
order = "hclust",
addCoef.col = "black",
tl.col = "black",
tl.srt = 25,
col = colorRampPalette(c("#dbe9f6", "#6baed6", "#08519c"))(200),
number.cex = 0.8,
mar = c(0,0,1,0),
title = "Matriz de correlación entre variables clave")
La matriz de correlación revela hallazgos clave sobre los drivers de valor y la dinámica operativa del negocio. En primer lugar, se observa una relación muy fuerte entre ventas totales y utilidad operativa (0.94), así como entre unidades vendidas y ventas totales (0.92) y unidades vendidas y utilidad (0.87). Esto confirma que el principal motor de generación de valor es el volumen de ventas, evidenciando un modelo de negocio altamente dependiente de la escala: a mayor cantidad vendida, mayor ingreso y, en consecuencia, mayor utilidad.
Por otro lado, el precio por unidad presenta correlaciones moderadas con ventas (0.54) y utilidad (0.50), y una relación débil con las unidades vendidas (0.27), lo que sugiere que el precio tiene cierta influencia en los resultados, pero no es el factor determinante. Este comportamiento puede indicar un mercado con cierto grado de diferenciación, donde el valor percibido permite sostener precios sin afectar significativamente la demanda.
En contraste, el margen operativo muestra correlaciones débiles e incluso negativas con las demás variables (por ejemplo, -0.31 con unidades vendidas y -0.30 con ventas totales), lo que sugiere que el aumento en el volumen no necesariamente se traduce en mayor eficiencia. Esto puede estar asociado a estrategias de crecimiento basadas en descuentos, mayores costos logísticos o cambios en el mix de productos, donde vender más implica sacrificar margen.
En conjunto, el análisis evidencia un trade-off entre crecimiento y rentabilidad: el negocio crece impulsado por volumen, pero con posibles presiones sobre los márgenes. Desde una perspectiva estratégica, esto sugiere la necesidad de equilibrar la expansión comercial con una gestión más eficiente de costos y precios, enfocándose no solo en vender más, sino en vender mejor.
# Agrupar datos por producto y región
heat_ventas <- DatosCaso1_1_ %>%
group_by(producto, region) %>%
summarise(ventas_total = sum(ventas_total, na.rm = TRUE), .groups = "drop")
# Crear heatmap
ggplot(heat_ventas, aes(x = region, y = producto, fill = ventas_total)) +
geom_tile(color = "white", linewidth = 0.8) +
geom_text(aes(label = comma(round(ventas_total, 0))), size = 3.5, color = "black") +
scale_fill_gradient(low = 'yellow', high = 'red', labels = comma) +
labs(title = "Heatmap de Ventas Totales por Producto y Región",
x = "Región",
y = "Producto",
fill = "Ventas") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.text.x = element_text(angle = 45, hjust = 1, face = "bold"),
axis.text.y = element_text(face = "bold")
)
El heatmap de ventas totales por producto y región evidencia una alta concentración de ingresos en la región West, la cual lidera de manera consistente en todas las categorías, destacándose especialmente Men’s Street Footwear y Women’s Apparel como los productos de mayor desempeño. Asimismo, regiones como Northeast y Southeast presentan niveles de ventas intermedios pero relevantes, mientras que Midwest muestra los valores más bajos en la mayoría de las categorías, lo que sugiere un menor dinamismo comercial. Desde una perspectiva estratégica, se observa que el calzado, particularmente en el segmento masculino, domina en generación de ingresos, lo que indica una clara oportunidad de fortalecer estas líneas en regiones de alto potencial como West, así como de impulsar el crecimiento en regiones menos desarrolladas mediante estrategias comerciales focalizadas.
# Agrupar datos por producto y distribuidor
heat_ventas <- DatosCaso1_1_ %>%
group_by(producto, distribuidor) %>%
summarise(ventas_total = sum(ventas_total, na.rm = TRUE), .groups = "drop")
# Crear heatmap
ggplot(heat_ventas, aes(x = distribuidor, y = producto, fill = ventas_total)) +
geom_tile(color = "white", linewidth = 0.8) +
geom_text(aes(label = comma(round(ventas_total, 0))), size = 3.5, color = "black") +
scale_fill_gradient(low = 'lightblue', high = 'darkblue', labels = comma) +
labs(title = "Heatmap de Ventas Totales por Producto y Región",
x = "Distribuidor",
y = "Producto",
fill = "Ventas") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.text.x = element_text(angle = 45, hjust = 1, face = "bold"),
axis.text.y = element_text(face = "bold")
)
El heatmap de ventas totales por producto y distribuidor evidencia una clara concentración del desempeño en canales específicos, donde Foot Locker y West Gear destacan como los principales impulsores de ingresos en casi todas las categorías, especialmente en Men’s Street Footwear, que alcanza los valores más altos del análisis. Asimismo, se observa que el segmento de calzado, particularmente el masculino, lidera en generación de ventas a través de múltiples distribuidores, mientras que categorías como apparel muestran un comportamiento sólido pero ligeramente inferior. Por otro lado, distribuidores como Amazon y Walmart presentan niveles de ventas más moderados, lo que sugiere menor especialización o menor penetración en ciertas líneas de producto. Desde una perspectiva estratégica, estos resultados indican que la combinación de productos de alto desempeño con distribuidores clave constituye un factor determinante en la generación de valor, evidenciando oportunidades para fortalecer alianzas comerciales y optimizar la distribución según el canal más eficiente.
# Agrupar datos por metodo y distribuidor
heat_ventas <- DatosCaso1_1_ %>%
group_by(metodo_venta, distribuidor) %>%
summarise(utilidad_operativa = sum(utilidad_operativa, na.rm = TRUE), .groups = "drop")
# Crear heatmap
ggplot(heat_ventas, aes(x = distribuidor, y = metodo_venta, fill = utilidad_operativa)) +
geom_tile(color = "white", linewidth = 0.8) +
geom_text(aes(label = comma(round(utilidad_operativa, 0))), size = 3.5, color = "black") +
scale_fill_gradient(low = 'yellow', high = 'red', labels = comma) +
labs(title = "Heatmap de Utilidad operativa por metodo y distribuidor",
x = "Distribuidor",
y = "metodo",
fill = "Utilidad operativa") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.text.x = element_text(angle = 45, hjust = 1, face = "bold"),
axis.text.y = element_text(face = "bold")
)
# 1. Agrupar datos y calcular margen promedio
heat_margen <- DatosCaso1_1_ %>%
group_by(producto, metodo_venta) %>%
summarise(margen_promedio = mean(margen_operativo, na.rm = TRUE),
.groups = "drop")
# 2. Crear heatmap
ggplot(heat_margen, aes(x = metodo_venta, y = producto, fill = margen_promedio)) +
geom_tile(color = "white", linewidth = 0.8) +
# Mostrar valores en cada celda
geom_text(aes(label = round(margen_promedio, 2)),
color = "black",
size = 4) +
# Escala de color profesional
scale_fill_gradient(low = 'yellow', high = 'red') +
labs(title = "Heatmap de Margen Operativo Promedio\npor Producto y Método de Venta",
x = "Método de Venta",
y = "Producto",
fill = "Margen Prom.") +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 16),
axis.text.x = element_text(angle = 45, hjust = 1, face = "bold"),
axis.text.y = element_text(face = "bold")
)
El heatmap del margen operativo promedio por producto y método de venta evidencia que el canal Online presenta consistentemente los mayores niveles de rentabilidad en todas las categorías, alcanzando valores cercanos a 0.49 en productos como Men’s Street Footwear y Women’s Apparel, lo que confirma su superior eficiencia operativa. En contraste, el canal In-store muestra los márgenes más bajos y homogéneos (entre 0.33 y 0.38), reflejando una menor eficiencia posiblemente asociada a mayores costos fijos. Por su parte, Outlet presenta un desempeño intermedio, con márgenes moderados pero relativamente estables. Desde una perspectiva estratégica, estos resultados indican que las combinaciones más atractivas en términos de rentabilidad se concentran en el canal digital, particularmente en líneas de calzado, lo que sugiere priorizar estrategias de crecimiento en este canal para maximizar el valor económico del negocio.