Contexto: el problema

Disponemos de una recopilación de datos (Montgomery & Peck, 1982) relativos al tiempo de entrega (delTime) de máquinas expendedoras (desde que se gestiona la compra), junto con lo que vamos a entender como el número de productos demandados (n.prod) y la distancia entre el proveedor y el comprador (distance).

#install.packages("robustbase")
#library("robustbase")
data(delivery, package="robustbase")

Actividades

(A) Expectativas

Ponte en el lugar del cliente que solicita un pedido a la empresa: ¿cuáles serían tus expectativas de calidad relativas a los tiempos de entrega?

Como cliente, las expectativas de calidad deseadas con respecto a los tiempos de entrega, dependerían de la distancia a recorrer desde el lugar donde se adquiere el producto hasta la entrega del mismo a su comprador, es decir, no exigiría la misma rapidez de entrega, si el pedido se localiza dentro de España que si se localizase fuera del país.Por otro lado, también dependería de la cantidad de productos que sean transportados, pues no es lo mismo realizar un único recorrido de 30km con un elevado volumen de productos, que diversos recorridos de los mismos km pero con menos volumen de productos. Aún teniendo en consideración los casos explicados, como cliente exigiría a la empresa que el servicio ofrecido en cuanto al transporte del pedido solicitado sea de calidad y en el menor tiempo posible.

(B) Problemas

Es posible que la empresa tenga problemas para cumplir con los intereses de sus clientes. Investiga esta cuestión desde un punto de vista meramente descriptivo,a través de las cuestiones a continuación, y expresa tus conclusiones exclusivamente respondiendo a la pregunta ¿qué problemas parece tener la empresa para cumplir con las expectativas de sus clientes?

#Tabla de descriptivos
library(knitr)
tabla<- data.frame(c("Media","Varianza","M?nimo","Mediana","M?ximo"))   

for(i in 1:ncol(delivery)){       
  media <- mean(delivery[,i])
  varianza <- var(delivery[,i])
  perc <- quantile(delivery[,i],probs=c(0,0.5,1))        
  vector <- c(media,varianza,perc)    
  tabla <- cbind(tabla,vector)}
colnames(tabla)<-c("Variables",colnames(delivery))

kable(tabla,format='markdown',digits=2,padding=0)  
Variables n.prod distance delTime
Media 8.76 409.28 22.38
Varianza 47.36 105747.29 241.02
M?nimo 2.00 36.00 8.00
Mediana 7.00 330.00 18.11
M?ximo 30.00 1460.00 79.24
  • ¿Cuál suele ser el número de máquinas demandadas en cada pedido?

Calculados los descriptivos más relevantes de los datos recopilados (Montgomery & Peck) el número de máquinas demandadas habitualmente en cada pedido varía entre 8 o 9 máquinas.

  • ¿A qué distancia están los compradores?

Utilzando la misma información que en el caso anterior, la distancia habitual de los compradores de dicha empresa es de 409.28 Kilometros.

  • ¿Cuántos días suele tardar en llegar un pedido?

Al rededor de 22 días, desde que la compra de máquinas es gestionada.

  • ¿Qué relación existe entre los tiempos de entrega y el volumen de los pedidos?
tiemvol<-data.frame(delivery[c(1,3)])
cor(tiemvol)
##            n.prod   delTime
## n.prod  1.0000000 0.9646146
## delTime 0.9646146 1.0000000
#Grafico representativo de la relacion entre entregas y volumen.
#install.packages("corrplot")
library(corrplot)
## corrplot 0.84 loaded
corrplot(cor(tiemvol), order = "hclust", tl.col='blue', tl.cex=1)

La correlación entre el tiempo de entrega de un pedido y el volumen del mismo es de 0.96,es decir, existe una fuerte relación positiva entre ambas. Esto indica que, a mayor cantidad o volumen de maquinas, la entrega del pedido, tardará más días en llegar a su cliente.

  • ¿Qué relación existe entre los tiempos de entrega de los pedidos y la distancia al proveedor?
