Una empresa metalmecánica produce un producto.
La empresa no tiene inventario de ese producto, sino que se produce
cuando llega la orden de compra.
Es lunes a primera hora y un asesor comercial pregunta el tiempo en el que se le puede entregar a un cliente una pieza después de montada la orden de compra.
El área de producción lleva un registro detallado de cuánto se han demorado históricamente para producir esta pieza (en horas).
Se solicita definir una fecha de entrega estimada teniendo en cuenta los registros históricos.
Fecha actual: 25 de junio de 2025
Datos históricos (horas):
23.39, 6.12, 16.35, 20.41, 9.67, 22.57, 5.37, 18.58, 18.24, 15.05,
7.62, 65.06, 33.48, 16.38, 18.23, 14.43, 4.03, 23.61, 22.69, 5.73,
17.61, 40.39, 21.55, 26.42, 11.7, 18.83, 13.86, 28.83, 21.8,
34.58,
20.33, 18.25, 23.7, 45.54, 28.22, 10.71, 18.6, 19.51, 13.01,
34.86,
18.37, 24.45, 15.67, 17.12, 65.23, 20.3, 5.64, 15.07, 15.46,
16.05,
16.41, 6.49, 16.93, 17.88, 18.55, 15.3, 14.73, 11.04, 10.78, 5.44
library(ggplot2)
library(dplyr)
library(tibble)
library(psych)
tiempos <- c(
23.39, 6.12, 16.35, 20.41, 9.67, 22.57,
5.37, 18.58, 18.24, 15.05, 7.62, 65.06,
33.48, 16.38, 18.23, 14.43, 4.03, 23.61,
22.69, 5.73, 17.61, 40.39, 21.55, 26.42,
11.7, 18.83, 13.86, 28.83, 21.8, 34.58,
20.33, 18.25, 23.7, 45.54, 28.22, 10.71,
18.6, 19.51, 13.01, 34.86, 18.37, 24.45,
15.67, 17.12, 65.23, 20.3, 5.64, 15.07,
15.46, 16.05, 16.41, 6.49, 16.93, 17.88,
18.55, 15.3, 14.73, 11.04, 10.78, 5.44
)
promedio <- mean(tiempos)
desviacion <- sd(tiempos)
cat("Promedio:", round(promedio, 2), "\n")
## Promedio: 19.7
cat("Desviación estándar:", round(desviacion, 2), "\n")
## Desviación estándar: 11.95
Un tibble es una estructura de datos tabular (filas y columnas) como un data.frame, pero con mejoras de legibilidad y compatibilidad con el tidyverse.
En ggplot2, la función aes() (de aesthetics) define qué variables del conjunto de datos se asignan a los ejes y a los elementos visuales del gráfico.
par(mfrow = c(1, 2))
# Histograma
hist(tiempos, breaks = 15, col = "gray", border = "black",
main = "Histograma del \ntiempo de producción",
xlab = "Horas", ylab = "Frecuencia")
# Boxplot
boxplot(tiempos, col = "gray", main = "Boxplot del \ntiempo de producción")
q1 <- quantile(tiempos, 0.25)
q2 <- median(tiempos)
q3 <- quantile(tiempos, 0.75)
iqr <- q3 - q1
minimo <- min(tiempos)
maximo <- max(tiempos)
rango <- maximo - minimo
cv <- (desviacion / promedio) * 100
deciles <- quantile(tiempos, probs = seq(0.1, 0.9, by = 0.1))
tabla_estadisticas <- tibble(
Estadística = c("Mínimo", "Máximo", "Rango", "Q1", "Mediana", "Q3",
"Rango Intercuartil", "Promedio", "Desviación Estándar",
"Coeficiente de Variación", paste0("D", 1:9, " (", seq(10,90,10), "%)")),
Valor = c(minimo, maximo, rango, q1, q2, q3, iqr, promedio, desviacion, cv, as.numeric(deciles))
)
tabla_estadisticas
## # A tibble: 19 × 2
## Estadística Valor
## <chr> <dbl>
## 1 Mínimo 4.03
## 2 Máximo 65.2
## 3 Rango 61.2
## 4 Q1 14.3
## 5 Mediana 18.1
## 6 Q3 22.6
## 7 Rango Intercuartil 8.31
## 8 Promedio 19.7
## 9 Desviación Estándar 11.9
## 10 Coeficiente de Variación 60.6
## 11 D1 (10%) 6.45
## 12 D2 (20%) 11.6
## 13 D3 (30%) 15.1
## 14 D4 (40%) 16.4
## 15 D5 (50%) 18.1
## 16 D6 (60%) 18.6
## 17 D7 (70%) 20.8
## 18 D8 (80%) 23.6
## 19 D9 (90%) 33.6
Supuesto: hoy es miércoles 25 de junio de 2025.
# Basado en promedio
horas_estimadas <- mean(tiempos)
dias_laborales <- ceiling(horas_estimadas / 8)
fecha_inicio <- as.Date("2025-06-25")
fecha_entrega <- fecha_inicio + dias_laborales
fecha_entrega
## [1] "2025-06-28"
Estimación conservadora (promedio + 1 desviación estándar):
horas_conservadoras <- mean(tiempos) + sd(tiempos)
dias_laborales_conservador <- ceiling(horas_conservadoras / 8)
fecha_entrega_conservadora <- fecha_inicio + dias_laborales_conservador
fecha_entrega_conservadora
## [1] "2025-06-29"
Según el promedio histórico (cercano a 19.7 horas), la entrega sería en 3 días hábiles (28 de junio de 2025).
Si se adopta una estimación conservadora (cercano a 33.2 horas), la entrega sería en 4 días hábiles (29 de junio de 2025).