Enunciado

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

1. Cargando las librerías necesarias

library(ggplot2)
library(dplyr)
library(tibble)
library(psych)

2- Datos históricos (sin más información)

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
)

3- Cálculo del promedio y la desviación estándar

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

4- Gráfico de barras: De la media y la desviación estándar

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.

5- Distribución y dispersión

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")

6- Estadísticas descriptivas

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

7. Fecha estimada de entrega

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).