Análisis de resultados

Author

Jennifer Calderón



Una vez realizado un modelo de simulalción con cuatro escenarios de prodicción (1 operador hasta 4 operadores), se registran las unidades producidas en 8 horas determinar si existe diferencia significativa entre los escenarios planteados

library(readxl)
data_15 <- read_excel("data_15.xlsx")
View(data_15)
summary(data_15)
      CORR         PTERMINADO     OPERADORES       
 Min.   :  1.0   Min.   :452.0   Length:400        
 1st Qu.:100.8   1st Qu.:637.5   Class :character  
 Median :200.5   Median :747.0   Mode  :character  
 Mean   :200.5   Mean   :706.3                     
 3rd Qu.:300.2   3rd Qu.:813.0                     
 Max.   :400.0   Max.   :852.0                     

Visualización Inicial

boxplot(data_15$PTERMINADO ~ data_15$OPERADORES,
        main = "Distribución de PTERMINADO por OPERADORES",
        xlab = "Operadores",
        ylab = "P Terminado",
        col = "lightblue")

Verificación de Supuestos

1. Normalidad

La prueba de Kolmogorov-Smirnov (Lilliefors) evalúa:

\[H_0: \text{Los datos provienen de una distribución normal}\] \[H_1: \text{Los datos no provienen de una distribución normal}\]

El estadístico de prueba es:

\[D = \sup_x |F_n(x) - F_0(x)|\]

donde \(F_n(x)\) es la función de distribución empírica y \(F_0(x)\) es la función de distribución normal teórica.

library(nortest)
Warning: package 'nortest' was built under R version 4.5.2
# Grupo 1T
data1 <- data_15[data_15$OPERADORES == "1T", ]
lillie.test(data1$PTERMINADO)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  data1$PTERMINADO
D = 0.062847, p-value = 0.4292
# p_valor es 0.42 por tanto es > alpha. No se rechaza H0 (hay normalidad)

# Grupo 2T
data2 <- data_15[data_15$OPERADORES == "2T", ]
lillie.test(data2$PTERMINADO)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  data2$PTERMINADO
D = 0.051383, p-value = 0.7438
# p_valor es 0.74 por tanto es > alpha. No se rechaza H0 (hay normalidad)

# Grupo 3T
data3 <- data_15[data_15$OPERADORES == "3T", ]
lillie.test(data3$PTERMINADO)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  data3$PTERMINADO
D = 0.05953, p-value = 0.5177
# p_valor es 0.51 por tanto es > alpha. No se rechaza H0 (hay normalidad)

# Grupo 4T
data4 <- data_15[data_15$OPERADORES == "4T", ]
lillie.test(data4$PTERMINADO)

    Lilliefors (Kolmogorov-Smirnov) normality test

data:  data4$PTERMINADO
D = 0.070594, p-value = 0.2544
# p_valor es 0.25 por tanto es > alpha. No se rechaza H0 (hay normalidad)

2. Linealidad

El modelo lineal se expresa como:

\[Y_i = \beta_0 + \beta_1 X_i + \epsilon_i\]

donde \(\epsilon_i \sim N(0, \sigma^2)\)

Los residuos estudentizados se calculan como:

\[r_i = \frac{e_i}{s_{(i)}\sqrt{1-h_{ii}}}\]

ModeloLineal <- lm(PTERMINADO ~ OPERADORES, data = data_15)
standarized <- rstudent(ModeloLineal)
qqnorm(standarized, main = "Q-Q Plot de Residuos Estudentizados")
abline(0, 1, col = "red")

# Los puntos están alineados (se puede decir que hay linealidad)

3. Homogeneidad

La prueba de Levene evalúa:

\[H_0: \sigma_1^2 = \sigma_2^2 = ... = \sigma_k^2\] \[H_1: \text{Al menos dos varianzas son diferentes}\]

El estadístico de prueba es:

\[W = \frac{(N-k)}{(k-1)} \cdot \frac{\sum_{i=1}^k n_i(Z_{i.} - Z_{..})^2}{\sum_{i=1}^k \sum_{j=1}^{n_i}(Z_{ij} - Z_{i.})^2}\]

donde \(Z_{ij} = |Y_{ij} - \tilde{Y}_i|\)

library(car)
Warning: package 'car' was built under R version 4.5.2
Cargando paquete requerido: carData
Warning: package 'carData' was built under R version 4.5.2
leveneTest(PTERMINADO ~ OPERADORES, data = data_15)
Warning in leveneTest.default(y = y, group = group, ...): group coerced to
factor.
Levene's Test for Homogeneity of Variance (center = median)
       Df F value    Pr(>F)    
