Caso Adidas

Objetivo

La empresa Adidas desea comprender los factores que afectan la ganancia operativa de sus productos. Buscamos predecir la ganancia operativa en función de:

  • Variables cuantitativas: Precio por unidad y número de unidades vendidas.
  • Variables categóricas: Método de ventas y retailer.

Con este análisis, el equipo de Adidas podrá identificar cómo diferentes precios, volúmenes de venta, métodos de venta y canales de distribución influyen en la ganancia operativa.

#Gráfico 1: Ganancia operativa vs precio por unidad con método de venta

p1 <- ggplot(adidas1,aes(x=price_per_unit,y=operating_profit,color=sales_method))+
  geom_point(size=5)+
  theme_minimal()+
  labs(title = "Relación entre Precio por Unidad y Ganancia Operativa
       por método de venta",
       x = "Precio por Unidad",
       y = "Ganancia Operativa")

ggplotly(p1)

Se observa una correlación directa y positiva en primera instancia entre el el precio unitario y la ganancia operativa sin importar el método de venta,ya que para tienda física, outlet o método on line la tendencia es que entre mayor sea el precio unitario mayor será la ganancia operativa.

 

 

#Gráfico 2: Ganancia operativa vs precio por unidad con retailer

p2 <-ggplot(adidas1,aes(x=price_per_unit,y=operating_profit,color=retailer))+
  geom_point(size=5)+
  theme_minimal()+
  labs(title = "Relación entre Precio por Unidad y Ganancia Operativa
       por retailer",
       x = "Precio por Unidad",
       y = "Ganancia Operativa")

ggplotly(p2)

Al igual que en el gráfico anterior, vemos la misma relación de las variables y como para cada retailer la tendencia se mantiene. Esto refuerza la visión inicial de que el modelo que trataría de explicar de mejor forma el comportamiento de nuestra variable “Y” que en este caso es la ganancia operativa, debe incluir como una de sus “X” el precio unitario

 

 

# Gráfico 3: Relación entre Precio por Unidad y Ganancia operativa
p3 <- ggplot(adidas1,aes(x = price_per_unit, y = operating_profit, color = sales_method)) +
  geom_point(alpha = 0.7, size = 3) +
  facet_wrap(~ retailer) +
  theme_minimal() +
  labs(title = "Relación entre Precio por Unidad y Ganancia Operativa",
       x = "Precio por Unidad",
       y = "Ganancia Operativa")

ggplotly(p3)

En el gráfico se observa por cada retailer según el método de venta, como se comporta la ganancia operativa según el preco por unidad, aunque la relación es directa y positiva se observa dispersión en los datos lo que puede resultar en una correlación no tan alta o no tan cercana a 1.

 

 

#Gráfico 4 Ganancia operativa vs unidades vendidas con método de venta

p4 <- ggplot(adidas1,aes(x=units_sold,y=operating_profit,color=sales_method))+
  geom_point(size=5)+
  theme_minimal()+
  labs(title = "Relación entre Unidades vendidas y Ganancia Operativa
       por método de venta",
       x = "Unidades vendidas",
       y = "Ganancia Operativa")

ggplotly(p4)

En este caso se observa que la ganancia operativa tiene también una correlación directa y positiva con las unidades vendidas. Además, el gráfico de dispersión es más cerrado que el anterior (menos disperso).

 

 

#Gráfico 5 Ganancia operativa vs unidades vendidas con retailer

p5 <- ggplot(adidas1,aes(x=units_sold,y=operating_profit,color=retailer))+
  geom_point(size=5)+
  theme_minimal()+
  labs(title = "Relación entre Unidades vendidas y Ganancia Operativa
       por retailer",
       x = "Unidades vendidas",
       y = "Ganancia Operativa")

ggplotly(p5)

Con este gráfico, al igual que con el Gráfico 2, se infiere que para nuestro modelo en el cual “Y” sería la ganancia operativa, incluir la variable unidades vendidas como una “X” adicional ayudaría a explicar mejor su comportamiento pues observamos un comportamiento más cerrado, directo y positivo entre las dos variables.

 

 

#Gráfico 6: Relación entre unidades vendidas y Ganancia Operativa

p6 <- ggplot(adidas1, aes(x = units_sold, y = operating_profit, color = retailer)) +
  geom_point(alpha = 0.6, size = 3) +
  facet_wrap(~ sales_method) +
  theme_minimal() +
  labs(title = "Relación entre Unidades Vendidas y Ganancia Operativa",
       x = "Unidades Vendidas",
       y = "Ganancia Operativa")

