En una empresa de electrónica, una máquina toma componentes que le proporciona un alimentador para montarlos o depo sitarlos en una tarjeta. Se ha tenido el problema de que la máquina falla en sus intentos por tomar el componente, lo cual causa paros de la máquina que detienen el proceso hasta que el operador se da cuenta y reinicia el proceso. Para diagnosticar mejor la situación, se decide correr un diseño de experimentos \(24\) con \(n = 2\) réplicas, en el que se tienen los siguientes facto res y niveles \((–, +)\), respectivamente: A) Velocidad de cam \((70%, 100%)\), B) Velocidad de mesa (media, alta), C) Orden o secuencia de colocación (continua, variable), D) Alimentador \((1, 2)\). Como el pro ceso es muy rápido, es necesario dejarlo operar en cada condición experimental el tiempo sufi ciente para reproducir el problema. Se consideró que esto se lograba con sufi ciente confi anza con 500 com ponentes; por ello, cada una de las corridas experimentales consis tió en colocar 500 componentes, y se midieron dos variables de res puesta: \(Y1\) = número de errores (o intentos fallidos), y \(Y2\) = tiempo real (en segundos) para tomar y “colocar” los 500 componentes. Es evidente que se quieren minimizar ambas variables. Los datos obte nidos se muestran en la siguiente tabla.(Pulido & Vara Salazar, 2012)
Replica | 1 | Replica | 2 | ||||
---|---|---|---|---|---|---|---|
Factor A | Factor B | Factor C | Factor D | y1 | y2 | y3 | y4 |
-1 | -1 | -1 | -1 | 61 | 88 | 50 | 79 |
+1 | -1 | -1 | -1 | 105 | 78 | 98 | 74 |
-1 | +1 | -1 | -1 | 61 | 82 | 40 | 82 |
+1 | +1 | -1 | -1 | 104 | 73 | 145 | 79 |
-1 | -1 | +1 | -1 | 0 | 88 | 35 | 100 |
+1 | -1 | +1 | -1 | 35 | 84 | 22 | 82 |
-1 | +1 | +1 | -1 | 50 | 89 | 37 | 88 |
+1 | +1 | +1 | -1 | 57 | 79 | 71 | 81 |
-1 | -1 | -1 | +1 | 12 | 77 | 19 | 75 |
+1 | -1 | -1 | +1 | 60 | 66 | 57 | 64 |
-1 | +1 | -1 | +1 | 9 | 84 | 19 | 73 |
+1 | +1 | -1 | +1 | 72 | 93 | 61 | 66 |
-1 | -1 | +1 | +1 | 0 | 86 | 0 | 82 |
+1 | -1 | +1 | +1 | 10 | 76 | 1 | 77 |
-1 | +1 | +1 | +1 | 3 | 84 | 7 | 86 |
+1 | +1 | +1 | +1 | 15 | 75 | 15 | 73 |
Al observar los datos obtenidos, se deduce que hay algunos tratamientos que tienen pocos o ningún componente caídos, como por ejemplo el (–1, –1, +1, +1); alguien muy “práctico” decidiría poner la máquina a operar bajo estas condiciones y olvidarse del análisis estadístico. De proceder así, explique qué información se perdería.
Investigue qué efectos infl uyen de manera significativa sobre Y1 (apóyese en Pareto y ANOVA).
Obtenga el mejor ANOVA.
Si en el análisis anterior encuentra alguna interacción significativa, analice con detalle la más importante e interprete en términos físicos.
¿Qué tratamiento minimiza Y1?
Ahora investigue qué efectos influyen de manera relevante sobre Y2.
¿Qué tratamiento minimiza Y2?
Encuentre una condición satisfactoria tanto para minimizar Y1 como Y2.
De los análisis de varianza para Y1 y Y2 observe el coefi ciente R2. ¿Qué concluye de ello?
Verifique residuos.
library(printr)
library(FrF2)
datos=read.table("dataset.txt",header = TRUE)
str(datos)
## 'data.frame': 32 obs. of 6 variables:
## $ Factor_A: int -1 1 -1 1 -1 1 -1 1 -1 1 ...
## $ Factor_B: int -1 -1 1 1 -1 -1 1 1 -1 -1 ...
## $ Factor_C: int -1 -1 -1 -1 1 1 1 1 -1 -1 ...
## $ Factor_D: int -1 -1 -1 -1 -1 -1 -1 -1 1 1 ...
## $ Y1 : int 61 105 61 104 0 35 50 57 12 60 ...
## $ Y2 : int 88 78 82 73 88 84 89 79 77 66 ...
attach(datos)
head(datos, n=32L)
Factor_A | Factor_B | Factor_C | Factor_D | Y1 | Y2 |
---|---|---|---|---|---|
-1 | -1 | -1 | -1 | 61 | 88 |
1 | -1 | -1 | -1 | 105 | 78 |
-1 | 1 | -1 | -1 | 61 | 82 |
1 | 1 | -1 | -1 | 104 | 73 |
-1 | -1 | 1 | -1 | 0 | 88 |
1 | -1 | 1 | -1 | 35 | 84 |
-1 | 1 | 1 | -1 | 50 | 89 |
1 | 1 | 1 | -1 | 57 | 79 |
-1 | -1 | -1 | 1 | 12 | 77 |
1 | -1 | -1 | 1 | 60 | 66 |
-1 | 1 | -1 | 1 | 9 | 84 |
1 | 1 | -1 | 1 | 72 | 93 |
-1 | -1 | 1 | 1 | 0 | 86 |
1 | -1 | 1 | 1 | 10 | 76 |
-1 | 1 | 1 | 1 | 3 | 84 |
1 | 1 | 1 | 1 | 15 | 75 |
-1 | -1 | -1 | -1 | 50 | 79 |
1 | -1 | -1 | -1 | 98 | 74 |
-1 | 1 | -1 | -1 | 40 | 82 |
1 | 1 | -1 | -1 | 145 | 79 |
-1 | -1 | 1 | -1 | 35 | 100 |
1 | -1 | 1 | -1 | 22 | 82 |
-1 | 1 | 1 | -1 | 37 | 88 |
1 | 1 | 1 | -1 | 71 | 81 |
-1 | -1 | -1 | 1 | 19 | 75 |
1 | -1 | -1 | 1 | 57 | 64 |
-1 | 1 | -1 | 1 | 19 | 73 |
1 | 1 | -1 | 1 | 61 | 66 |
-1 | -1 | 1 | 1 | 0 | 82 |
1 | -1 | 1 | 1 | 1 | 77 |
-1 | 1 | 1 | 1 | 7 | 86 |
1 | 1 | 1 | 1 | 15 | 73 |
Parte de la información que se perdería es encontrar un mejor método con base a las corridas distintas por lo que no habría un margen de error que nos ayude a determinar que variables influyen en elproceso, como en el (–1, –1, +1, +1) tenemos 0 errores con un tiempo estimado pero en otras corridas se podría encontrar un mejor resultado con pocos errores pero con mejor tiempo de trabajo.
modelo=aov(Y1~(Factor_A*Factor_B*Factor_C*Factor_D))
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## Factor_A 1 8613 8613 62.260 6.63e-07 ***
## Factor_B 1 1263 1263 9.126 0.008117 **
## Factor_C 1 11820 11820 85.436 8.12e-08 ***
## Factor_D 1 11666 11666 84.328 8.87e-08 ***
## Factor_A:Factor_B 1 332 332 2.396 0.141163
## Factor_A:Factor_C 1 3549 3549 25.654 0.000115 ***
## Factor_B:Factor_C 1 332 332 2.396 0.141163
## Factor_A:Factor_D 1 205 205 1.482 0.241106
## Factor_B:Factor_D 1 428 428 3.092 0.097779 .
## Factor_C:Factor_D 1 306 306 2.214 0.156214
## Factor_A:Factor_B:Factor_C 1 69 69 0.499 0.490107
## Factor_A:Factor_B:Factor_D 1 69 69 0.499 0.490107
## Factor_A:Factor_C:Factor_D 1 9 9 0.065 0.801591
## Factor_B:Factor_C:Factor_D 1 158 158 1.139 0.301766
## Factor_A:Factor_B:Factor_C:Factor_D 1 23 23 0.165 0.690267
## Residuals 16 2213 138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Se puede observar que los 4 factores influyen, estos efectos significativos son: \(A, B, C, D, AC\)
modelo1=aov(Y1~(Factor_B+Factor_D+Factor_A*Factor_C))
anova=aov(modelo1)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Factor_B 1 1263 1263 7.923 0.00918 **
## Factor_D 1 11666 11666 73.212 4.90e-09 ***
## Factor_A 1 8613 8613 54.053 8.30e-08 ***
## Factor_C 1 11820 11820 74.174 4.32e-09 ***
## Factor_A:Factor_C 1 3549 3549 22.272 7.05e-05 ***
## Residuals 26 4143 159
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Esta tabla muestra que el alimentador y el orden de colocación son menores que el valor de significancia α= 0.05, por lo cual estos factores influyen significativamente en la variable de respuesta de estudio que en este caso es el número de errores en la máquina.
library(FrF2)
experimento = FrF2(nruns = 16, nfactors = 4, factor.names = list(Factor_A=c(-1,1), Factor_B=c(-1,1), Factor_C=c(-1,1), Factor_D=c(-1,1) ),replications = 2,randomize = FALSE)
experimento_respuesta=add.response(design=experimento,response = Y1)
grafica_efectos_principales=MEPlot(experimento_respuesta, main= "Gráfica de Efectos Individuales")
Observamos que la única interacciónsignificativa que hay es AC. Posteriormente, vemos en la gráfica de interacciones que los niveles óptimos para minimizar la variable de respuesta del número de errores serán nivel ALTO de A y nivel BAJO de C.
Para minimizar el número de errores de debe trabajar la velocidad de cam en nivel bajo, la velocidad de mesa en nivel bajo, el orden en nivel alto y el alimentador en nivel alto.
modelo=aov(Y2~(Factor_A*Factor_B*Factor_C*Factor_D))
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## Factor_A 1 472.8 472.8 12.942 0.00241 **
## Factor_B 1 3.8 3.8 0.104 0.75183
## Factor_C 1 294.0 294.0 8.049 0.01190 *
## Factor_D 1 247.5 247.5 6.776 0.01922 *
## Factor_A:Factor_B 1 19.5 19.5 0.535 0.47523
## Factor_A:Factor_C 1 26.3 26.3 0.719 0.40885
## Factor_B:Factor_C 1 81.3 81.3 2.225 0.15525
## Factor_A:Factor_D 1 2.5 2.5 0.069 0.79573
## Factor_B:Factor_D 1 81.3 81.3 2.225 0.15525
## Factor_C:Factor_D 1 7.0 7.0 0.192 0.66673
## Factor_A:Factor_B:Factor_C 1 26.3 26.3 0.719 0.40885
## Factor_A:Factor_B:Factor_D 1 2.5 2.5 0.069 0.79573
## Factor_A:Factor_C:Factor_D 1 0.8 0.8 0.021 0.88556
## Factor_B:Factor_C:Factor_D 1 16.5 16.5 0.453 0.51074
## Factor_A:Factor_B:Factor_C:Factor_D 1 34.0 34.0 0.932 0.34882
## Residuals 16 584.5 36.5
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Esta tabla muestra que el para el alimentador es menor que el valor de significancia α= 0.05, por lo cual este factor influyen significativamente en la variable de respuesta de estudio que en este caso es el tiempo real.
library(FrF2)
experimento = FrF2(nruns = 16, nfactors = 4, factor.names = list(Factor_A=c(-1,1), Factor_B=c(-1,1), Factor_C=c(-1,1), Factor_D=c(-1,1) ),replications = 2,randomize = FALSE)
experimento_respuesta=add.response(design=experimento,response = Y2)
grafica_efectos_principales=MEPlot(experimento_respuesta, main= "Gráfica de Efectos Individuales")
Para minimizar el número de errores de debe trabajar la velocidad de cam en nivel alto, la velocidad de mesa en nivel bajo, el orden en nivel alto y el alimentador en nivel alto.
No es posible encontrar una condición satisfactoria para minimizar ambas variables.
#Y1
R=((8613+1263+11820+11666+3549+428)/(8613+1263+11820+11666+3549+428+138)*100)
summary(R)
Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |
---|---|---|---|---|---|
99.63177 | 99.63177 | 99.63177 | 99.63177 | 99.63177 | 99.63177 |
#Y2
R=((472.8+294+247.5)/(472.8+294+247.5+36.5)*100)
summary(R)
Min. | 1st Qu. | Median | Mean | 3rd Qu. | Max. |
---|---|---|---|---|---|
96.52646 | 96.52646 | 96.52646 | 96.52646 | 96.52646 | 96.52646 |
El valor \(R^2\) muestra el porcentaje de variación de la variable de respuesta respecto a la relación con otras variables que en este caso serían los factores, como se observa la variable número de errores posee mayor variación, esto quiere decirque cualquier cambio en los factores influye de mayor manera en ella que en el tiempo real.
Ho: Los datos provienen de una distribución normal
Ha: Los datos no provienen de una distribución normal
normalidad=shapiro.test(resid(modelo))
print(normalidad)
##
## Shapiro-Wilk normality test
##
## data: resid(modelo)
## W = 0.8854, p-value = 0.002686
Debido a que Valor-P es menor a α= 0,05 se rechaza la hipótesis nula y asumimos que no cumple el supuesto de normalidad.
qqnorm(resid(modelo),main= "Grafica de probabilidad para los residuales del modelo", xlab= "Cuantiles teoricos", ylab = "Cuantiles de muestra")
qqline(resid(modelo))