La empresa Adidas desea comprender los factores que afectan la ganancia operativa de sus productos. Buscamos predecir la ganancia operativa en función de:
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.
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.
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.
varcuant <- adidas1 %>%
select(price_per_unit, units_sold, operating_profit, total_sales, operating_margin)
matriz_cor <- cor(varcuant, use = "complete.obs")
p9 <- ggcorrplot(matriz_cor, method = "circle", lab=TRUE, type="lower", title="Matriz de Correlación")
ggplotly(p9)
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.
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.
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.
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.
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.
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.
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.