group   3   16.86 2.515e-10 ***
      396                      
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# P VALOR < alpha, SE RECHAZA Ho. (No hay homogeneidad)

Conclusión: Como no cumple con el supuesto de homogeneidad, los datos son NO PARAMÉTRICOS, por tanto se utiliza la prueba no paramétrica Kruskal-Wallis.

Prueba No Paramétrica

La prueba de Kruskal-Wallis es una alternativa no paramétrica al ANOVA de una vía.

\[H_0: \text{Las medianas de todos los grupos son iguales}\] \[H_1: \text{Al menos una mediana es diferente}\]

El estadístico de prueba es:

\[H = \frac{12}{N(N+1)} \sum_{i=1}^k \frac{R_i^2}{n_i} - 3(N+1)\]

donde:

  • \(N\) = número total de observaciones
  • \(k\) = número de grupos
  • \(R_i\) = suma de rangos del grupo \(i\)
  • \(n_i\) = tamaño de muestra del grupo \(i\)
kruskal.test(PTERMINADO ~ OPERADORES, data = data_15)

    Kruskal-Wallis rank sum test

data:  PTERMINADO by OPERADORES
Kruskal-Wallis chi-squared = 354.78, df = 3, p-value < 2.2e-16

4. Homocedasticidad

La prueba de Breusch-Pagan evalúa la heterocedasticidad:

\[H_0: \text{Var}(\epsilon_i) = \sigma^2 \text{ (homocedasticidad)}\] \[H_1: \text{Var}(\epsilon_i) = \sigma_i^2 \text{ (heterocedasticidad)}\]

El estadístico de prueba es:

\[LM = n \cdot R^2 \sim \chi^2_{(p-1)}\]

donde \(R^2\) es el coeficiente de determinación de la regresión auxiliar.

library(lmtest)
Warning: package 'lmtest' was built under R version 4.5.2
Cargando paquete requerido: zoo
Warning: package 'zoo' was built under R version 4.5.2

Adjuntando el paquete: 'zoo'
The following objects are masked from 'package:base':

    as.Date, as.Date.numeric
bptest(ModeloLineal)

    studentized Breusch-Pagan test

data:  ModeloLineal
BP = 41.507, df = 3, p-value = 5.106e-09

Prueba ANOVA

El modelo ANOVA de una vía:

\[Y_{ij} = \mu + \tau_i + \epsilon_{ij}\]

donde:

  • \(\mu\) = media global
  • \(\tau_i\) = efecto del tratamiento \(i\)
  • \(\epsilon_{ij} \sim N(0, \sigma^2)\)

Hipótesis:

\[H_0: \mu_1 = \mu_2 = ... = \mu_k\] \[H_1: \text{Al menos una media es diferente}\]

El estadístico F se calcula como:

\[F = \frac{MS_{Entre}}{MS_{Dentro}} = \frac{SS_{Entre}/(k-1)}{SS_{Dentro}/(N-k)}\]

donde:

\[SS_{Entre} = \sum_{i=1}^k n_i(\bar{Y}_{i.} - \bar{Y}_{..})^2\]

\[SS_{Dentro} = \sum_{i=1}^k \sum_{j=1}^{n_i}(Y_{ij} - \bar{Y}_{i.})^2\]

anova <- aov(PTERMINADO ~ OPERADORES, data = data_15)
summary(anova)
             Df  Sum Sq Mean Sq F value Pr(>F)    
OPERADORES    3 6446579 2148860    7861 <2e-16 ***
Residuals   396  108247     273                   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Resumen de Resultados

# Tabla de estadísticos descriptivos por grupo
aggregate(PTERMINADO ~ OPERADORES, data = data_15, FUN = function(x) {
  c(Media = mean(x), 
    Mediana = median(x), 
    SD = sd(x),
    N = length(x))
})
  OPERADORES PTERMINADO.Media PTERMINADO.Mediana PTERMINADO.SD PTERMINADO.N
1         1T       500.070000         500.500000     20.643807   100.000000
2         2T       704.380000         703.500000     14.445145   100.000000
3         3T       799.410000         797.000000     19.361576   100.000000
4         4T       821.460000         822.000000      9.149069   100.000000

Conclusiones

Basándose en los p-valores obtenidos de las pruebas realizadas, se puede concluir sobre las diferencias entre los grupos de operadores.