Una de las características importantes en el proceso de producción de un pigmento es su color. El problema que se tenía en este proceso era el exceso de variación del color del pigmento. Un grupo de mejora decide utilizar diseño robusto para tratar de hacer el proceso menos sensible al efecto de factores de ruido difíciles de controlar durante la producción. Se identificaron seis factores de control y tres de ruido con dos niveles cada uno: (1, 2), los cuales se muestran en la tabla 9.1. Se decide utilizar un arreglo ortogonal L8 para los factores de control y un L4 para los factores de ruido, con lo que el diseño resultante tiene 32 corridas (pruebas) a nivel proceso. El diseño y los datos obtenidos se muestran en la figura 9.4.
Se procede a calcular los estadísticos de interés en cada combinación de niveles de los factores de control (arreglo interno). Los valores de la media, desviación estándar y del estadístico señal/ruido nominal tipo II se muestran en las tres últimas co- lumnas de la figura 9.4. A continuación explicamos de manera detallada los conceptos nuevos que están involucrados en este ejemplo, como son: los arreglos ortogonales, los arreglos inter- no y externo, y la razón señal/ruido, para así entender el diseño de la figura 9.4 y poder analizarlo.
Tabla 9.1 Factores de control y de ruido en la producción de un pigmento
Figura 9.4 Diseño con arreglos interno y externo para hacer más robusto el color del pigmento.
Los datos del experimento los mandaremos a traer con la siguiente codificación:
library(readxl)
library(FrF2)
## Loading required package: DoE.base
## Loading required package: grid
## Loading required package: conf.design
## Registered S3 method overwritten by 'DoE.base':
## method from
## factorize.factor conf.design
##
## Attaching package: 'DoE.base'
## The following objects are masked from 'package:stats':
##
## aov, lm
## The following object is masked from 'package:graphics':
##
## plot.design
## The following object is masked from 'package:base':
##
## lengths
datos=read_excel(path = "dataset.xlsx")
View(datos)
attach(datos)
## The following object is masked from package:base:
##
## F
str(datos)
## tibble [8 x 10] (S3: tbl_df/tbl/data.frame)
## $ A : num [1:8] 1 1 1 1 2 2 2 2
## $ B : num [1:8] 1 1 2 2 1 1 2 2
## $ C : num [1:8] 1 1 2 2 2 2 1 1
## $ D : num [1:8] 1 2 1 2 1 2 1 2
## $ E : num [1:8] 1 2 1 2 2 1 2 1
## $ F : num [1:8] 1 2 2 1 1 2 2 1
## $ I : num [1:8] 36 32 34 10 33 34 26 28
## $ II : num [1:8] 26 62 16 30 31 48 27 40
## $ III: num [1:8] 24 24 25 26 27 26 18 21
## $ IV : num [1:8] 15 32 12 32 23 39 20 32
head(datos,n=9L)
## # A tibble: 8 x 10
## A B C D E F I II III IV
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 1 1 1 1 1 36 26 24 15
## 2 1 1 1 2 2 2 32 62 24 32
## 3 1 2 2 1 1 2 34 16 25 12
## 4 1 2 2 2 2 1 10 30 26 32
## 5 2 1 2 1 2 1 33 31 27 23
## 6 2 1 2 2 1 2 34 48 26 39
## 7 2 2 1 1 2 2 26 27 18 20
## 8 2 2 1 2 1 1 28 40 21 32
Una vez identificados los datos, se procede a la implementación mediante la siguiente secuencia de comandos, en la cual se determinan los estadísticos necesarios, como lo son la razón señal ruido (S/N), misma que para el caso de estudio, se determinó utilizar el estadístico correspondiente a el valor nominal tipo II, la media y la desviación estándar, por cada combinación del factor de control:
info=as.matrix(datos[1:8,8:10])
signal_noise=function(matriz)
{
sn=rep(NA,nrow(matriz))
for (i in 1:nrow(matriz))
{
sn[i]=-10*log((var(matriz[i,])),base = 10)
}
sn[]
}
r_signal_noise=signal_noise(matriz=info)
head(r_signal_noise)
## [1] -15.357160 -26.035052 -16.467304 -9.700368 -12.041200 -20.875448
media=function(matriz)
{
prom=rep(NA,nrow(matriz))
for(i in 1:nrow(matriz))
{
prom[i]=mean(matriz[i,])
}
prom[]
}
r_media=media(matriz = info)
head(r_media)
## [1] 21.66667 39.33333 17.66667 29.33333 27.00000 37.66667
varianza=function(matriz)
{
v=rep(NA,nrow(matriz))
for(i in 1:nrow(matriz))
{
v[i]=var(matriz[i,])
}
v[]
}
r_varianza=varianza(matriz = info)
r_desv_est=sqrt(varianza(matriz = info))
head(r_desv_est)
## [1] 5.859465 20.033306 6.658328 3.055050 4.000000 11.060440
En este caso determinaremos los efectos activos de la misma forma en que se determinan para un experimento factorial completo o factorial fraccionado, de la siguiente manera, para la respouesta del estadístico razón señal ruido:
library(FrF2)
experimento=FrF2(nruns = 8, nfactors = 6, factor.names = list(A=c(1,2),B=c(1,2),C=c(1,2),D=c(1,2),E=c(1,2),F=c(1,2)), replications = 1)
experimento_resp=add.response(experimento, response = r_signal_noise)
graf_daniel=DanielPlot(experimento_resp, main="Frafico de Daniel para el estadístico S/R")
efectos_principales=MEPlot(experimento_resp, main="Efectos princiapes para el experimento")
head(efectos_principales)
## A B C D E F
## - -17.00827 -18.93930 -17.16302 -16.18528 -15.13316 -12.64707
## + -16.38085 -14.44982 -16.22610 -17.20384 -18.25596 -20.74205
efectos_interaccion=IAPlot(experimento_resp, main="Gráfica de interacciones para el experimento")
head(efectos_interaccion)
## A:B A:C A:D A:E A:F B:C B:D
## -:- -19.76229 -19.03813 -14.25425 -14.97842 -12.76537 -23.45525 -18.11630
## +:- -18.11630 -15.28791 -18.11630 -15.28791 -12.52876 -10.87078 -14.25425
## -:+ -14.25425 -14.97842 -19.76229 -19.03813 -21.25118 -14.42335 -19.76229
## +:+ -14.64539 -17.47379 -14.64539 -17.47379 -20.23293 -18.02886 -14.64539
## B:E B:F C:D C:E C:F D:E D:F
## -:- -17.18249 -14.42335 -16.45832 -15.28791 -10.87078 -18.67138 -13.69918
## +:- -13.08384 -10.87078 -15.91223 -14.97842 -14.42335 -11.59495 -11.59495
## -:+ -20.69611 -23.45525 -17.86771 -19.03813 -23.45525 -13.69918 -18.67138
## +:+ -15.81581 -18.02886 -16.53997 -17.47379 -18.02886 -22.81273 -22.81273
## E:F
## -:- -11.59495
## +:- -13.69918
## -:+ -18.67138
## +:+ -22.81273
modelo_sr=lm(r_signal_noise~(A+B+C+D+E+F),data=datos)
anova_individuales=aov(modelo_sr)
summary(anova_individuales)
## Df Sum Sq Mean Sq F value Pr(>F)
## A 1 0.31 0.31 0.011 0.933
## B 1 28.36 28.36 1.048 0.493
## C 1 29.60 29.60 1.094 0.486
## D 1 44.40 44.40 1.641 0.422
## E 1 15.19 15.19 0.562 0.591
## F 1 50.89 50.89 1.881 0.401
## Residuals 1 27.05 27.05
Para el caso de la variable de respuesta promedio, ésta se utilizará para llevar al proceso a su valor esperado, que en este caso, como lo especifica el enunciado, es ocho pulgadas. Se eligirán los efecto activos que lleven al proceso a las condiciones, no robustas, que más se acerquen al valor esperado del proceso:
experimento_media=add.response(experimento,response = r_media)
graf_daniel_media=DanielPlot(experimento_media, main="Grafico de Daniel para la respueta media del proceso")
graf_efectos_individuales_media=MEPlot(experimento_media, main="Grafica de efectos principales para el valor nominal esperado")
head(graf_efectos_individuales_media)
## A B C D E F
## - 26.41667 30.08333 33.33333 26.00000 26.58333 24.91667
## + 29.91667 26.25000 23.00000 30.33333 29.75000 31.41667
interac_media=IAPlot(experimento_media,main="Grafica de interacciones para el valor nominal esperado")
head(interac_media)
## A:B A:C A:D A:E A:F B:C B:D B:E
## -:- 30.50000 33.16667 22.33333 19.66667 24.33333 38.50000 29.66667 29.66667
## +:- 29.66667 33.50000 29.66667 33.50000 25.50000 28.16667 22.33333 23.50000
## -:+ 22.33333 19.66667 30.50000 33.16667 28.50000 21.66667 30.50000 30.50000
## +:+ 30.16667 26.33333 30.16667 26.33333 34.33333 24.33333 30.16667 29.00000
## B:F C:D C:E C:F D:E D:F E:F
## -:- 21.66667 32.33333 33.50000 28.16667 27.66667 24.33333 25.50000
## +:- 28.16667 19.66667 19.66667 21.66667 25.50000 25.50000 24.33333
## -:+ 38.50000 34.33333 33.16667 38.50000 24.33333 27.66667 27.66667
## +:+ 24.33333 26.33333 26.33333 24.33333 35.16667 35.16667 35.16667
Las interacciones activas son BD, BF y DF, por lo que se verifica su significancia con el mejor anova:
modelo_BD=lm(r_media~(B*D),data=datos)
anova_BD=aov(modelo_BD)
summary(anova_BD)
## Df Sum Sq Mean Sq F value Pr(>F)
## B 1 84.50 84.50 13.520 0.02126 *
## D 1 304.22 304.22 48.676 0.00222 **
## B:D 1 6.72 6.72 1.076 0.35827
## Residuals 4 25.00 6.25
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_BF=lm(r_media~(B*F),data=datos)
anova_BF=aov(modelo_BF)
summary(anova_BF)
## Df Sum Sq Mean Sq F value Pr(>F)
## B 1 84.50 84.50 13.520 0.02126 *
## F 1 6.72 6.72 1.076 0.35827
## B:F 1 304.22 304.22 48.676 0.00222 **
## Residuals 4 25.00 6.25
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
modelo_DF=lm(r_media~(D*F),data=datos)
anova_DF=aov(modelo_DF)
summary(anova_DF)
## Df Sum Sq Mean Sq F value Pr(>F)
## D 1 304.22 304.22 48.676 0.00222 **
## F 1 6.72 6.72 1.076 0.35827
## D:F 1 84.50 84.50 13.520 0.02126 *
## Residuals 4 25.00 6.25
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A manera de conclusión, los datos muestrales dan evidencia, con un 95% de confianza que los factores B,D y F, correspondientes al exceso de variación del color del pigmento, respectivamente, tienen efectos significativos sobre el valor de la media, por lo que se recomienda usar los niveles máximos de éstos factores, mientras que respecto de la razón señal ruido, se concluye, con un 95% de confianza, que ninguno de los factores considerados en el análisis es influyente para maximizar la razón señal ruido para hacer insensible el proceso al efecto del factor de ruido.