tiemdist<-data.frame(delivery[c(2,3)])
cor(tiemdist)
##           distance   delTime
## distance 1.0000000 0.8916701
## delTime  0.8916701 1.0000000
#Grafico representativo de la relacion entre entregas y distancia.

corrplot(cor(tiemdist), order = "hclust", tl.col='blue', tl.cex=1.2)

La correlación entre la distancia existente entre el proveedor y el comprador, y el tiempo de entrega de los pedidos es de 0.89,lo que significa que, a mayor distancia, mayor seran los días de espera hasta que el pedido llegue al cliente.

  • ¿Qué relación existe entre el volumen de los pedidos y la distancia al proveedor
voldist<-data.frame(delivery[c(1,2)])

cor(voldist)
##            n.prod distance
## n.prod   1.000000 0.824215
## distance 0.824215 1.000000
#Grafico representativo de la relacion entre entregas y distancia.
corrplot(cor(voldist), order = "hclust", tl.col='blue', tl.cex=1.2)

Con una correlación de 0.82, entre el volumen del pedido y la distancia entre el proveedor y el cliente, se indica que si la distancia a realizar es alta, el volumen de pedidos a transportar será mayor.

Se han recogido las carácteristicas más importantes de la empresa, donde se han observado la existencia de ciertos problemas que impiden el cumplimiento de las exigencias de sus clientes.

Si los vehículos de transporte llevan un volumen de productos elevado o por otro lado, realizan largas distancias hasta el punto de entrega, surge el primer problema, el tiempo de trayecto hasta que el cliente recibe su pedido, es bastante elevado. Esto puede generar el descontento e inconformidad de los clientes de la empresa.

(C) Tiempos

La empresa quiere mejorar su servicio a los clientes. En concreto, quiere dar a sus clientes una estimación/rango de estimación “fiable” con el número de días que tardará en recibir su pedido. Investiga este objetivo a través de las cuestiones a continuación y expresa tus conclusiones exclusivamente respondiendo a la pregunta ¿cómo vas a estimar el tiempo de entrega en el próximo pedido que reciba la empresa?

Mediante el uso de la interfaz RStudio, se ha proporcionado un modelo de redes neuronales para la variable Tiempo, con el cual, gracias al uso de la librería forecast, se obtiene una estimación del tiempo de entrega de los próximos pedidos. Generado el modelo y predicha la proxima observación, se podrá proporcionar información al próximo cliente sobre el tiempo que tardará su pedido (alrededor de 23 días)..

  • ¿Qué información del cliente podrías aprovechar para afinar la estimación del tiempo de entrega de su pedido?

Para poder ofrecerle al próximo cliente una estimación del tiempo que tardará en recibir su pedido, utilizaré el tiempo que tardaron en llegar al punto de recogida los 25 pedidos anteriores.

#install.packages("forecast")
#install.packages("nnfor")
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(nnfor)

modelo.mlp <- mlp(ts(delivery$delTime))
## Warning in preprocess(y, m, lags, keep, difforder, sel.lag, allow.det.season, :
## No inputs left in the network after pre-selection, forcing AR(1).
prediccion <- forecast(modelo.mlp,h=1)
prediccion
##    Point Forecast
## 26       23.12793
  • ¿En qué tipo de ventas la empresa tiene más información para proporcionar una estimación fiable del tiempo de entrega?

Según los datos recogidos en dicha empresa, se tiene más información de los pedidos de menos de 10 máquinas y, por tanto, la estimación de los encargos con un menor volumen de productos permitirán a la empresa, poder ofrecer a sus clientes estimaciones en los tiempos de entrega más fiables.

(D) Atendiendo un pedido

Si la empresa recibiera hoy un pedido de 5 máquinas expendedoras, utilizando el guión de preguntas/tareas a continuación, expresa tus conclusiones respondiendo exclusivamente a la pregunta ¿cuánto tiempo tardaría en llegar el pedido de 5 máquinas?

