1- Planteamiento del problema

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 histórico detallado del tiempo requerido para fabricar dicha pieza.

El objetivo consiste en estimar una fecha de entrega utilizando herramientas de estadística descriptiva.

2- Cargar librerías

library(ggplot2)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tibble)
library(psych)
## 
## Adjuntando el paquete: 'psych'
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha

3- Datos históricos

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.70, 18.83, 13.86, 28.83, 21.80, 34.58,
20.33, 18.25, 23.70, 45.54, 28.22, 10.71,
18.60, 19.51, 13.01, 34.86, 18.37, 24.45,
15.67, 17.12, 65.23, 20.30, 5.64, 15.07,
15.46, 16.05, 16.41, 6.49, 16.93, 17.88,
18.55, 15.30, 14.73, 11.04, 10.78, 5.44
)

4- Medidas de tendencia central y dispersión

Inicialmente se calcula el promedio y la desviación estándar para obtener una medida de tendencia central y una medida de dispersión de los tiempos de producción.

promedio <- mean(tiempos)
desviacion <- sd(tiempos)

promedio
## [1] 19.70367
desviacion
## [1] 11.94855

5- Comparación entre el promedio y la desviación estándar

A continuación se construye un gráfico de barras para comparar visualmente el promedio y la desviación estándar de los tiempos de producción.

resumen <- tibble(
  Medida = c("Promedio", "Desviación estándar"),
  Valor = c(promedio, desviacion)
)

ggplot(resumen,
       aes(x = Medida,
           y = Valor,
           fill = Medida)) +
  geom_bar(stat = "identity",
           color = "black",
           width = 0.5) +
  geom_text(aes(label = round(Valor,2)),
            vjust = -0.5) +
  scale_fill_manual(values = c("gray70","gray40")) +
  labs(
    title = "Comparación entre el promedio y la desviación estándar",
    y = "Horas"
  ) +
  theme_minimal()

6- Distribución y dispersión de los tiempos

Para comprender mejor el comportamiento de los tiempos de producción se construyen un histograma y un diagrama de caja.

par(mfrow = c(1,2))

hist(
  tiempos,
  breaks = 15,
  col = "gray",
  border = "black",
  main = "Histograma del tiempo de producción",
  xlab = "Horas",
  ylab = "Frecuencia"
)

boxplot(
  tiempos,
  col = "gray",
  main = "Boxplot del tiempo de producción",
  ylab = "Horas"
)

7- Estadísticas descriptivas

Se calculan medidas de posición y dispersión que permiten describir la distribución de los tiempos observados.

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,0.1)
)

tabla_estadisticas <- tibble(
  Estadistica = c(
    "Minimo",
    "Maximo",
    "Rango",
    "Q1",
    "Mediana",
    "Q3",
    "Rango Intercuartil",
    "Promedio",
    "Desviacion Estandar",
    "Coeficiente de Variacion",
    paste0("D",1:9)
  ),
  Valor = c(
    minimo,
    maximo,
    rango,
    q1,
    q2,
    q3,
    iqr,
    promedio,
    desviacion,
    cv,
    as.numeric(deciles)
  )
)

tabla_estadisticas
## # A tibble: 19 × 2
##    Estadistica              Valor
##    <chr>                    <dbl>
##  1 Minimo                    4.03
##  2 Maximo                   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 Desviacion Estandar      11.9 
## 10 Coeficiente de Variacion 60.6 
## 11 D1                        6.45
## 12 D2                       11.6 
## 13 D3                       15.1 
## 14 D4                       16.4 
## 15 D5                       18.1 
## 16 D6                       18.6 
## 17 D7                       20.8 
## 18 D8                       23.6 
## 19 D9                       33.6

8- Fecha estimada basada en el promedio

Una primera aproximación consiste en utilizar el tiempo promedio histórico de producción.

fecha_inicio <- as.Date("2025-06-25")

horas_estimadas <- mean(tiempos)

dias_laborales <- ceiling(horas_estimadas/8)

fecha_entrega <- fecha_inicio + dias_laborales

fecha_entrega
## [1] "2025-06-28"

9- Fecha estimada conservadora

Una segunda aproximación utiliza el promedio más una desviación estándar.

horas_conservadoras <- mean(tiempos) + sd(tiempos)

dias_conservadores <- ceiling(horas_conservadoras/8)

fecha_entrega_conservadora <- fecha_inicio + dias_conservadores

fecha_entrega_conservadora
## [1] "2025-06-29"