ggplotly(p6)

En el gráfico se observa por cada método de venta según el retailer, como se comporta la ganancia operativa según el las unidades vendidas, se evidencia que la relación es directa y positiva y no se observa tanta dispersión en los datos lo que resultaría en una correlación más alta que en la comparación anterior (vs el precio por unidad) y más cercana a 1 que se procederá a calcular y a analizar a continuación.

 

 

 

Correlación entre Ganancia Operativa y Precio por unidad

cor(adidas1$price_per_unit, adidas1$operating_profit)
## [1] 0.5036827

El resultado de 0,5 muestra que si bien hay correlación entre las dos variables esta no es muy alta, lo q es verificable en los gráficos de dispersión 1, 2 y 3 donde se ven puntos muy dispersos.

 

 

 

Correlación Ganancia Operativa y Unidades vendidas

cor(adidas1$units_sold, adidas1$operating_profit)
## [1] 0.8719928

Por el contrario, la correlación entre las unidades vendidas y la ganancia operativa es de 0,87 (cercana al 0,9). Esto se evidencia con claridad en los gráficos 4, 5 y 6 donde los datos se ven menos dispersos y más apilados.

 

 

 

En el siguiente gráfico se evidencia la relación de ganancia operativa y precio por unidad con líneas de regresión

p7 <- ggplot(adidas1, aes(x = price_per_unit, y = operating_profit, color = sales_method)) +
  geom_point(alpha = 0.6, size = 3) +
  geom_smooth(method = "lm", se = FALSE) +
  theme_minimal() +
  labs(title = "Relación entre Precio por Unidad y Ganancia Operativa",
       x = "Precio por Unidad",
       y = "Ganancia Operativa") +
  theme(legend.position = "bottom")

ggplotly(p7)

 

 

 

En el siguiente gráfico se evidencia la relación de ganancia operativa y unidades vendidas con líneas de regresión

p8 <- ggplot(adidas1, aes(x = units_sold, y = operating_profit, color = sales_method)) +
  geom_point(alpha = 0.6, size = 3) +
  geom_smooth(method = "lm", se = FALSE) +
  theme_minimal() +
  labs(title = "Relación entre Unidades Vendidas y Ganancia Operativa",
       x = "Unidades Vendidas",
       y = "Ganancia Operativa") +
  theme(legend.position = "bottom")

ggplotly(p8)
Al comparar los dos gráficos, se ve que con las unidades vendidas la correlación y las pendientes de las líneas de regresión son mayores en comparación con los precios unitarios con respecto a la Ganancia Operativa.

 

 

 

Matriz de correlación

Variables cuantitativas

varcuant <- adidas1 %>%
  select(price_per_unit, units_sold, operating_profit, total_sales, operating_margin)

 

 

Cálculo de la matriz de correlación

matriz_cor <- cor(varcuant, use = "complete.obs")

 

 

Gráfico de la matriz de correlación

p9 <- ggcorrplot(matriz_cor, method = "circle", lab=TRUE, type="lower", title="Matriz de Correlación")

ggplotly(p9)

 

 

MODELO DE REGRESIÓN LINEAL

Propuesta 1

Se toma un modelo de regresión lineal tomando dos variables cuantitativas (precio por unidad y unidades vendidas) y dos variables cualitativas (método de venta y retailer).

lm_adidas <- lm(operating_profit ~ price_per_unit + units_sold + as.factor(sales_method) + as.factor(retailer), data = adidas1)

# Resumen del modelo
summary(lm_adidas)
## 
## Call:
## lm(formula = operating_profit ~ price_per_unit + units_sold + 
##     as.factor(sales_method) + as.factor(retailer), data = adidas1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11672.1   -780.7     13.6    669.6  17563.9 
## 
## Coefficients:
##                                    Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      -4937.9386   106.4172 -46.402  < 2e-16 ***
## price_per_unit                      96.9777     1.4195  68.319  < 2e-16 ***
## units_sold                          18.4859     0.1032 179.175  < 2e-16 ***
## as.factor(sales_method)Online      751.1205    58.1892  12.908  < 2e-16 ***
## as.factor(sales_method)Outlet      403.6597    60.4856   6.674 2.63e-11 ***
## as.factor(retailer)Foot Locker     130.9444    73.0621   1.792   0.0731 .  
## as.factor(retailer)Kohl's          -55.9731    87.1005  -0.643   0.5205    
## as.factor(retailer)Sports Direct   508.6999    76.6202   6.639 3.32e-11 ***
## as.factor(retailer)Walmart         -32.9122   100.0463  -0.329   0.7422    
## as.factor(retailer)West Gear       229.2299    74.5138   3.076   0.0021 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1922 on 9638 degrees of freedom
## Multiple R-squared:  0.8442, Adjusted R-squared:  0.844 
## F-statistic:  5802 on 9 and 9638 DF,  p-value: < 2.2e-16