#La variable n.prod esta más linealmente asociada con la variables respuesta delTime, por lo que utilizaremos esta última para generar el modelo
modelo.lineal <- lm(delTime ~ n.prod, data=delivery)
summary(modelo.lineal)
## 
## Call:
## lm(formula = delTime ~ n.prod, data = delivery)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -7.5811 -1.8739 -0.3493  2.1807 10.6342 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    3.321      1.371   2.422   0.0237 *  
## n.prod         2.176      0.124  17.546 8.22e-15 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.181 on 23 degrees of freedom
## Multiple R-squared:  0.9305, Adjusted R-squared:  0.9275 
## F-statistic: 307.8 on 1 and 23 DF,  p-value: 8.22e-15
newdatos<-data.frame(n.prod=5)
predict(modelo.lineal,newdatos,interval="confidence",level=0.999997)
##        fit     lwr      upr
## 1 14.20161 8.33555 20.06768

El intervalo de confianza varía entre 8.33555 y 20.06768. Entre estos dos valores, se encuentra, con alta probabilidad el valor real de los días de espera hasta la llegada del pedido de 5 máquinas al cliente.

modelo.lineal1 <- lm(delTime ~ distance + n.prod, data=delivery)
summary(modelo.lineal1)
## 
## Call:
## lm(formula = delTime ~ distance + n.prod, data = delivery)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.7880 -0.6629  0.4364  1.1566  7.4197 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.341231   1.096730   2.135 0.044170 *  
## distance    0.014385   0.003613   3.981 0.000631 ***
## n.prod      1.615907   0.170735   9.464 3.25e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.259 on 22 degrees of freedom
## Multiple R-squared:  0.9596, Adjusted R-squared:  0.9559 
## F-statistic: 261.2 on 2 and 22 DF,  p-value: 4.687e-16
#Intervalo de confianza para el tiempo de entrega con distancia de 36 km y un pedido de 5 maquinas
newdatos<-data.frame(n.prod=5,distance=36)
predict(modelo.lineal1,newdatos,interval="confidence",type="response")
##        fit      lwr      upr
## 1 10.93862 8.639682 13.23756
#Intervalo de confianza para el tiempo de entrega con distancia de 1460 km y un pedido de 5 maquinas
newdatos=data.frame(n.prod=5,distance=1460)
predict(modelo.lineal1,newdatos,interval="confidence",type="response")
##        fit      lwr      upr
## 1 31.42261 22.31959 40.52564

No es posible asegurar el mismo rango de variación en el tiempo de entrega del pedido de 5 máquinas solicitado por cierto cliente, pues los dias que tarde el pedido en llegar al mismo, dependerá de la distancia que el transportista deba realizar. Por ejemplo, el rango de días propuesto para mencionado pedido, cuando se recorren 36 km de distancia, variará entre 8 y 13 días, mientras que el mismo pedido al recorrer 1460 km, variará entre 22 y 40 días.

modelo<-lm(delTime~n.prod + distance, data=delivery)
predict<-forecast(modelo,delivery)
predict
##    Point Forecast     Lo 80    Hi 80      Lo 95    Hi 95
##  1      21.708084 17.187654 26.22852 14.6126113 28.80356
##  2      10.353615  5.897439 14.80979  3.3589989 17.34823
##  3      12.079794  7.565659 16.59393  4.9942032 19.16538
##  4       9.955646  5.469040 14.44225  2.9132656 16.99803
##  5      14.194398  9.729265 18.65953  7.1857225 21.20307
##  6      18.399574 14.001703 22.79745 11.4964758 25.30267
##  7       7.155376  2.676168 11.63459  0.1246073 14.18615
##  8      16.673395 12.231760 21.11503  9.7016031 23.64519
##  9      71.820294 66.548889 77.09170 63.5460584 80.09453
## 10      19.123587 14.413300 23.83387 11.7301065 26.51707
## 11      38.092507 33.604335 42.58068 31.0476684 45.13735
## 12      21.593041 17.048358 26.13772 14.4595011 28.72658
## 13      12.472991  8.036789 16.90919  5.5097274 19.43625
## 14      18.682464 14.210622 23.15431 11.6632578 25.70167
## 15      23.328798 18.934631 27.72297 16.4315145 30.22608
## 16      29.662928 25.012786 34.31307 22.3638539 36.96200
## 17      14.913640 10.480977 19.34630  7.9559322 21.87135
## 18      15.551379 11.042330 20.06043  8.4737709 22.62899
## 19       7.706807  3.197371 12.21624  0.6285915 14.78502
## 20      40.887970 36.367779 45.40816 33.7928734 47.98307
## 21      20.514179 15.865360 25.16300 13.2171816 27.81118
## 22      56.006528 50.926321 61.08674 48.0324043 63.98065
## 23      23.357568 18.963086 27.75205 16.4597897 30.25535
## 24      24.402854 19.844007 28.96170 17.2470809 31.55863
## 25      10.962584  6.514861 15.41031  3.9812364 17.94393

