1 Objetivo

Identificar los factores en la cadena de suministro que puedan definir el retraso en la entrega

2 Librerías

Estas son las librerías a usar: library(readxl) library(writexl) library(ggcorrplot) library(ggplot2) library(foreign) library(scales)

3 Datos

3.1 Importación de datos

datacar<-read.csv("1_1supplychaindataset.csv",header=TRUE)

Vamos a conocer la estructura de los datos dentro del objeto “datacar”.

str(datacar)
## 'data.frame':    180519 obs. of  53 variables:
##  $ Type                       : chr  "DEBIT" "TRANSFER" "CASH" "DEBIT" ...
##  $ Days_for_shipping_real     : int  3 5 4 3 2 6 2 2 3 2 ...
##  $ Days_for_shipment_scheduled: int  4 4 4 4 4 4 1 1 2 1 ...
##  $ Benefit_per_order          : num  91.2 -249.1 -247.8 22.9 134.2 ...
##  $ Sales_per_customer         : num  315 311 310 305 298 ...
##  $ Delivery_Status            : chr  "Advance shipping" "Late delivery" "Shipping on time" "Advance shipping" ...
##  $ Late_delivery_risk         : int  0 1 0 0 0 0 1 1 1 1 ...
##  $ Category_Id                : int  73 73 73 73 73 73 73 73 73 73 ...
##  $ Category_Name              : chr  "Sporting Goods" "Sporting Goods" "Sporting Goods" "Sporting Goods" ...
##  $ Customer_City              : chr  "Caguas" "Caguas" "San Jose" "Los Angeles" ...
##  $ Customer_Country           : chr  "Puerto Rico" "Puerto Rico" "EE. UU." "EE. UU." ...
##  $ Customer_Email             : chr  "XXXXXXXXX" "XXXXXXXXX" "XXXXXXXXX" "XXXXXXXXX" ...
##  $ Customer_Fname             : chr  "Cally" "Irene" "Gillian" "Tana" ...
##  $ Customer_Id                : int  20755 19492 19491 19490 19489 19488 19487 19486 19485 19484 ...
##  $ Customer_Lname             : chr  "Holloway" "Luna" "Maldonado" "Tate" ...
##  $ Customer_Password          : chr  "XXXXXXXXX" "XXXXXXXXX" "XXXXXXXXX" "XXXXXXXXX" ...
##  $ Customer_Segment           : chr  "Consumer" "Consumer" "Consumer" "Home Office" ...
##  $ Customer_State             : chr  "PR" "PR" "CA" "CA" ...
##  $ Customer_Street            : chr  "5365 Noble Nectar Island" "2679 Rustic Loop" "8510 Round Bear Gate" "3200 Amber Bend" ...
##  $ Customer_Zipcode           : int  725 725 95125 90027 725 14150 725 33162 725 94583 ...
##  $ Department_Id              : int  2 2 2 2 2 2 2 2 2 2 ...
##  $ Department_Name            : chr  "Fitness" "Fitness" "Fitness" "Fitness" ...
##  $ Latitude                   : num  18.3 18.3 37.3 34.1 18.3 ...
##  $ Longitude                  : num  -66 -66 -122 -118 -66 ...
##  $ Market                     : chr  "Pacific Asia" "Pacific Asia" "Pacific Asia" "Pacific Asia" ...
##  $ Order_City                 : chr  "Bekasi" "Bikaner" "Bikaner" "Townsville" ...
##  $ Order_Country              : chr  "Indonesia" "India" "India" "Australia" ...
##  $ Order_Customer_Id          : int  20755 19492 19491 19490 19489 19488 19487 19486 19485 19484 ...
##  $ order_date_DateOrders      : chr  "1/31/2018 22:56" "1/13/2018 12:27" "1/13/2018 12:06" "1/13/2018 11:45" ...
##  $ Order_Id                   : int  77202 75939 75938 75937 75936 75935 75934 75933 75932 75931 ...
##  $ Order_Item_Cardprod_Id     : int  1360 1360 1360 1360 1360 1360 1360 1360 1360 1360 ...
##  $ Order_Item_Discount        : num  13.1 16.4 18 22.9 29.5 ...
##  $ Order_Item_Discount_Rate   : num  0.04 0.05 0.06 0.07 0.09 ...
##  $ Order_Item_Id              : int  180517 179254 179253 179252 179251 179250 179249 179248 179247 179246 ...
##  $ Order_Item_Product_Price   : num  328 328 328 328 328 ...
##  $ Order_Item_Profit_Ratio    : num  0.29 -0.8 -0.8 0.08 0.45 ...
##  $ Order_Item_Quantity        : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Sales                      : num  328 328 328 328 328 ...
##  $ Order_Item_Total           : num  315 311 310 305 298 ...
##  $ Order_Profit_Per_Order     : num  91.2 -249.1 -247.8 22.9 134.2 ...
##  $ Order_Region               : chr  "Southeast Asia" "South Asia" "South Asia" "Oceania" ...
##  $ Order_State                : chr  "Java Occidental" "Rajast\xe1n" "Rajast\xe1n" "Queensland" ...
##  $ Order_Status               : chr  "COMPLETE" "PENDING" "CLOSED" "COMPLETE" ...
##  $ Order_Zipcode              : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Product_Card_Id            : int  1360 1360 1360 1360 1360 1360 1360 1360 1360 1360 ...
##  $ Product_Category_Id        : int  73 73 73 73 73 73 73 73 73 73 ...
##  $ Product_Description        : logi  NA NA NA NA NA NA ...
##  $ Product_Image              : chr  "http://images.acmesports.sports/Smart+watch " "http://images.acmesports.sports/Smart+watch " "http://images.acmesports.sports/Smart+watch " "http://images.acmesports.sports/Smart+watch " ...
##  $ Product_Name               : chr  "Smart watch " "Smart watch " "Smart watch " "Smart watch " ...
##  $ Product_Price              : num  328 328 328 328 328 ...
##  $ Product_Status             : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ shipping_date_DateOrders   : chr  "02/03/2018 22:56" "1/18/2018 12:27" "1/17/2018 12:06" "1/16/2018 11:45" ...
##  $ Shipping_Mode              : chr  "Standard Class" "Standard Class" "Standard Class" "Standard Class" ...
Delivery<-summary.factor(datacar$Late_delivery_risk)
Delivery
##     0     1 
## 81542 98977

