Este informe presenta un análisis descriptivo y exploratorio de las ventas de Adidas en Estados Unidos, con el fin de comprender el comportamiento comercial de la empresa y evaluar su desempeño financiero en distintos segmentos del mercado. A partir del análisis de los datos, se busca identificar patrones en las ventas, diferencias entre regiones, productos y métodos de venta, y posibles relaciones entre variables clave que influyen en la rentabilidad.
El conjunto de datos utilizado está conformado por 9.651 registros que incluyen información sobre retailers, regiones, ciudades, líneas de producto, precios por unidad, unidades vendidas, ventas totales, utilidad operativa y margen operativo. Esta información permite desarrollar un estudio integral del desempeño de la compañía en el mercado estadounidense desde una perspectiva analítica y basada en datos.
El análisis exploratorio de datos constituye una etapa fundamental para comprender el comportamiento comercial y financiero de Adidas en el mercado de Estados Unidos. A través de este proceso es posible examinar la estructura del dataset, identificar patrones en las ventas, evaluar la distribución de las variables y detectar posibles valores atípicos o variaciones significativas entre segmentos.
PASO 1. Instalar y cargar librerias
# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
PASO 2: Cargar la base de datos
# Cargar datos desde el archivo Excel
datos_col <- read_excel("ADIDAS EXCEL.xlsx")
# Ver las primeras filas de los datos
class(datos_col)
## [1] "tbl_df" "tbl" "data.frame"
colnames(datos_col)
## [1] "distribuidor" "region" "estado"
## [4] "ciudad" "producto" "precio_unidad"
## [7] "unidades_vendidas" "ventas_total" "utilidad_operativa"
## [10] "margen_operativo" "metodo_venta"
head(datos_col)
| distribuidor | region | estado | ciudad | producto | precio_unidad | unidades_vendidas | ventas_total | utilidad_operativa | margen_operativo | metodo_venta |
|---|---|---|---|---|---|---|---|---|---|---|
| Foot Locker | Northeast | New York | New York | Men’s Street Footwear | 50 | 1200 | 60000 | 30000.0 | 0.50 | In-store |
| Foot Locker | Northeast | New York | New York | Men’s Athletic Footwear | 50 | 1000 | 50000 | 15000.0 | 0.30 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Street Footwear | 40 | 1000 | 40000 | 14000.0 | 0.35 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Athletic Footwear | 45 | 850 | 38250 | 13387.5 | 0.35 | In-store |
| Foot Locker | Northeast | New York | New York | Men’s Apparel | 60 | 900 | 54000 | 16200.0 | 0.30 | In-store |
| Foot Locker | Northeast | New York | New York | Women’s Apparel | 50 | 1000 | 50000 | 12500.0 | 0.25 | In-store |
# Resumen estadístico de las variables financieras
resumen <- datos_col %>%
select(region, estado, ciudad, producto, precio_unidad, unidades_vendidas, ventas_total, utilidad_operativa, margen_operativo) %>%
summary()
resumen
## region estado ciudad producto
## Length:9648 Length:9648 Length:9648 Length:9648
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## precio_unidad unidades_vendidas ventas_total utilidad_operativa
## Min. : 7.00 Min. : 0.0 Min. : 0 Min. : 0
## 1st Qu.: 35.00 1st Qu.: 106.0 1st Qu.: 4065 1st Qu.: 1753
## Median : 45.00 Median : 176.0 Median : 7804 Median : 3263
## Mean : 45.22 Mean : 256.9 Mean :12455 Mean : 4895
## 3rd Qu.: 55.00 3rd Qu.: 350.0 3rd Qu.:15864 3rd Qu.: 6192
## Max. :110.00 Max. :1275.0 Max. :82500 Max. :39000
## margen_operativo
## Min. :0.100
## 1st Qu.:0.350
## Median :0.410
## Mean :0.423
## 3rd Qu.:0.490
## Max. :0.800
# ── Indicadores de Tendencia Central ─────────────────────────────
# na.rm = TRUE evita que los NA afecten los cálculos (buena práctica)
# Cantidad de transacciones
cantidad_transacciones <- nrow(datos_col)
# Ventas totales
promedio_ventas <- mean(datos_col$ventas_total, na.rm = TRUE)
mediana_ventas <- median(datos_col$ventas_total, na.rm = TRUE)
# Precio por unidad
promedio_precio <- mean(datos_col$precio_unidad, na.rm = TRUE)
mediana_precio <- median(datos_col$precio_unidad, na.rm = TRUE)
# Unidades vendidas
promedio_unidades <- mean(datos_col$unidades_vendidas, na.rm = TRUE)
mediana_unidades <- median(datos_col$unidades_vendidas, na.rm = TRUE)
# Crear tabla resumen
resultado_centralidad <- data.frame(
Métrica = c("Transacciones",
"Promedio Ventas $",
"Mediana Ventas $",
"Promedio Precio $",
"Mediana Precio $",
"Promedio Unidades",
"Mediana Unidades"),
Valor = c(cantidad_transacciones,
round(promedio_ventas, 2),
round(mediana_ventas, 2),
round(promedio_precio, 2),
round(mediana_precio, 2),
round(promedio_unidades, 2),
round(mediana_unidades, 2))
)
resultado_centralidad
| Métrica | Valor |
|---|---|
| Transacciones | 9648.00 |
| Promedio Ventas $ | 12455.08 |
| Mediana Ventas $ | 7803.50 |
| Promedio Precio $ | 45.22 |
| Mediana Precio $ | 45.00 |
| Promedio Unidades | 256.93 |
| Mediana Unidades | 176.00 |
Interpretación — Centralidad
Si el promedio de ventas_total es mayor que la mediana, existe asimetría positiva. Eso significa que algunas ventas muy grandes están elevando la media.
La mediana representa mejor el comportamiento típico cuando hay valores atípicos. Comparar promedio vs mediana en:
ventas_total
precio_unidad
unidades_vendidas
Variabilidad De Ventas Totales
# ── Variabilidad para VENTAS TOTALES ─────────────────────────────
minimo_ventas <- min(datos_col$ventas_total, na.rm = TRUE)
maximo_ventas <- max(datos_col$ventas_total, na.rm = TRUE)
desvest_ventas <- sd(datos_col$ventas_total, na.rm = TRUE)
cv_ventas <- (desvest_ventas / promedio_ventas) * 100
indic_ventas <- data.frame(
Promedio = round(promedio_ventas, 2),
Mediana = round(mediana_ventas, 2),
Minimo = round(minimo_ventas, 2),
Maximo = round(maximo_ventas, 2),
Desv_Est = round(desvest_ventas, 2),
CV_Pct = round(cv_ventas, 2)
)
indic_ventas
| Promedio | Mediana | Minimo | Maximo | Desv_Est | CV_Pct |
|---|---|---|---|---|---|
| 12455.08 | 7803.5 | 0 | 82500 | 12716.39 | 102.1 |
Variabilidad De Precio Por Unidad
# ── Variabilidad para PRECIO POR UNIDAD ─────────────────────────
minimo_precio <- min(datos_col$precio_unidad, na.rm = TRUE)
maximo_precio <- max(datos_col$precio_unidad, na.rm = TRUE)
desvest_precio <- sd(datos_col$precio_unidad, na.rm = TRUE)
cv_precio <- (desvest_precio / promedio_precio) * 100
indic_precio <- data.frame(
Promedio = round(promedio_precio, 2),
Mediana = round(mediana_precio, 2),
Minimo = round(minimo_precio, 2),
Maximo = round(maximo_precio, 2),
Desv_Est = round(desvest_precio, 2),
CV_Pct = round(cv_precio, 2)
)
indic_precio
| Promedio | Mediana | Minimo | Maximo | Desv_Est | CV_Pct |
|---|---|---|---|---|---|
| 45.22 | 45 | 7 | 110 | 14.71 | 32.52 |
Variabilidad De Utilidad Operativa
# ── Variabilidad para UTILIDAD OPERATIVA ───────────────────────
promedio_utilidad <- mean(datos_col$utilidad_operativa, na.rm = TRUE)
mediana_utilidad <- median(datos_col$utilidad_operativa, na.rm = TRUE)
minimo_utilidad <- min(datos_col$utilidad_operativa, na.rm = TRUE)
maximo_utilidad <- max(datos_col$utilidad_operativa, na.rm = TRUE)
desvest_utilidad <- sd(datos_col$utilidad_operativa, na.rm = TRUE)
cv_utilidad <- (desvest_utilidad / promedio_utilidad) * 100
indic_utilidad <- data.frame(
Promedio = round(promedio_utilidad, 2),
Mediana = round(mediana_utilidad, 2),
Minimo = round(minimo_utilidad, 2),
Maximo = round(maximo_utilidad, 2),
Desv_Est = round(desvest_utilidad, 2),
CV_Pct = round(cv_utilidad, 2)
)
indic_utilidad
| Promedio | Mediana | Minimo | Maximo | Desv_Est | CV_Pct |
|---|---|---|---|---|---|
| 4894.79 | 3262.98 | 0 | 39000 | 4866.46 | 99.42 |
Interpretación — Variabilidad
El Coeficiente de Variación (CV%) permite comparar dispersión entre variables con escalas distintas.
Un CV alto en ventas_total indica heterogeneidad entre transacciones (ventas muy disparejas).
Un CV alto en utilidad_operativa sugiere inconsistencia en rentabilidad.
Un CV bajo en precio_unidad indica mayor estabilidad en la estrategia de precios.
Historigramas
# Crear histograma de ventas_total
grafico_histograma_ventas <- plot_ly(
data = datos_col,
x = ~ventas_total,
type = "histogram",
nbinsx = 30,
marker = list(color = "#1D3557")
)
# Agregar formato
grafico_histograma_ventas <- layout(
grafico_histograma_ventas,
title = "Figura 1. Distribucion de Ventas Totales - Adidas USA",
xaxis = list(title = "Ventas Totales (USD)"),
yaxis = list(title = "Frecuencia"),
bargap = 0.05
)
# Mostrar grafico
grafico_histograma_ventas
Interpretación de la Figura 1
Se evidencia una clara asimetría positiva, con alta concentración de pedidos en rangos bajos y medios y una cola extendida hacia valores altos, lo cual es coherente considerando que las transacciones corresponden a abastecimiento de tiendas minoristas, outlets y comercio online, y no a ventas al consumidor final. El promedio superior a la mediana confirma que existen puntos de venta que realizan pedidos significativamente mayores que la mayoría, reflejando heterogeneidad en tamaño, capacidad comercial o demanda regional.
# Histograma de precio_unidad
grafico_histograma_precio <- plot_ly(
data = datos_col,
x = ~precio_unidad,
type = "histogram",
nbinsx = 30,
marker = list(color = "#1D3557")
)
# Agregar formato
grafico_histograma_precio <- layout(
grafico_histograma_precio,
title = "Figura 2. Distribucion del Precio por Unidad - Adidas USA",
xaxis = list(title = "Precio por Unidad (USD)"),
yaxis = list(title = "Frecuencia"),
bargap = 0.05
)
# Mostrar grafico
grafico_histograma_precio
Interpretación de la Figura 2
La distribución del precio por unidad se aproxima a una forma normal, ya que presenta una concentración central clara alrededor de los 40–45 USD y una diferencia mínima entre promedio y mediana, lo que indica simetría relativa y baja distorsión por valores extremos.
# Histograma de margen_operativo en porcentaje
grafico_distribucion_margen <- plot_ly(
data = datos_col,
x = ~I(margen_operativo * 100), # Convertir a porcentaje
type = "histogram",
nbinsx = 30,
marker = list(color = "#1D3557")
)
# Agregar formato
grafico_distribucion_margen <- layout(
grafico_distribucion_margen,
title = "Figura 3. Distribucion del Margen Operativo (%) - Adidas USA",
xaxis = list(title = "Margen Operativo (%)"),
yaxis = list(title = "Frecuencia"),
bargap = 0.05
)
# Mostrar grafico
grafico_distribucion_margen
Interpretación de la Figura 3
La distribución del margen operativo tiene una forma similar a una campana, concentrándose principalmente entre el 30% y el 50%, con un punto central cercano al 40%, lo que indica que la mayoría de las transacciones mantienen niveles de rentabilidad consistentes. Aunque se observa una ligera inclinación hacia valores más altos —con algunos márgenes que alcanzan niveles cercanos al 80%— estos casos son menos frecuentes y no distorsionan el comportamiento general. En conjunto, la gráfica refleja una estructura de márgenes relativamente estable, con variaciones controladas y sin evidencia de alta volatilidad
# ── Boxplot de Ventas Totales ───────────────────────────────────
grafico_boxplot_ventas <- plot_ly(
datos_col,
y = ~ventas_total,
type = "box",
name = "Ventas Totales", # Nombre del trace
boxpoints = "outliers", # Mostrar valores atípicos
marker = list(color = "#2A9D8F"),
line = list(color = "#1B6F63")
) %>%
layout(
title = "Figura 4. Distribución de Ventas Totales - Adidas USA",
yaxis = list(title = "Ventas Totales (USD)"),
xaxis = list(
title = "",
showticklabels = FALSE, # Oculta escala -0.4 a 0.4
showgrid = FALSE,
zeroline = FALSE
)
)
# ── Mostrar gráfico ─────────────────────────────────────────────
grafico_boxplot_ventas
Interpretación de la Figura 4
El diagrama muestra una mediana cercana a los 7.800 USD, con un rango intercuartílico concentrado aproximadamente entre 4.000 y 15.000 USD, lo que indica que la mayoría de las transacciones se ubican dentro de ese intervalo. Se observa una clara asimetría positiva, evidenciada por un bigote superior más largo y una cantidad considerable de valores atípicos que superan los 30.000 USD e incluso alcanzan más de 80.000 USD. Esto confirma que, aunque la mayor parte de las ventas por transacción se mantienen en niveles moderados, existe un grupo reducido de pedidos significativamente más altos que incrementan la dispersión general y elevan el promedio.
# Cargar librería
library(plotly)
# Boxplot de Precio por Unidad según Producto
grafico_boxplot_producto <- plot_ly(
datos_col,
x = ~producto,
y = ~precio_unidad,
type = "box",
boxpoints = "outliers", # Mostrar valores atípicos
marker = list(color = "#2A9D8F"), # Verde elegante
line = list(color = "#1B6F63")
) %>%
layout(
title = "Figura 5. Distribución del Precio por Unidad según Línea de Producto",
xaxis = list(title = "Línea de Producto"),
yaxis = list(title = "Precio por Unidad (USD)")
)
#mostrar grafico
grafico_boxplot_producto
Interpretación de la Figura 5
La distribución del precio por unidad según línea de producto muestra diferencias claras entre categorías y género. En general, las líneas de Apparel, especialmente Women’s Apparel, presentan medianas ligeramente más altas y mayor dispersión, lo que sugiere una mayor amplitud de precios dentro de esa categoría. Por su parte, las líneas de Athletic Footwear y Street Footwear muestran medianas más moderadas y distribuciones relativamente más compactas, indicando mayor estandarización de precios. También se observan valores atípicos en casi todas las categorías
En la Figura 5. se observa una fuerte correlación positiva entre los ingresos y la utilidad operacional, con un coeficiente de correlación de 0.99.
Esto indica que a medida que los ingresos aumentan, la utilidad operacional también crece en casi la misma proporción.
# Boxplot de Margen Operativo (%) por Método de Venta
grafico_boxplot_margen_metodo <- plot_ly(
datos_col,
x = ~metodo_venta, # Cambia el nombre si tu variable es diferente
y = ~margen_operativo,
type = "box",
boxpoints = "outliers", # Mostrar valores atípicos
marker = list(color = "#F77F00"), # Naranja elegante
line = list(color = "#D65A00")
) %>%
layout(
title = "Figura 6. Margen Operativo (%) por Método de Venta - Adidas USA",
xaxis = list(title = "Método de Venta"),
yaxis = list(title = "Margen Operativo (%)")
)
#mostrar grafico
grafico_boxplot_margen_metodo
Interpretación de la Figura 6 El margen operativo por método de venta muestra diferencias claras entre canales. El canal Online presenta la mediana más alta (cercana al 47–48%) y mayor dispersión, lo que indica que, en promedio, es el canal más rentable, aunque con variabilidad en sus resultados. El canal Outlet se ubica en un nivel intermedio, con una mediana alrededor del 40% y presencia de algunos márgenes bajos y altos, reflejando estrategias de descuento que reducen rentabilidad en ciertos casos. Por su parte, el canal In-store muestra la mediana más baja (aproximadamente 34–35%) y menor amplitud relativa, lo que sugiere márgenes más estables pero estructuralmente inferiores frente al online. En conjunto, la gráfica evidencia que la rentabilidad varía significativamente según el canal de venta, siendo el comercio online el más sólido en términos de margen.
Análisis Comparativo Regional
# Crear tabla comparativa por región
tabla_region <- datos_col %>%
group_by(region) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Utilidad_Total = sum(utilidad_operativa, na.rm = TRUE),
Margen_Promedio = mean(margen_operativo, na.rm = TRUE)
)
# Mostrar tabla con título
cat("### Tabla 1. Resumen Comparativo por Región\n")
## ### Tabla 1. Resumen Comparativo por Región
kable(tabla_region, digits = 2)
| region | Ventas_Totales | Utilidad_Total | Margen_Promedio |
|---|---|---|---|
| Midwest | 16674434 | 6859945 | 0.44 |
| Northeast | 25078267 | 9732774 | 0.41 |
| South | 20603356 | 9221605 | 0.47 |
| Southeast | 21374436 | 8393059 | 0.42 |
| West | 36436157 | 13017584 | 0.40 |
# Resumen de ventas por región
ventas_region <- datos_col %>%
group_by(region) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE)
)
# Gráfico de pastel - Ventas Totales por Región
grafico_pastel_region <- plot_ly(
ventas_region,
labels = ~region,
values = ~Ventas_Totales,
type = "pie",
textinfo = "label+percent",
textposition = "inside",
hoverinfo = "label+value+percent",
marker = list(
colors = c("#0B2545", "#1D3557", "#457B9D", "#A8DADC") # Gama azul corporativa
)
) %>%
layout(
title = "Figura 7. Participación de Ventas Totales por Región - Adidas USA"
)
#mostrar grafico
grafico_pastel_region
Interpretación de la Figura 7
Las ventas muestran una concentración relevante en la región West, que lidera con cerca del 30% del total, evidenciando mayor peso comercial frente al resto. El Northeast ocupa el segundo lugar con poco más del 20%, mientras que South y Southeast mantienen participaciones similares y equilibradas. El Midwest presenta la menor contribución.
# Calcular margen promedio por región
margen_region <- datos_col %>%
group_by(region) %>%
summarise(
Margen_Promedio = mean(margen_operativo, na.rm = TRUE)*100,0
)
# Gráfico de barras - Margen Operativo por Región
grafico_barras_margen_region <- plot_ly(
margen_region,
x = ~region,
y = ~Margen_Promedio,
type = "bar",
marker = list(color = "#1D3557"), # Azul corporativo
text = ~round(Margen_Promedio, 2),
textposition = "inside"
) %>%
layout(
title = "Figura 8. Margen Operativo Promedio por Región - Adidas USA",
xaxis = list(title = "Región"),
yaxis = list(title = "Margen Operativo Promedio (%)"),
uniformtext = list(minsize = 10, mode = "hide")
)
#mostrar grafico
grafico_barras_margen_region
Interpretacuón de la Figura 8
El margen operativo promedio varía de manera moderada entre regiones, siendo South la más rentable con aproximadamente 46,7%, seguida por Midwest con 43,5%. Southeast y Northeast presentan niveles intermedios cercanos al 41–42%, mientras que West, a pesar de ser la región con mayor participación en ventas, muestra el margen promedio más bajo (39,7%). Esto evidencia que mayor volumen de ventas no necesariamente implica mayor rentabilidad, y que existen diferencias claras en eficiencia o estructura comercial entre regiones.
Análisis Diferencial Regional
# Cargar librerías
library(dplyr)
library(knitr)
# Tabla comparativa por retailer
tabla_distribuidor <- datos_col %>%
group_by(distribuidor) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Precio_Promedio = round(mean(precio_unidad, na.rm = TRUE), 2),
Unidades_Vendidas = sum(unidades_vendidas, na.rm = TRUE),
Utilidad_Total = sum(utilidad_operativa, na.rm = TRUE),
Margen_Promedio = round(mean(margen_operativo, na.rm = TRUE), 0)
)
# Mostrar tabla con título
cat("### Tabla 2. Comparativo de Variables Numéricas por Retailer\n")
## ### Tabla 2. Comparativo de Variables Numéricas por Retailer
kable(tabla_distribuidor)
| distribuidor | Ventas_Totales | Precio_Promedio | Unidades_Vendidas | Utilidad_Total | Margen_Promedio |
|---|---|---|---|---|---|
| Amazon | 10096987 | 48.76 | 197990 | 3984432 | 0 |
| Foot Locker | 29024945 | 44.78 | 604369 | 11317027 | 0 |
| Kohl’s | 13512453 | 44.61 | 287375 | 5182260 | 0 |
| Sports Direct | 24616622 | 42.05 | 557640 | 10641609 | 0 |
| Walmart | 10506085 | 47.18 | 206225 | 3902749 | 0 |
| West Gear | 32409558 | 46.74 | 625262 | 12196891 | 0 |
# Cargar librerías
library(dplyr)
library(plotly)
# Resumen por distribuidor (retailer)
resumen_distribuidor <- datos_col %>%
group_by(distribuidor) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Utilidad_Operativa = sum(utilidad_operativa, na.rm = TRUE)
)
# Gráfico de líneas comparativo
grafico_lineas_distribuidor <- plot_ly(resumen_distribuidor) %>%
add_lines(
x = ~distribuidor,
y = ~Ventas_Totales,
name = "Ventas Totales",
line = list(color = "#1D3557", width = 3)
) %>%
add_lines(
x = ~distribuidor,
y = ~Utilidad_Operativa,
name = "Utilidad Operativa",
line = list(color = "#F77F00", width = 3)
) %>%
layout(
title = "Figura 9. Utilidad Operativa vs Ventas Totales por Distribuidor",
xaxis = list(title = "Distribuidor"),
yaxis = list(title = "Monto (USD)")
)
#mostrar grafico
grafico_lineas_distribuidor
Interpretación de la Figura 9
Se muestra un comportamiento proporcional, donde los distribuidores con mayores ventas también generan mayor utilidad, evidenciando una relación positiva entre ambas variables. West Gear lidera tanto en ventas como en utilidad, seguido por Foot Locker y Sports Direct, lo que indica alto aporte comercial y rentabilidad significativa. En contraste, Amazon y Walmart presentan niveles más bajos en ambas métricas, mientras que Kohl’s se ubica en un nivel intermedio. La consistencia en la separación entre ambas líneas sugiere márgenes relativamente estables entre distribuidores, sin desviaciones abruptas que indiquen ineficiencias extremas
Análisis Diferencial por Portafolio de Productos
# Tabla comparativa por línea de producto
tabla_lineas_venta <- datos_col %>%
group_by(producto) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Unidades_Vendidas = sum(unidades_vendidas, na.rm = TRUE),
Precio_Promedio = round(mean(precio_unidad, na.rm = TRUE), 2),
Utilidad_Total = sum(utilidad_operativa, na.rm = TRUE),
Margen_Promedio = round(mean(margen_operativo, na.rm = TRUE), 0)
) %>%
arrange(desc(Ventas_Totales))
# Mostrar tabla con título
cat("### Tabla 4. Comparativo de Líneas de Venta (Producto)\n")
## ### Tabla 4. Comparativo de Líneas de Venta (Producto)
kable(tabla_lineas_venta)
| producto | Ventas_Totales | Unidades_Vendidas | Precio_Promedio | Utilidad_Total | Margen_Promedio |
|---|---|---|---|---|---|
| Men’s Street Footwear | 27680769 | 593320 | 44.24 | 11629046 | 0 |
| Women’s Apparel | 23870985 | 433827 | 51.60 | 9685221 | 0 |
| Men’s Athletic Footwear | 20577180 | 435526 | 43.78 | 7437457 | 0 |
| Women’s Street Footwear | 17201563 | 392269 | 40.25 | 6494017 | 0 |
| Men’s Apparel | 16520632 | 306683 | 50.32 | 6381405 | 0 |
| Women’s Athletic Footwear | 14315521 | 317236 | 41.11 | 5597822 | 0 |
# Cargar librerías
library(dplyr)
library(plotly)
# Resumen de ventas por producto
ventas_producto <- datos_col %>%
group_by(producto) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE)
)
# Gráfico de pastel - Ventas Totales por Línea de Producto
grafico_pastel_producto <- plot_ly(
ventas_producto,
labels = ~producto,
values = ~Ventas_Totales,
type = "pie",
textinfo = "label+percent",
textposition = "inside",
hoverinfo = "label+value+percent",
marker = list(
colors = c("#0B2545", "#1D3557", "#457B9D", "#A8DADC", "#2A9D8F")
)
) %>%
layout(
title = "Figura 10. Participación de Ventas Totales por Línea de Producto - Adidas USA"
)
#mostrar grafico
grafico_pastel_producto
# Cargar librerías
library(dplyr)
library(plotly)
# Calcular promedios por producto
resumen_producto <- datos_col %>%
group_by(producto) %>%
summarise(
Precio_Promedio = mean(precio_unidad, na.rm = TRUE),
Margen_Promedio = mean(margen_operativo, na.rm = TRUE)
)
# Gráfico de dispersión
grafico_scatter_producto <- plot_ly(
resumen_producto,
x = ~Precio_Promedio,
y = ~Margen_Promedio,
type = "scatter",
mode = "markers+text",
text = ~producto,
textposition = "top center",
marker = list(
size = 12,
color = "#1D3557"
)
) %>%
layout(
title = "Figura 11. Margen Operativo vs Precio Promedio por Producto",
xaxis = list(title = "Precio Promedio (USD)"),
yaxis = list(title = "Margen Operativo Promedio (%)")
)
#mostrar grafico
grafico_scatter_producto
Interpretacion figuras 10-11
La participación de ventas muestra que Men’s Street Footwear lidera el portafolio con 23%, seguido por Women’s Apparel (19,9%) y Men’s Athletic Footwear (17,1%), lo que indica que el volumen comercial se concentra principalmente en calzado masculino y ropa femenina. Sin embargo, al cruzar esta información con la relación entre margen operativo y precio promedio, se observa que los productos con mayor precio no necesariamente son los de mayor participación, aunque sí tienden a mantener márgenes sólidos. Women’s Apparel, además de tener alta participación, combina el precio promedio más alto con uno de los márgenes más elevados, posicionándose como una línea estratégicamente fuerte. Por otro lado, Men’s Street Footwear, aunque es la categoría con mayor volumen de ventas, no presenta el margen más alto, lo que sugiere que su liderazgo se explica más por volumen que por rentabilidad relativa.
Análisis Comparativo por Método de Venta
# Cargar librerías
library(dplyr)
library(knitr)
# Tabla comparativa por método de venta
tabla_metodo_venta <- datos_col %>%
group_by(metodo_venta) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE),
Unidades_Vendidas = sum(unidades_vendidas, na.rm = TRUE),
Precio_Promedio = round(mean(precio_unidad, na.rm = TRUE), 2),
Utilidad_Total = sum(utilidad_operativa, na.rm = TRUE),
Margen_Promedio = round(mean(margen_operativo, na.rm = TRUE), 0)
)
# Mostrar tabla con título
cat("### Tabla 3. Comparativo de Variables Numéricas por Método de Venta\n")
## ### Tabla 3. Comparativo de Variables Numéricas por Método de Venta
kable(tabla_metodo_venta)
| metodo_venta | Ventas_Totales | Unidades_Vendidas | Precio_Promedio | Utilidad_Total | Margen_Promedio |
|---|---|---|---|---|---|
| In-store | 35664375 | 689990 | 48.82 | 12759129 | 0 |
| Online | 44965657 | 939093 | 45.90 | 19552538 | 0 |
| Outlet | 39536618 | 849778 | 42.03 | 14913301 | 0 |
# Cargar librerías
library(dplyr)
library(plotly)
# Resumen de ventas por método de venta
ventas_metodo <- datos_col %>%
group_by(metodo_venta) %>%
summarise(
Ventas_Totales = sum(ventas_total, na.rm = TRUE)
)
# Gráfico de pastel - Ventas Totales por Método de Venta
grafico_pastel_metodo <- plot_ly(
ventas_metodo,
labels = ~metodo_venta,
values = ~Ventas_Totales,
type = "pie",
textinfo = "label+percent",
textposition = "inside",
hoverinfo = "label+value+percent",
marker = list(
colors = c("#0B2545", "#1D3557", "#457B9D", "#A8DADC", "#2A9D8F")
)
) %>%
layout(
title = "Figura 12. Participación de Ventas Totales por Método de Venta - Adidas USA"
)
#mostrar grafico
grafico_pastel_metodo
Interpretación de la Figura 12
La estructura refleja un modelo comercial diversificado, donde ningún canal domina de forma absoluta y las ventas están repartidas de manera estratégica entre presencia física tradicional, puntos de descuento y comercio electrónico.
# ── Cargar librerías ─────────────────────────────────────────────
library(dplyr)
library(plotly)
# ── Top 10 Ciudades por Ventas Totales ──────────────────────────
top10_ciudades <- datos_col %>%
group_by(ciudad) %>%
summarise(ventas_totales = sum(ventas_total, na.rm = TRUE)) %>%
arrange(desc(ventas_totales)) %>%
slice_head(n = 10)
# ── Gráfico de Barras ───────────────────────────────────────────
grafico_top10_ciudades <- plot_ly(
top10_ciudades,
x = ~reorder(ciudad, ventas_totales),
y = ~ventas_totales,
type = "bar",
marker = list(color = "#2A9D8F")
) %>%
layout(
title = "Top 10 Ciudades por Ventas Totales",
xaxis = list(title = "Ciudad"),
yaxis = list(title = "Ventas Totales (USD)")
)
# ── Mostrar gráfico ─────────────────────────────────────────────
grafico_top10_ciudades
Estructura comercial diversificada pero no homogénea. Las ventas presentan una distribución asimétrica, con concentración en rangos medios y presencia de transacciones altas que elevan el promedio, lo que indica heterogeneidad entre puntos de venta. Esto confirma que el comportamiento comercial no es uniforme y que existen segmentos con mayor peso en volumen dentro del sistema.
El canal online lidera en ingresos y rentabilidad. El comercio online no solo concentra la mayor participación de ventas (37,4%), sino que también muestra el margen operativo mediano más alto frente a los canales físicos. Esto evidencia una estructura más eficiente y con mejor capacidad de captura de valor en comparación con In-store y Outlet.
El volumen no siempre coincide con la mayor rentabilidad. Aunque la región West lidera en participación de ventas (30,3%), presenta el margen promedio más bajo entre regiones, mientras que South, con menor participación relativa, registra el margen más alto. Esto demuestra que mayor volumen no necesariamente implica mayor eficiencia operativa.
Portafolio equilibrado entre volumen y margen. Men’s Street Footwear lidera en participación de ventas, pero Women’s Apparel combina alta participación con uno de los mayores márgenes y el precio promedio más alto, posicionándose como una línea estratégicamente sólida. El portafolio no depende exclusivamente de una sola categoría, sino que equilibra líneas que aportan volumen y otras que aportan rentabilidad.
1. Priorizar expansión y optimización del canal online. Dado su liderazgo tanto en participación como en margen, el canal digital representa la estructura más eficiente del modelo comercial, por lo que fortalecer su penetración podría mejorar la rentabilidad global sin depender exclusivamente del aumento de volumen físico.
2. Revisar eficiencia en la región West Aunque es la región con mayor participación en ventas, su margen promedio es el más bajo, lo que sugiere posibles oportunidades de mejora en estructura de costos, estrategia de precios o mezcla de productos.
3. Potenciar líneas con alto margen y sólida participación. Women’s Apparel demuestra combinación favorable entre precio promedio, margen y participación; fortalecer su posicionamiento podría incrementar la rentabilidad total sin necesidad de aumentar desproporcionadamente el volumen.