La base corresponde a un conjunto de 100 registros de
operaciones logísticas.
Las variables disponibles son:
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(tidyr)
datos <- read.csv("datos_negocios_extra_5_logistica.csv")
dim(datos) # Número de filas y columnas
## [1] 100 4
names(datos) # Nombres de las variables
## [1] "Ruta" "KM_Recorridos" "Tiempo_Entrega_Horas"
## [4] "Costos_Operativos"
str(datos) # Tipos de datos
## 'data.frame': 100 obs. of 4 variables:
## $ Ruta : chr "Ruta Sur" "Ruta Norte" "Ruta Sur" "Ruta Oeste" ...
## $ KM_Recorridos : int 1796 4856 2909 3643 4753 4354 3956 2001 2962 1990 ...
## $ Tiempo_Entrega_Horas: num 17.2 29.8 13.3 12.7 23.1 1.1 46.8 45.5 10.2 32.7 ...
## $ Costos_Operativos : num 17459 9828 11964 18626 12812 ...
head(datos) # Primeras filas
## Ruta KM_Recorridos Tiempo_Entrega_Horas Costos_Operativos
## 1 Ruta Sur 1796 17.2 17458.55
## 2 Ruta Norte 4856 29.8 9828.49
## 3 Ruta Sur 2909 13.3 11964.23
## 4 Ruta Oeste 3643 12.7 18625.55
## 5 Ruta Este 4753 23.1 12811.67
## 6 Ruta Oeste 4354 1.1 19844.28
summary(select(datos, KM_Recorridos, Tiempo_Entrega_Horas, Costos_Operativos))
## KM_Recorridos Tiempo_Entrega_Horas Costos_Operativos
## Min. : 166 Min. : 1.10 Min. : 1009
## 1st Qu.:1471 1st Qu.:13.07 1st Qu.: 5189
## Median :2729 Median :25.90 Median :10408
## Mean :2576 Mean :25.54 Mean :11049
## 3rd Qu.:3551 3rd Qu.:39.67 3rd Qu.:16304
## Max. :4948 Max. :47.60 Max. :19844
ggplot(datos, aes(x = KM_Recorridos)) +
geom_histogram(fill="steelblue", bins=10) +
labs(title="Distribución de KM Recorridos")
ggplot(datos, aes(x = Tiempo_Entrega_Horas)) +
geom_histogram(fill="purple", bins=10) +
labs(title="Distribución de Tiempo de Entrega (Horas)")
ggplot(datos, aes(x = Costos_Operativos)) +
geom_histogram(fill="tomato", bins=10) +
labs(title="Distribución de Costos Operativos")
ggplot(datos, aes(y = KM_Recorridos)) + geom_boxplot(fill="steelblue") + labs(title="Boxplot KM Recorridos")
ggplot(datos, aes(y = Tiempo_Entrega_Horas)) + geom_boxplot(fill="purple") + labs(title="Boxplot Tiempo Entrega")
ggplot(datos, aes(y = Costos_Operativos)) + geom_boxplot(fill="tomato") + labs(title="Boxplot Costos Operativos")
table(datos$Ruta)
##
## Ruta Este Ruta Norte Ruta Oeste Ruta Sur
## 20 21 30 29
ggplot(datos, aes(x = Ruta)) +
geom_bar(fill="orange") +
labs(title="Frecuencia de Rutas")
colSums(is.na(datos))
## Ruta KM_Recorridos Tiempo_Entrega_Horas
## 0 0 0
## Costos_Operativos
## 0
N <- nrow(datos)
mu_hat <- mean(datos$Costos_Operativos)
s <- sd(datos$Costos_Operativos)
n <- 30 # tamaño muestral
SE <- (s/sqrt(n)) * sqrt((N-n)/(N-1)) # con corrección poblacional finita
mu_hat; s; SE
## [1] 11048.7
## [1] 5736.227
## [1] 880.6374
# P(X̄ > c)
c <- 15000
1 - pnorm(c, mean = mu_hat, sd = SE)
## [1] 3.614035e-06
# P(a < X̄ < b)
a <- 12000; b <- 16000
pnorm(b, mean = mu_hat, sd = SE) - pnorm(a, mean = mu_hat, sd = SE)
## [1] 0.1400185
datos <- datos %>% mutate(Entrega_Lenta = ifelse(Tiempo_Entrega_Horas > 20, 1, 0))
p_hat <- mean(datos$Entrega_Lenta)
n <- 30
SE_p <- sqrt((p_hat*(1-p_hat)/n) * (N-n)/(N-1))
p_hat; SE_p
## [1] 0.61
## [1] 0.07488038
# P( p̂ > 0.5 )
1 - pnorm(0.5, mean = p_hat, sd = SE_p)
## [1] 0.9290849
# P(0.2 < p̂ < 0.4)
pnorm(0.4, mean = p_hat, sd = SE_p) - pnorm(0.2, mean = p_hat, sd = SE_p)
## [1] 0.002519923
La base contiene 100 observaciones y 4 variables relevantes.
Existen diferencias en las rutas en términos de kilómetros, tiempos y costos.
Se detectan algunos valores atípicos, sobre todo en costos operativos.
La probabilidad de que el costo promedio de una muestra de 30 casos supere $15.000 es relativamente baja.
En el caso de tiempos de entrega, la proporción de entregas > 20 horas puede estimarse y usarse como indicador de eficiencia operativa.