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 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. (Pulido, De la Vara Salazar, González, Martı́nez, & Pérez, 2012)
Los datos obtenidos se muestran en la siguiente tabla:
| 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 |
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 influyen 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 signifi cativa, analice con detalle la más importante e interprete en términos físicos.
¿Qué tratamiento minimiza Y1?
Ahora investigue qué efectos infl uyen 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("dataset1.txt",header = TRUE)
str(datos)
## 'data.frame': 32 obs. of 6 variables:
## $ F_A: int -1 1 -1 1 -1 1 -1 1 -1 1 ...
## $ F_B: int -1 -1 1 1 -1 -1 1 1 -1 -1 ...
## $ F_C: int -1 -1 -1 -1 1 1 1 1 -1 -1 ...
## $ F_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)
| F_A | F_B | F_C | F_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 |
Si se continua de esta forma, se estaría ignorando el tiempo en tomar o colocar los componentes en donde no da tan buen desempeño en esos tratamientos, omitiríamos información importante y tomaríamos una decisión riesgosa.
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 elproceso, como en el (–1, –1, +1, +1) tenemos 0 errores con un tiempoestimado pero en otras corridas se podría encontrar un mejor resultado conpocos errores pero con mejor tiempo de trabajo.
modelo=aov(Y1~(F_A*F_B*F_C*F_D))
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## F_A 1 8613 8613 62.260 6.63e-07 ***
## F_B 1 1263 1263 9.126 0.008117 **
## F_C 1 11820 11820 85.436 8.12e-08 ***
## F_D 1 11666 11666 84.328 8.87e-08 ***
## F_A:F_B 1 332 332 2.396 0.141163
## F_A:F_C 1 3549 3549 25.654 0.000115 ***
## F_B:F_C 1 332 332 2.396 0.141163
## F_A:F_D 1 205 205 1.482 0.241106
## F_B:F_D 1 428 428 3.092 0.097779 .
## F_C:F_D 1 306 306 2.214 0.156214
## F_A:F_B:F_C 1 69 69 0.499 0.490107
## F_A:F_B:F_D 1 69 69 0.499 0.490107
## F_A:F_C:F_D 1 9 9 0.065 0.801591
## F_B:F_C:F_D 1 158 158 1.139 0.301766
## F_A:F_B:F_C:F_D 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~(F_B+F_D+F_A*F_C))
Como se puede apreciar, influyen 4 factores, los efectos significativos que influyen son \(a,b,c,d,ac\)
anova=aov(modelo1)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## F_B 1 1263 1263 7.923 0.00918 **
## F_D 1 11666 11666 73.212 4.90e-09 ***
## F_A 1 8613 8613 54.053 8.30e-08 ***
## F_C 1 11820 11820 74.174 4.32e-09 ***
## F_A:F_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
En vista de lo anterior, se puede decir que el mejor anova es de orden de interacción 2 y se excluyeron los factores que no son significativos.
library(FrF2)
experimento = FrF2(nruns = 16, nfactors = 4, factor.names = list(F_A=c(-1,1), F_B=c(-1,1), F_C=c(-1,1), F_D=c(-1,1) ),replications = 2,randomize = FALSE)
## creating full factorial with 16 runs ...
experimento_respuesta=add.response(design=experimento,response = Y1)
grafica_efectos_principales=MEPlot(experimento_respuesta, main= "Gráfica de Efectos Individuales")
grafica_interacciones=IAPlot(experimento_respuesta,main="Gráfica de Interacciones")
En base a todo lo anterior se aprecia que la única interacción significativa que hay es AC. Si se observa la gráfica de interacciones, se vera 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.
Los factores \(A, B, C, D\) son significativos para la variable de respuestaes, es necesario trabajar con los niveles de todos.
El factor A y B será necesario trabajarlos con nivel BAJO y factor C y D se trabajan con nivel ALTO para lograr minimizar la variable derespuesta. (-1, -1, 1, 1), los tratamientos que minimizan a y1 son los tratamientos a y b.
modelo=aov(Y2~(F_A*F_B*F_C*F_D))
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## F_A 1 472.8 472.8 12.942 0.00241 **
## F_B 1 3.8 3.8 0.104 0.75183
## F_C 1 294.0 294.0 8.049 0.01190 *
## F_D 1 247.5 247.5 6.776 0.01922 *
## F_A:F_B 1 19.5 19.5 0.535 0.47523
## F_A:F_C 1 26.3 26.3 0.719 0.40885
## F_B:F_C 1 81.3 81.3 2.225 0.15525
## F_A:F_D 1 2.5 2.5 0.069 0.79573
## F_B:F_D 1 81.3 81.3 2.225 0.15525
## F_C:F_D 1 7.0 7.0 0.192 0.66673
## F_A:F_B:F_C 1 26.3 26.3 0.719 0.40885
## F_A:F_B:F_D 1 2.5 2.5 0.069 0.79573
## F_A:F_C:F_D 1 0.8 0.8 0.021 0.88556
## F_B:F_C:F_D 1 16.5 16.5 0.453 0.51074
## F_A:F_B:F_C:F_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
En base a todo lo anterior, se puede apreciar que los factores A, C y D sonsignificativos.Y el que tiene mayor nivel de significancia es el factor A (Velocidadde cam).
library(FrF2)
experimento = FrF2(nruns = 16, nfactors = 4, factor.names = list(F_A=c(-1,1), F_B=c(-1,1), F_C=c(-1,1), F_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")
A fin de minimizar la variable 2 de respuesta se observa que el factor A debe tener nivel ALTO, dado que el factor B no es significativo no se tendrá encuenta, el factor C se trabajará con nivel BAJO y finalmente el factor D con nivel ALTO \(1,-1,1\)
Para Y1 \(A,B,C,D ≥ -,-,+,+\) Para Y2 \(A,B,C,D ≥ +,+,-,+\)
Los niveles a,c, difieren en ambas variables de respuesta, dado que se desea minimizarlos errores fallidos, tomamos los niveles que aumentan la combinación para dichavariable. Puesto 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.
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 |
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 R2 nos indica la capacidad que poseen los datos de ajustarse para predecir la variable de respuesta, osea que a mayor valor, mayor será dicha capacidad. De esto se concluye dado que, Y1 posee un R2 de 99% que los datos de este modelo se ajustan mejor, por ello, tiene un mejor modelo. Los coeficientes tanto de y1 y y2 explican toda la variabilidad de los datos. aunque lo explica mas y1
Prueba de shapiro-wilk:
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))
Dado que \(P<0.05\), se rechaza la hipotesis nula y se comprueba que los residuos no cuentan con normaildad, y se concluye que que existen datos atípicos, para el modelo propuesto, lo que provoca que el modelo no sea el adecuado para explicar el número de fallas respeto al tiempo para colocar los componentes.
Prueba de barlet:
homocedasticidad=bartlett.test(resid(modelo),F_A,F_B,F_C,F_D,data=experimento_respuesta)
print(homocedasticidad)
##
## Bartlett test of homogeneity of variances
##
## data: resid(modelo) and F_A
## Bartlett's K-squared = 2.0788, df = 1, p-value = 0.1494
Los residuales son homocedásticos para los factores. No cuentan con normalidad y sus varianza son constante.
En base a lo anterior se puede concluir que el modelo de regresión no sirve en este caso.