1 Introducción

En el marco del proceso de elaboración de galletas, el mantenimiento oportuno de la maquinaria es un factor crítico para garantizar la continuidad operativa y minimizar los costos asociados a paradas no programadas. Actualmente, el centro de producción cuenta con un modelo de mantenimiento vigente, el cual ha sido utilizado como línea base para evaluar el desempeño del sistema.

Con el objetivo de mejorar los tiempos de respuesta ante fallas, un Data Scientist ha desarrollado un modelo de analítica prescriptiva y ha propuesto tres alternativas de mejora, basadas en distintas técnicas analíticas:

  • Árbol de decisión
  • Red neuronal
  • Regresión

Cada una de estas alternativas fue evaluada mediante 30 réplicas experimentales, al igual que el modelo actual, con el fin de contar con evidencia suficiente para su comparación estadística.

El propósito de este informe es determinar, con un nivel de significancia del 5% (α = 0.05), si existen diferencias estadísticamente significativas entre el modelo actual y las propuestas de mejora, y en caso afirmativo, identificar cuál de ellas debería implementarse para reducir de manera efectiva el tiempo de fallas de las máquinas.

2 Metodología

Para dar respuesta al objetivo planteado se siguió el siguiente procedimiento:

  1. Análisis exploratorio de los datos (estadísticas descriptivas y visualización mediante boxplot).
  2. Verificación de los supuestos de normalidad (Shapiro-Wilk) y homogeneidad de varianzas (Bartlett y Levene).
  3. Selección de la prueba de hipótesis adecuada según el cumplimiento de los supuestos: ANOVA de un factor (paramétrica) o Kruskal-Wallis (no paramétrica).
  4. En caso de encontrarse diferencias significativas, aplicación de una prueba post-hoc para identificar entre qué grupos existen dichas diferencias.
  5. Conclusión sobre cuál alternativa debería implementarse.

3 Carga de datos

arbol <- c(23.81, 22.13, 22.64, 21.69, 23.58, 22.14, 18.73, 21.59,
           20.36, 20.53, 20.11, 20.34, 19.19, 22.92, 18.65, 20.6,
           19.83, 20.09, 19.43, 22.06, 21.15, 19.26, 18.08, 20.24,
           18.75, 20.69, 21.62, 23.69, 23.93, 23.19)

redn <- c(23.24, 20.08, 18.01, 23.28, 19.23, 21.22, 21.47, 20.6,
          21.11, 21.27, 21.03, 17.34, 22.8, 21.85, 17.85, 23.15,
          19.57, 19.56, 20.79, 18.04, 20.95, 21.83, 18.17, 22.66,
          18.29, 18.89, 19.49, 19.19, 26.47, 25.25)

regresion <- c(16.13, 17.84, 18.28, 15.61, 17.62, 16.12, 17.29, 16.13,
               16.64, 15.03, 18.16, 16.82, 17.44, 16.76, 17.26, 15.55,
               17.49, 18.42, 17.54, 17.13, 15.5, 16.8, 18.47, 18.42,
               18.43, 15.56, 16.03, 15.39, 15.12, 17.77)

actual <- c(17.09, 15.77, 18.45, 16.55, 22.23, 22.11, 18.26, 18.04,
            19.66, 19.76, 18.74, 19.02, 18.54, 16.7, 17.57, 19.89,
            19.06, 18.7, 19.39, 19.68, 19.2, 16.85, 19.91, 19.82, 18.08,
            19.38, 20.3, 21.6, 23.39, 19.33)

datos <- data.frame(
  Tiempo = c(actual, arbol, redn, regresion),
  Grupo  = factor(rep(c("Actual", "Arbol", "RedNeuronal", "Regresion"), each = 30))
)

head(datos)
##   Tiempo  Grupo
## 1  17.09 Actual
## 2  15.77 Actual
## 3  18.45 Actual
## 4  16.55 Actual
## 5  22.23 Actual
## 6  22.11 Actual

4 Análisis exploratorio

agg <- aggregate(Tiempo ~ Grupo, data = datos,
                  FUN = function(x) c(n = length(x), media = mean(x),
                                       sd = sd(x), mediana = median(x)))