El modelo tiene un R2 de 0,844, lo que indica que las variables mencionadas anteriormente explican en un 84,4% el comportamiento de la variable “Y” que para nuestro caso es la ganancia operativa

De igual forma se evidencia por la cantidad de asteriscos, que el precio unitario y las unidades vendidas tienen una alt significacia para la ganancia operativa. Así mismo, el método de venta tiene una significancia alta para la ganancia operativa y podemos inferir que cada venta Online tiene una ganancia operativa 751 USD mayor que una venta en tienda física y 347 USD más que en Outlet

Sin embargo, en este modelo vemos que no todos los retailers tienen significancia alta en la ganancia operativa. Sólo Sports Direct y West Gear son significantes y presentan además los 3 asteriscos. Foot Loker tiene una significancia baja y los otros 2 (Kohl’s y Walmart) no tienen significancia lo que además se identifica en el resumen del modelo ya que su rango incluye el cero.

  • Intervalo de confianza del modelo 1
confint(lm_adidas)
##                                        2.5 %      97.5 %
## (Intercept)                      -5146.53868 -4729.33848
## price_per_unit                      94.19525    99.76024
## units_sold                          18.28362    18.68809
## as.factor(sales_method)Online      637.05734   865.18364
## as.factor(sales_method)Outlet      285.09531   522.22419
## as.factor(retailer)Foot Locker     -12.27266   274.16147
## as.factor(retailer)Kohl's         -226.70842   114.76232
## as.factor(retailer)Sports Direct   358.50830   658.89153
## as.factor(retailer)Walmart        -229.02399   163.19956
## as.factor(retailer)West Gear        83.16712   375.29260

 

 

Se procederá a realizar el análisis de otro modelo de regresión lineal, cambiando la variable cualitativa retailer por la variable producto.

Propuesta 2 - Cambia Retailer por producto

lm_adidas2 <- lm(operating_profit ~ units_sold + price_per_unit + as.factor(sales_method) + as.factor(Product), data = adidas1)

# Resumen del modelo 2
summary(lm_adidas2)
## 
## Call:
## lm(formula = operating_profit ~ units_sold + price_per_unit + 
##     as.factor(sales_method) + as.factor(Product), data = adidas1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11784.1   -790.6     21.5    692.5  17656.6 
## 
## Coefficients:
##                                               Estimate Std. Error t value
## (Intercept)                                 -4775.2712    99.3020 -48.088
## units_sold                                     18.3150     0.1069 171.381
## price_per_unit                                 95.1882     1.4754  64.517
## as.factor(sales_method)Online                 688.5051    57.3524  12.005
## as.factor(sales_method)Outlet                 360.6121    59.0769   6.104
## as.factor(Product)Men's Athletic Footwear    -188.9845    69.0267  -2.738
## as.factor(Product)Men's Street Footwear       576.1707    71.3722   8.073
## as.factor(Product)Women's Apparel             483.6256    67.9480   7.118
## as.factor(Product)Women's Athletic Footwear   267.9226    68.8885   3.889
## as.factor(Product)Women's Street Footwear      52.6075    69.6849   0.755
##                                             Pr(>|t|)    
## (Intercept)                                  < 2e-16 ***
## units_sold                                   < 2e-16 ***
## price_per_unit                               < 2e-16 ***
## as.factor(sales_method)Online                < 2e-16 ***
## as.factor(sales_method)Outlet               1.07e-09 ***
## as.factor(Product)Men's Athletic Footwear   0.006196 ** 
## as.factor(Product)Men's Street Footwear     7.70e-16 ***
## as.factor(Product)Women's Apparel           1.18e-12 ***
## as.factor(Product)Women's Athletic Footwear 0.000101 ***
## as.factor(Product)Women's Street Footwear   0.450307    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1912 on 9638 degrees of freedom
## Multiple R-squared:  0.8457, Adjusted R-squared:  0.8456 
## F-statistic:  5870 on 9 and 9638 DF,  p-value: < 2.2e-16