Al mostrar la longitud o tamaño de los datos en el archivo podemos decir que tratamos con una Big Data

obs1<-length(datacar$Late_delivery_risk)
obs1
## [1] 180519

Podemos ver que el 55% del historial o del Big Data está denominado como “Entrega Tardía”. Un porcentaje alto pensando que son 98,977 casos de 180,519.

late_1<-Delivery[2]
late_1
##     1 
## 98977
late_1.percent<-percent(late_1/obs1)
late_1.percent
##     1 
## "55%"

A su vez el restante 45% tiene un tamaño de 81,542 observaciones en las que se mezclan otros estatus en el envío.

no_late_0<-Delivery[1]
no_late_0
##     0 
## 81542
no_late_0.percent<-percent(no_late_0/obs1)
no_late_0.percent
##     0 
## "45%"

A continuación se crea una variable que extraiga nuestra variable de interés y ciertos factores que el equipo a considerado como indispensable para el analisís.

Delivery_vs2<-subset(datacar,select=c(Late_delivery_risk,Order_Country,order_date_DateOrders,Order_Item_Quantity,Order_Region,shipping_date_DateOrders,Shipping_Mode,Category_Id))

3.2 Gráficos

Finalmente, integraremos los datos de tal forma que se puedan visualizar de la mejor manera, utilizando los mejores gráficos que reflejen la influecia de los factores en la variable de respuesta.

grafico1.2<-ggplot(Delivery_vs2,aes(x=Shipping_Mode,y=Order_Region,color=as.character(Late_delivery_risk),alpha=0.7)) +
  geom_jitter(width=0.1) +
  labs(x="Shipping Mode",y="Order Region", color="LDR",size="O-IQ") +
  ggtitle("OR vs SM") 
grafico1.2

grafico2<-ggplot(Delivery_vs2,aes(x=Category_Id,y=Shipping_Mode,color=as.character(Late_delivery_risk))) +
  geom_violin() +
  labs(x="Category ID",y="Shipping Mode",color="LDR") +
  ggtitle("SM vs Category ID")
grafico2

grafico3<-ggplot(Delivery_vs2,aes(x=Order_Item_Quantity,y=Shipping_Mode,color=as.character(Late_delivery_risk))) +
  geom_jitter(width=0.1) +
  labs(x="Order Item Quantity",y="Shipping Mode",color="LDR") +
  ggtitle("SM vs OIQ")
grafico3

grafico5.1<-ggplot(Delivery_vs2,aes(x=Order_Item_Quantity,y=Shipping_Mode,color=as.character(Late_delivery_risk),size=Late_delivery_risk)) +
  geom_violin() +
  labs(x="Order Item Quantity",y="Shipping Mode",color="LDR", size="LDR") +
  ggtitle("SM vs OIQ")
grafico5.1

4 Conclusión

A partir del análisis realizado con los datos recolectados construimos la siguiente serie de gráficas que nos ayudaron a detectar los puntos débiles que pueden estar causando estos retardos en las entregas. Detectamos que la mayor parte de los envíos realizados por medio de primera clase están siendo entregados tarde, sobre todo aquellos en donde la cantidad de artículos enviados es superior a 1. Así mismo, los envíos realizados por medio de segunda clase también presentan una cantidad considerable de retrasos. Por su parte, los envíos de mismo día están más equilibrados en cuanto a la relación de los envíos tardíos contra los que no, aunque tampoco es el escenario más deseable. Las entregas en clase estándar son las que menor cantidades de retrasos presentan, teniendo solo en algunas zonas ratios más altos de envíos tardíos(Este de áfrica, este de USA, norte de áfrica, sudamérica, américa central , sudeste de asia y sur de europa).

Con base en la conclusión provista, la recomendación principal para generar una mejora en los envíos con retraso, sería en primer plano mejorar la logística en las líneas de envio para primera clase, ya que en comparación a los otros medios de envío la primera clase es casi en su totalidad la responsable de la mayoría de retrasos. En segundo plano, se podría evaluar que es lo que genera la efectividad del envío estándar para así poder aplicarlo en los paquetes retrasados en primera, segunda y mismo día. Finalmente, como tercer plano, se podría disminuir la cantidad de paquetes por modo de envío para poder ofrecer mejor servicio y no sobresaturar la logística para que lleguen a tiempo.