agg
##         Grupo  Tiempo.n Tiempo.media Tiempo.sd Tiempo.mediana
## 1      Actual 30.000000    19.102333  1.729648      19.130000
## 2       Arbol 30.000000    21.034000  1.705609      20.645000
## 3 RedNeuronal 30.000000    20.756000  2.224344      20.870000
## 4   Regresion 30.000000    16.891667  1.103312      16.975000
boxplot(Tiempo ~ Grupo, data = datos,
        col = c("gray80", "lightblue", "lightgreen", "salmon"),
        main = "Comparación de tiempos de falla por propuesta",
        ylab = "Tiempo de falla", xlab = "Modelo")

A partir de las estadísticas descriptivas y del boxplot se observa que la propuesta de Regresión presenta la media más baja de tiempo de falla, mientras que Árbol de decisión y Red Neuronal muestran medias superiores al modelo actual.

5 Verificación de supuestos (α = 0.05)

5.1 Normalidad (Shapiro-Wilk)

for (g in levels(datos$Grupo)) {
  st <- shapiro.test(datos$Tiempo[datos$Grupo == g])
  cat(sprintf("%-15s W = %.4f   p-value = %.4f\n", g, st$statistic, st$p.value))
}
## Actual          W = 0.9641   p-value = 0.3921
## Arbol           W = 0.9581   p-value = 0.2768
## RedNeuronal     W = 0.9578   p-value = 0.2723
## Regresion       W = 0.9350   p-value = 0.0668

5.2 Homogeneidad de varianzas (Bartlett)

bartlett.test(Tiempo ~ Grupo, data = datos)
## 
##  Bartlett test of homogeneity of variances
## 
## data:  Tiempo by Grupo
## Bartlett's K-squared = 13.068, df = 3, p-value = 0.004493

5.3 Homogeneidad de varianzas (Levene)

levene_test <- function(y, group) {
  group <- factor(group)
  meds <- tapply(y, group, median)
  abs_dev <- abs(y - meds[group])
  summary(aov(abs_dev ~ group))
}
levene_test(datos$Tiempo, datos$Grupo)
##              Df Sum Sq Mean Sq F value Pr(>F)  
## group         3  10.01   3.337   3.046 0.0316 *
## Residuals   116 127.11   1.096                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

6 Pruebas de hipótesis

6.1 ANOVA

modelo <- aov(Tiempo ~ Grupo, data = datos)
summary(modelo)
##              Df Sum Sq Mean Sq F value Pr(>F)    
## Grupo         3  326.4  108.81   36.07 <2e-16 ***
## Residuals   116  349.9    3.02                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

6.2 Kruskal-Wallis

kruskal.test(Tiempo ~ Grupo, data = datos)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Tiempo by Grupo
## Kruskal-Wallis chi-squared = 63.419, df = 3, p-value = 1.093e-13

6.3 Post-hoc

pairwise.wilcox.test(datos$Tiempo, datos$Grupo,
                      p.adjust.method = "bonferroni", exact = FALSE)
## 
##  Pairwise comparisons using Wilcoxon rank sum test with continuity correction 
## 
## data:  datos$Tiempo and datos$Grupo 
## 
##             Actual  Arbol   RedNeuronal
## Arbol       0.00047 -       -          
## RedNeuronal 0.04091 1.00000 -          
## Regresion   5.3e-06 3.3e-10 7.7e-09    
## 
## P value adjustment method: bonferroni

6.4 Resumen de medias ordenadas

sort(tapply(datos$Tiempo, datos$Grupo, mean))
##   Regresion      Actual RedNeuronal       Arbol 
##    16.89167    19.10233    20.75600    21.03400

7 Conclusión

Los resultados de la prueba de Bartlett y de Levene indican que no se cumple el supuesto de homogeneidad de varianzas (p < 0.05 en ambos casos), por lo cual la prueba de hipótesis más adecuada para este análisis es Kruskal-Wallis, cuyo resultado (p < 0.05) confirma que existen diferencias estadísticamente significativas entre el modelo actual y las tres propuestas evaluadas.

El análisis post-hoc de Wilcoxon con corrección de Bonferroni evidencia que:

  • Las propuestas de Árbol de decisión y Red Neuronal presentan tiempos de falla significativamente mayores que el modelo actual, por lo que su implementación empeoraría el desempeño del proceso.
  • La propuesta de Regresión presenta un tiempo de falla significativamente menor que el modelo actual y que las demás alternativas evaluadas.

En consecuencia, con un nivel de significancia del 5%, se concluye que el científico debe implementar la propuesta basada en Regresión, dado que es la única alternativa que logra reducir de manera estadísticamente significativa el tiempo de fallas de las máquinas del proceso de elaboración de galletas.