Identificar los factores en la cadena de suministro que puedan definir el retraso en la entrega
Estas son las librerías a usar: library(readxl) library(writexl) library(ggcorrplot) library(ggplot2) library(foreign) library(scales)
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))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.2grafico2<-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")
grafico2grafico3<-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")
grafico3grafico5.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.1A 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.