En una empresa de electrónica, una máquina toma componentes que le proporciona un alimentador para montarlos o depositarlos 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 factores y niveles (–, +), respectivamente:
Como el proceso es muy rápido, es necesario dejarlo operar en cada condición experimental el tiempo suficiente para reproducir el problema. Se consideró que esto se lograba con suficiente confianza con 500 componentes; por ello, cada una de las corridas experimentales consistió en colocar 500 componentes, y se midieron dos variables de respuesta: 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 obtenidos se muestran en la siguiente tabla(Pulido & Vara Salazar, 2012).
| Replica | 1 | Replica | 2 | ||||
|---|---|---|---|---|---|---|---|
| Factor A | Factor B | Factor C | Factor D | Y1 | Y2 | Y1 | Y2 |
| -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 |
library(printr)
## Registered S3 method overwritten by 'printr':
## method from
## knit_print.data.frame rmarkdown
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 |
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
a) 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 ol vidarse del análisis estadístico. De proceder así, explique qué información se perdería.
Respuesta: Se estaría ignorando el tiempo en tomar o colocar los componentes en donde no da tan buen desempeño en esos tratamientos
De proceder de esta manera 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 el proceso, 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.
b) Investigue qué efectos influyen de manera significativa sobre Y1
Respuesta:
Los efectos que influyen mas significativamente son: a,b,c,d,ac.
modelo=aov(Y1~(Factor_B*Factor_D*Factor_A*Factor_C))
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## Factor_B 1 1263 1263 9.126 0.008117 **
## Factor_D 1 11666 11666 84.328 8.87e-08 ***
## Factor_A 1 8613 8613 62.260 6.63e-07 ***
## Factor_C 1 11820 11820 85.436 8.12e-08 ***
## Factor_B:Factor_D 1 428 428 3.092 0.097779 .
## Factor_B:Factor_A 1 332 332 2.396 0.141163
## Factor_D:Factor_A 1 205 205 1.482 0.241106
## Factor_B:Factor_C 1 332 332 2.396 0.141163
## Factor_D:Factor_C 1 306 306 2.214 0.156214
## Factor_A:Factor_C 1 3549 3549 25.654 0.000115 ***
## Factor_B:Factor_D:Factor_A 1 69 69 0.499 0.490107
## Factor_B:Factor_D:Factor_C 1 158 158 1.139 0.301766
## Factor_B:Factor_A:Factor_C 1 69 69 0.499 0.490107
## Factor_D:Factor_A:Factor_C 1 9 9 0.065 0.801591
## Factor_B:Factor_D:Factor_A:Factor_C 1 23 23 0.165 0.690267
## Residuals 16 2213 138
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo1=aov(Y1~(Factor_B+Factor_D+Factor_A*Factor_C))
c) Se obtiene el mejor ANOVA
Respuesta:
El mejor anova es el de interacción 2.
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
d) 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.
Respuesta:
Como se oberva la grafica de interacciones 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.
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= "Grafica de efectos individuales")
grafica_interacciones=IAPlot(experimento_respuesta, main= "Gráfica de interacciones")
e) ¿Qué tratamiento minimiza Y1?
Respuesta:
Ya que los cuatro factores A, B, C, D son significativos para la variable de respuesta, es necesario trabajar con los niveles de estos.Por lo que para el factor A y B se trabajara con niveles altos, mientras que C y D con niveles bajos
f) Ahora investigue qué efectos influyen de manera relevante sobre Y2.
Respuesta:
Podemos observar que los factores A, C y D son significativos. De estos, el que tiene mayor nivel de significancia es el factor A.
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
g) ¿Qué tratamiento minimiza Y2?
Respuesta:
Con el objetivo de minimizar la segunda variable de respuesta se observa que el factor A debe tener nivel ALTO, dado que el factor B no es significativo no se tendrá en cuenta, factor C se trabajará con nivel BAJO y finalmente el factor D con nivel ALTO.
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)
## creating full factorial with 16 runs ...
experimento_respuesta=add.response(design=experimento,response = Y2)
grafica_efectos_principales=MEPlot(experimento_respuesta, main= "Gráfica de Efectos Individuales")
h) Encuentre una condición satisfactoria tanto para minimizar Y1 como Y2.
Respuesta:
Dado que ambas configuraciones necesitan del factor D a nivel ALTO, podemos concluir entonces que este es su condición satisfactoria la cual se necesita para minimizar tanto Y1 como Y2.
i) De los análisis de varianza para Y1 y Y2 observe el coeficiente R2. ¿Qué concluye de ello?
Respuesta: Podemos concluir dado que, Y1 posee un R2 de 99% que los datos de este modelo se ajustan mejor, por ende, tiene un mejor modelo.
Coeficiente 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 |
Coeficiente 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 |
j) Verifique residuos.
normalidad=shapiro.test(resid(modelo))
print(normalidad)
##
## Shapiro-Wilk normality test
##
## data: resid(modelo)
## W = 0.8854, p-value = 0.002686
qqnorm(resid(modelo),main= "Grafica de probabilidad para los residuales del modelo", xlab= "Cuantiles teoricos", ylab = "Cuantiles de muestra")
qqline(resid(modelo))