El modelo 2 tiene un R2 levemente más alto que el modelo 1 con un valor de 0,8456 que indica que las variables seleccionadas explican en un 84,56% el comportamiento de la ganancia operativa.

En el modelo anterior ya vimos que las unidades vendidas, el precio de venta y el método de venta son significativas para la ganancia operativa. En este, vemos que el producto tiene en general una significancia mayor para la ganancia operativa que el retailer ya que todos los productos salvo el calzado de mujer tienen una significancia alta según el modelo.

  • Intervalo de confianza del Modelo 2
confint(lm_adidas2)
##                                                   2.5 %      97.5 %
## (Intercept)                                 -4969.92391 -4580.61850
## units_sold                                     18.10548    18.52444
## price_per_unit                                 92.29610    98.08023
## as.factor(sales_method)Online                 576.08229   800.92781
## as.factor(sales_method)Outlet                 244.80899   476.41523
## as.factor(Product)Men's Athletic Footwear    -324.29143   -53.67758
## as.factor(Product)Men's Street Footwear       436.26610   716.07529
## as.factor(Product)Women's Apparel             350.43321   616.81791
## as.factor(Product)Women's Athletic Footwear   132.88668   402.95861
## as.factor(Product)Women's Street Footwear     -83.98948   189.20453

 

 

Finalmente, se procede a realizar un tercer modelo de regresión cambiando la variable cualitativa retailer por la variable cualitativa región.

Propuesta 3 - Cambia Retailer por región

lm_adidas3 <- lm(operating_profit ~ units_sold + price_per_unit + as.factor(sales_method) + as.factor(Region), data = adidas1)
# Resumen del modelo 3
summary(lm_adidas3)
## 
## Call:
## lm(formula = operating_profit ~ units_sold + price_per_unit + 
##     as.factor(sales_method) + as.factor(Region), data = adidas1)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11201.2   -802.4     -8.0    690.8  17145.9 
## 
## Coefficients:
##                                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                   -4742.5061    87.1060 -54.445  < 2e-16 ***
## units_sold                       18.3296     0.1049 174.752  < 2e-16 ***
## price_per_unit                  102.8617     1.4656  70.183  < 2e-16 ***
## as.factor(sales_method)Online   613.3764    59.2261  10.357  < 2e-16 ***
## as.factor(sales_method)Outlet   298.6319    61.5142   4.855 1.22e-06 ***
## as.factor(Region)Northeast     -167.8685    60.4946  -2.775  0.00553 ** 
## as.factor(Region)South          475.4734    66.4965   7.150 9.29e-13 ***
## as.factor(Region)Southeast     -112.1920    72.1662  -1.555  0.12007    
## as.factor(Region)West          -618.9507    61.1120 -10.128  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1900 on 9639 degrees of freedom
## Multiple R-squared:  0.8477, Adjusted R-squared:  0.8475 
## F-statistic:  6704 on 8 and 9639 DF,  p-value: < 2.2e-16

Similar al modelo 2, este modelo tiene un R2 levemente mayor a los modelos 1 y 2 y explica en un 84,75% el comportamiento de la ganancia operativa. En este caso, vemos que las regiones tienen una significancia mayor para la ganancia operativa vs los retailer. La única región que no tiene impacto en la ganancia operativa es el Sudeste.

  • Intervalo de confianza del modelo 3.
confint(lm_adidas3)
##                                     2.5 %      97.5 %
## (Intercept)                   -4913.25215 -4571.76012
## units_sold                       18.12403    18.53524
## price_per_unit                   99.98878   105.73467
## as.factor(sales_method)Online   497.28081   729.47199
## as.factor(sales_method)Outlet   178.05110   419.21271
## as.factor(Region)Northeast     -286.45060   -49.28638
## as.factor(Region)South          345.12618   605.82058
## as.factor(Region)Southeast     -253.65284    29.26890
## as.factor(Region)West          -738.74293  -499.15840

