R.D Snee (“Experimentación con un número grande de variables”, en Experiments in Industry: Design , Analysis and Interpretation of Results, de R.D Snee, L.B Hare y J.B. Trout, editores, ASQC) describe un experimento en el que se usó un diseño \(2^{5-1}\) con I = ABCDE para investigar los efectos de cinco factores sobre el color de un producto químico. Los factores son A= solvente/reactivo, B = catalizador/reactivo, C=temperatura, D = pureza del reactivo y E = pH del reactivo. Los resultados obtenidos fueron los siguientes(Montgomery, 2004):
| e = -0.63 | d = 6.79 | |
| a = 2.51 | ade = 5.47 | |
| b = -2.68 | bde = 3.45 | |
| abe = 1.66 | abd = 5.68 | |
| c = 2.06 | cde = 5.22 | |
| ace = 1.22 | acd = 4.38 | |
| bce = -2.09 | bcd = 4.30 | |
| abc = 1.93 | abcde = 4.05 |
library(printr)
library(FrF2)
datos=read.table("dataset.txt", header = TRUE)
str(datos)
## 'data.frame': 16 obs. of 6 variables:
## $ Solvente : int -1 1 -1 1 -1 1 -1 1 -1 1 ...
## $ Catalizador: int -1 -1 1 1 -1 -1 1 1 -1 -1 ...
## $ Temperatura: int -1 -1 -1 -1 1 1 1 1 -1 -1 ...
## $ Pureza : int -1 -1 -1 -1 -1 -1 -1 -1 -1 1 ...
## $ PH : int 1 -1 -1 1 -1 1 1 -1 1 1 ...
## $ Datos : num -0.63 2.51 -2.68 1.66 2.06 1.22 -2.09 1.93 6.79 5.47 ...
attach(datos)
A = factor(`Solvente`)
B = factor(`Catalizador`)
C = factor(`Temperatura`)
D = factor(`Pureza`)
E = factor(`PH`)
head(datos, n=16L)
| Solvente | Catalizador | Temperatura | Pureza | PH | Datos |
|---|---|---|---|---|---|
| -1 | -1 | -1 | -1 | 1 | -0.63 |
| 1 | -1 | -1 | -1 | -1 | 2.51 |
| -1 | 1 | -1 | -1 | -1 | -2.68 |
| 1 | 1 | -1 | -1 | 1 | 1.66 |
| -1 | -1 | 1 | -1 | -1 | 2.06 |
| 1 | -1 | 1 | -1 | 1 | 1.22 |
| -1 | 1 | 1 | -1 | 1 | -2.09 |
| 1 | 1 | 1 | -1 | -1 | 1.93 |
| -1 | -1 | -1 | -1 | 1 | 6.79 |
| 1 | -1 | -1 | 1 | 1 | 5.47 |
| -1 | 1 | -1 | 1 | 1 | 3.45 |
| 1 | 1 | -1 | 1 | -1 | 5.68 |
| -1 | -1 | 1 | 1 | 1 | 5.22 |
| 1 | -1 | 1 | 1 | -1 | 4.38 |
| -1 | 1 | 1 | 1 | -1 | 4.30 |
| 1 | 1 | 1 | 1 | 1 | 4.05 |
library(FrF2)
experimento=FrF2(nruns = 16, nfactors = 5, factor.names = list(A=c(-1,1),B=c(-1,1),C=c(-1,1),D=c(-1,1),E=c(-1,1)),generators = "ABCD",replications = 1,randomize = FALSE)
experimento_respuesta=add.response(design = experimento,response = Datos)
halfnormal(experimento_respuesta, xlab = "Efectos activos")
Comentario: Como se puede observar en la gráfica los efectos activos en el diseño de experimientos solo es el factor D, pero para poder comprobar esto, se coloca lo siguiente;
DanielPlot(experimento_respuesta, main= "Gráfico de Daniel sobre factores de color")
Comentario: Ahora bien como vemos en la gráfica los datos son los mismos al analisis previamente realizado, entonces confirmamos que el factor activo es D.
modelo= aov(Datos~(A*B*C*D*E))
summary(modelo)
## Df Sum Sq Mean Sq F value Pr(>F)
## A 1 6.86 6.86 0.249 0.705
## B 1 7.18 7.18 0.261 0.699
## C 1 0.09 0.09 0.003 0.964
## D 1 49.95 49.95 1.815 0.407
## E 1 0.01 0.01 0.001 0.986
## A:B 1 12.55 12.55 0.456 0.622
## A:C 1 0.28 0.28 0.010 0.936
## B:C 1 1.96 1.96 0.071 0.834
## A:D 1 3.91 3.91 0.142 0.771
## B:D 1 1.36 1.36 0.050 0.861
## C:D 1 0.51 0.51 0.018 0.914
## A:E 1 0.00 0.00 0.000 0.996
## B:E 1 0.01 0.01 0.000 0.990
## C:E 1 2.49 2.49 0.090 0.814
## Residuals 1 27.53 27.53
Comentario: En los datos que nos da el ANOVA y notando que el valor de significancia es de \({\propto}=0.05\), en donde 5 factores son evaluados para ver si les afecta el color del producto, se observa que el \(Valor_p\) de todos los efectos producidos no llegan a ser significativos.
normalidad=shapiro.test(resid(modelo))
print(normalidad)
##
## Shapiro-Wilk normality test
##
## data: resid(modelo)
## W = 0.51123, p-value = 2.63e-06
Comentario: Gracias a la prueba de Shapiro-Wilk que se realizo para analizar los residuos, utilizado el \(Valor_p < 0.05\) dado que el resultado es menor al valor antes mencionado, se dice que se rechaza la hipótesis nula, entonces esto quiere decir que no tienen normalidad.
qqnorm(resid(modelo), main = "Gráfica de Probabilidad para los Residuos del Modelo", xlab = "Cuantiles Teoricos", ylab = "Cuantiles de muestra")
qqline(resid(modelo))
Comentario: La prueba de Shapiro-Wilk confirma que mediante la gráfica de probabilidad para los residuales del modelo muestra con cierta evidencia que hay una falta de normalidad en lo que respecta a los residuos, por lo que se puede decir que existen datos atípicos en el modelo propuesto, los cuales provocan que no sea idóneo para explicar la interacción que exise entre del color del quimico respescto a los factores que se evaluan.
homocedasticidad=bartlett.test(resid(modelo),A,B,C,D,E)
print(homocedasticidad)
##
## Bartlett test of homogeneity of variances
##
## data: resid(modelo) and A
## Bartlett's K-squared = 457.1, df = 1, p-value < 2.2e-16
Comentario: Analizando los datos obtenidos en esta prueba, estos son homocedásticos, esto quiere decir que el modelo no es el adecuado.
efectos_principales= MEPlot(experimento_respuesta)
head(efectos_principales)
| A | B | C | D | E | |
|---|---|---|---|---|---|
| - | 2.0525 | 3.3775 | 2.78125 | 0.4975 | 3.12125 |
| + | 3.3625 | 2.0375 | 2.63375 | 4.9175 | 2.29375 |
Comentario: Observando lo anterior se puede deducir que los efectos de cinco factores que generan un increment en el color de un producto químico es el factor D y el A, por otro lado hay una disminucion en los factores B, C y E.
grafica_interacciones=IAPlot(experimento_respuesta)
head(grafica_interacciones)
| A:B | A:C | A:D | A:E | B:C | B:D | B:E | C:D | C:E | D:E | |
|---|---|---|---|---|---|---|---|---|---|---|
| -:- | 3.360 | 1.7325 | -0.835 | 2.6175 | 3.5350 | 1.290 | 3.9350 | 0.2150 | 3.0750 | 0.9550 |
| +:- | 3.395 | 3.8300 | 1.830 | 3.6250 | 2.0275 | -0.295 | 2.3075 | 0.7800 | 3.1675 | 5.2875 |
| -:+ | 0.745 | 2.3725 | 4.940 | 1.4875 | 3.2200 | 5.465 | 2.8200 | 5.3475 | 2.4875 | 0.0400 |
| +:+ | 3.330 | 2.8950 | 4.895 | 3.1000 | 2.0475 | 4.370 | 1.7675 | 4.4875 | 2.1000 | 4.5475 |
Comentario: Como se observa en la gráfica de las interraciones existen algunas que se consideran fuertes, entre ellas estan los factores de A:D, B:D, C:D y D:E. Y para coprobar si estas son significativas se realiza un ANOVA del experiment.
modelo_a_d=lm(Datos~(A*D),data = datos)
summary(modelo_a_d)
##
## Call:
## lm.default(formula = Datos ~ (A * D), data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.3700 -0.8521 -0.0967 0.7062 6.1000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.6900 1.0351 0.667 0.5176
## A1 1.1400 1.5526 0.734 0.4769
## D1 3.6333 1.6903 2.150 0.0527 .
## A1:D1 -0.5683 2.3527 -0.242 0.8132
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.314 on 12 degrees of freedom
## Multiple R-squared: 0.4395, Adjusted R-squared: 0.2994
## F-statistic: 3.137 on 3 and 12 DF, p-value: 0.06541
anova_a_d=aov(modelo_a_d)
summary(anova_a_d)
## Df Sum Sq Mean Sq F value Pr(>F)
## A 1 6.86 6.86 1.281 0.2797
## D 1 43.23 43.23 8.070 0.0149 *
## A:D 1 0.31 0.31 0.058 0.8132
## Residuals 12 64.28 5.36
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_b_d=lm(Datos~(B*D), data = datos)
summary(modelo_b_d)
##
## Call:
## lm.default(formula = Datos ~ (B * D), data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.0200 -0.9825 -0.1950 0.6625 4.4000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.3900 0.9217 2.593 0.0235 *
## B1 -2.6850 1.3826 -1.942 0.0760 .
## D1 2.6333 1.5052 1.749 0.1057
## B1:D1 2.0317 2.0952 0.970 0.3513
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.061 on 12 degrees of freedom
## Multiple R-squared: 0.5555, Adjusted R-squared: 0.4444
## F-statistic: 4.999 on 3 and 12 DF, p-value: 0.01778
anova_b_d=aov(modelo_b_d)
summary(anova_b_d)
## Df Sum Sq Mean Sq F value Pr(>F)
## B 1 7.18 7.18 1.691 0.21792
## D 1 52.53 52.53 12.366 0.00425 **
## B:D 1 3.99 3.99 0.940 0.35134
## Residuals 12 50.98 4.25
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_c_d=lm(Datos~(C*D),data = datos)
summary(modelo_c_d)
##
## Call:
## lm.default(formula = Datos ~ (C * D), data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.2100 -0.6823 0.2850 0.8550 5.2600
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.5300 1.0507 1.456 0.1710
## C1 -0.7500 1.5760 -0.476 0.6427
## D1 3.3367 1.7157 1.945 0.0756 .
## C1:D1 0.3708 2.3882 0.155 0.8792
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.349 on 12 degrees of freedom
## Multiple R-squared: 0.4225, Adjusted R-squared: 0.2781
## F-statistic: 2.926 on 3 and 12 DF, p-value: 0.07714
anova_c_d=aov(modelo_c_d)
summary(anova_c_d)
## Df Sum Sq Mean Sq F value Pr(>F)
## C 1 0.09 0.09 0.016 0.902
## D 1 48.23 48.23 8.739 0.012 *
## C:D 1 0.13 0.13 0.024 0.879
## Residuals 12 66.23 5.52
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_d_e=lm(Datos~(D*E),data = datos)
summary(modelo_d_e)
##
## Call:
## lm.default(formula = Datos ~ (D * E), data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.6350 -0.6475 0.0500 0.9356 5.4000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.9550 1.1833 0.807 0.4353
## D1 3.8317 1.8075 2.120 0.0556 .
## E1 0.4350 1.5876 0.274 0.7887
## D1:E1 -0.6742 2.4057 -0.280 0.7841
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.367 on 12 degrees of freedom
## Multiple R-squared: 0.414, Adjusted R-squared: 0.2674
## F-statistic: 2.825 on 3 and 12 DF, p-value: 0.0836
anova_d_e=aov(modelo_d_e)
summary(anova_d_e)
## Df Sum Sq Mean Sq F value Pr(>F)
## D 1 46.96 46.96 8.384 0.0134 *
## E 1 0.08 0.08 0.014 0.9076
## D:E 1 0.44 0.44 0.079 0.7841
## Residuals 12 67.21 5.60
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Comentario: Gracias al analisis reazlizado previamante se concluye que de los 5 factores que intervienen de manera significativa en el color del producto, considerando el \(Valor_p\) de la tabla anova de cada corrida, es el factor D correspondiente a la pureza del reactivo, por lo que se recomieda mantenerlo en un nivel alto.