No he podido encontrar una predicción de tiempo de entrega inferior a 5 días, debido a que las distancias a recorrer son elevadas y no sería posible llevar a cabo la repartición en tan pocos días, sinembargo, si he encontrado predicciones inferiores a 10 días, como sería el caso de la observación 7, se proporciona un rango de variación entre 2 y 11 días.

Por lo tanto, para un pedido de 5 máquinas, se estima un total de 14 días aproximados hasta la llegada de las máquinas al cliente. Aunque el pedido podría adelantar o atrasar su llegada unos días, ya que el valor real variará entre los 8 y 20 días.

(E) Conclusiones

Concluye, en base a todo el análisis que has realizado, respondiendo la pregunta: ¿cuáles son los problemas más relevantes que has detectado y que afectan a la satisfacción de los clientes y en consecuencia a la imagen y fiabilidad de la empresa?

Han sido detectadas ciertas cuestiones que podrían generar una inconformidad en los clientes de la empresa, con respecto al servicio de transporte ofrecido por la misma, y que, como consecuencia, defraudarían sus expectativas.

El tiempo que tarda el producto en llegar a manos del comprador, es elevado, lo que podría provocar la perdida de la clientela de la empresa como consecuencia, del descontento que implica al cliente, no recibir su producto en el menor tiempo posible.

Además, la empresa hasta día de hoy, no ha proporcionado un rango de variación de los días que tardará el pedido en llegar a los clientes, lo que avivará la incertidumbre de los mismos y por lo tanto, una insatisfacción con el servicio ofrecido.

(F) Soluciones

En base a los problemas que has detectado en tu análisis y a principios básicos de optimización, qué soluciones/medidas de mejora le propondrías a la empresa para aliviarlos o eliminarlos.

Poder dar a los clientes un rango de días entre los que llegarán sus pedidos con la mayor precisión posible, evitando así problemas de insatisfación e incertidumbre de los mismos.

A su vez, reducir el tiempo de envio, de tal manera que los vehículos transporten menos cantidad de pedidos y por tanto, recorrerán menos distancia y se reducirá el tiempo de espera de los clientes. Para ello, podría ser conveniente la ampliación de vehículos de transporte disponibles para empresa.

Con estos dos cambios, podría ponerse solución a los problemas detectados mediante el análisis realizado anteriormente, logrando una mejora en la imagen, fiabilidad y seguridad de la empresa frente a sus clientes.+

(G) Recursos

Investiga librerías en R que te faciliten el análisis de la información y mejoren la forma de mostrar los resultados. Responde brevemente a la pregunta ¿qué librerías/funciones destacables has encontrado/utilizado, y cuáles son sus funcionalidades más relevantes?

Las librerías utilizadas han sido las mostradas a continuación:

knitr: Permite realizar una tabla con los descriptivos deseados que embellece el documento generado por R Markdown.

corrplot: Permite gráficar la matriz de correlaciones donde se podrá ver la relación existente entre las variables existentes en un estudio.

forecast: Permite predecir nuevas observaciones de futuros pedidos. nnfor: Genera un modelo automático de series temporales con redes neuronales.