Teniendo en cuenta que la variación del R2 entre los modelos 1, 2 y 3 no es alta, se procederá a utilizar el modelo 1 para realizar la predicción de la ganancia operativa tomando como base diferentes valores de las variables seleccionadas en el modelo 1 apoyados en las descriptivas.

 

 

 

PREDICCIÓN CON MODELO 1

Se procede a tomar con la función “summary” las variables descriptivas de precio unitario y unidades vendidas para utilizar el primer cuartil, la mediana, la media, el tercer cuartil y el máximo en la predicción de la Ganancia Operativa

summary(adidas1$price_per_unit)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    7.00   35.00   45.00   45.22   55.00  110.00
summary(adidas1$units_sold)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0   106.0   176.0   256.9   350.0  1275.0

Tomando las variables descritas anteriormente y en cada caso agregando diferentes métodos de venta y retailers se genera la siguiente tabla para realizar las 8 predicciones de la Ganancia Operativa.

datos_adidas <- data.frame(
  price_per_unit = c(35,45,45.22,45.22,55,110,35,110),
  units_sold = c(106,176,256,256,350,1275,1275,106),
  sales_method = c("Online","Outlet","Online","Outlet","In-store","Outlet","In-store","In-store"),
  retailer = c("Amazon","Foot Locker","Sports Direct","West Gear","Walmart","Sports Direct","West Gear","West Gear")
)

datos_adidas
##   price_per_unit units_sold sales_method      retailer
## 1          35.00        106       Online        Amazon
## 2          45.00        176       Outlet   Foot Locker
## 3          45.22        256       Online Sports Direct
## 4          45.22        256       Outlet     West Gear
## 5          55.00        350     In-store       Walmart
## 6         110.00       1275       Outlet Sports Direct
## 7          35.00       1275     In-store     West Gear
## 8         110.00        106     In-store     West Gear
predict(lm_adidas, newdata=datos_adidas)
##         1         2         3         4         5         6         7         8 
##  1166.904  3214.175  5439.594  4812.664  6832.975 30211.438 22254.978  7918.344

Para la predicción 1, utilizando los primeros cuartiles de las variables cuantitativas (precio de USD 35 por unidad y 106 unidades), el método Online y el retailer Amazon, se tendría una Ganancia Operativa esperada de USD 1.166.

Para la predicción 2, utilizando las medianas de las variables cuantitativas (precio de USD 45 por unidad y 176 unidades), el método Outlet y el retailer Foot Locker, se tendría una Ganancia Operativa esperada de USD 3.214.

Para las predicciones 3 y 4, se utilizaron en ambos casos las medias de las variables cuantitativas (precio de USD 45,22 por unidad y 256 unidades), en cuanto a las variables cualitativas se usó para la predicción 3 el método de venta y el retailer de mayor significancia en el modelo (Online y Sports Direct), para la predicción 4 se usaron variables cualitativas de menores significancias (Outlet y West Gear) teniendo una Ganancia Operativa esperada de USD 5.439 en la predicción 3 y una Ganancia Operativa esperada de USD 4.812 en la predicción 4. Esto nos ayuda a concluir que para ventas del mismo precio y misma cantidad de unidades (de acuerdo a las medias), el método Online y el retailer Sports Direct representarían una Ganancia Operativa adicional de USD 627.

Para la predicción 5, utilizando los terceros cuartiles de las variables cuantitativas (precio de USD 55 por unidad y 350 unidades), el método In-Store y el retailer Walmart, se tendría una Ganancia Operativa esperada de USD 6.832.

Para la predicción 6, utilizando los máximos de las variables cuantitativas (precio de USD 110 por unidad y 1275 unidades), el método Outlet y el retailer Sports Direct, se tendría una Ganancia Operativa esperada de USD 30.211 donde se evidencia con claridad que el precio unitario y las unidades juegan un papel fundamental en la obtención de la ganancia Operativa.

Las predicciones 7 y 8 son realizadas con los mismos métodos de venta y retailer pero con diferentes precios unitarios y unidades vendidas de manera que se pueda diferenciar el efecto de ambas variables cuantitativas en el modelo. En este caso la predicción 7 tiene una Ganancia Opertiva más alta que la predicción 8 ya que está realizada con el máximo de las unidades vendidas y como vimos al inicio las unidades vendidas tienen una correlación mayor que el precio unitario (0,5 vs 0,87), por lo tanto tiene mayor impacto en la Ganancia operativa una mayor cantidad de unidades vendidas que un mayor precio unitario.