En un artículo de AT&T Technical Journal (vol. 65, pp. 39-50) se describe la aplicación de diseños factoriales de dos niveles en la fabricación de circuitos integrados. Un paso básico del procesamiento es hacer crecer una capa epitaxial sobre obleas de silicio pulidas. Las obleas se montan en un susceptor, se colocan en el interior de una campana de cristal y se introducen vapores químicos. El susceptor se hace girar y se aplica calor hasta que la capa epitaxial tiene el espesor suficiente. Se corrió un experimento utilizando dos factores: rapidez de flujo de arsénico (A) y tiempo de deposición (B). Se corrieron cuatro réplicas y se midió el la capa epitaxial (en μm). Los datos se muestran a continuación(Montgomery, 2004):
A | B | I | II | III | IV | Factor | Bajo(-) | Alto(+) |
---|---|---|---|---|---|---|---|---|
- | - | 14.037 | 16.165 | 13.972 | 13.907 | A | 55% | 59% |
+ | - | 13.880 | 13.860 | 14.032 | 13.914 | |||
- | + | 14.821 | 14.821 | 14.843 | 14.878 | B | Corto | Largo |
+ | + | 14.888 | 14.888 | 14.415 | 14.932 | (10 min) | (15 min) |
Hay que importar los datos que contiene el archivo.
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': 16 obs. of 3 variables:
## $ Respuesta : num 14 13.9 14.8 14.9 16.6 ...
## $ Flujo_arseni: int -1 1 -1 1 -1 1 -1 1 -1 1 ...
## $ Tiempo : int -1 -1 1 1 -1 -1 1 1 -1 -1 ...
attach(datos)
Se debe de realizar correctamente el ejercicio, reescribimos la tabla, de manera que sea interpretada como un conjunto de variables y así quede de la siguiente manera:
head(datos, n= 16L)
Respuesta | Flujo_arseni | Tiempo |
---|---|---|
14.037 | -1 | -1 |
13.880 | 1 | -1 |
14.821 | -1 | 1 |
14.888 | 1 | 1 |
16.615 | -1 | -1 |
13.860 | 1 | -1 |
14.757 | -1 | 1 |
14.921 | 1 | 1 |
13.972 | -1 | -1 |
14.032 | 1 | -1 |
14.843 | -1 | 1 |
14.415 | 1 | 1 |
13.907 | -1 | -1 |
13.914 | 1 | -1 |
14.878 | -1 | 1 |
14.932 | 1 | 1 |
Para calcular los efectos de los factores, debemos considerar que en la ejecución de un diseño factorial completo de la familia 22 es necesario considerar el factor de interacción; el modelo matemático que relaciona los efectos de los factores en la variable de salida se escribe de la siguiente manera:
\[{y_{ij}}={\mu}+{\tau_i}+{\beta_j}+{\varepsilon_{ij}}\] Montgomery, en un diseño factorial con dos niveles, el efecto primedio de un factor puede definirse como el cambio en la respuesta producido por un cambio en el nivel de ese factor promediado para para los niveles del otro factor(Montgomery, 2004). Dicho lo anterior, para el caso del factor A, el efecto promedio, utilizando la notación de Yates, se define como:
\[A={\frac{1}{2n}}{[ab + a - b - (1)]}\]
Para el caso del factor B, se define de la siguiente manera:
\[B={\frac{1}{2n}}{[ab + b - a - (1)]}\]
En el caso del efecto de interacción AB, se define como la diferencia promedio entre el efecto de A con el nivel alto de B y el efecto de A con el nivel bajo de B, por lo tanto:
\[AB={\frac{1}{2n}}{[ab + (1) - a - b]}\]
Para determinar los efectos, utilizamos el siguiente código:
modelo=lm(Respuesta~(Flujo_arseni+Tiempo+Flujo_arseni*Tiempo))
summary(modelo)
##
## Call:
## lm(formula = Respuesta ~ (Flujo_arseni + Tiempo + Flujo_arseni *
## Tiempo))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.72575 -0.14431 -0.00563 0.10188 1.98225
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.5420 0.1686 86.229 <2e-16 ***
## Flujo_arseni -0.1868 0.1686 -1.107 0.290
## Tiempo 0.2649 0.1686 1.571 0.142
## Flujo_arseni:Tiempo 0.1689 0.1686 1.001 0.336
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6746 on 12 degrees of freedom
## Multiple R-squared: 0.2813, Adjusted R-squared: 0.1016
## F-statistic: 1.565 on 3 and 12 DF, p-value: 0.249
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
experimento=FrF2(nruns = 4, nfactors = 2, factor.names = list(Arsenico=c(-1,1),Tiempo=c(-1,1)),replications = 4,randomize = FALSE)
## creating full factorial with 4 runs ...
experimento_respuesta=add.response(design=experimento,response = Respuesta)
grafica_efectos_principales=MEPlot(experimento_respuesta, main= "Gráfica de Efectos Individuales")
grafica_interacciones=IAPlot(experimento_respuesta, main= "Gráfica de Interacciones")
head(grafica_efectos_principales)
Arsenico | Tiempo | |
---|---|---|
- | 14.72875 | 14.27712 |
+ | 14.35525 | 14.80687 |
head(grafica_interacciones)
Arsenico:Tiempo | |
---|---|
-:- | 14.63275 |
+:- | 13.92150 |
-:+ | 14.82475 |
+:+ | 14.78900 |
En el caso de las gráficas de efectos individuales, o de efectos principales, es de observarse que una rapidez de flujo de arsénico al 55% de su capacidad genera un grosor de la capa epitaxial de 14.72875 μm en promedio, mientras que un flujo de dicha sustancia al 59% de su capacidad genera un grosor de la capa de 14.35525 μm en promedio, para el caso del tiempo, un lapso corto de tiempo (10 min) de exposición a los vapores químicos produce en promedio un grosor de la capa epitaxial de 14.27712 μm, mientras que un tiempo de exposición largo (15 min), produce un grosor promedio de la capa de 14.80687 μm. Podría concluirse entonces que un tiempo de exposición a los vapores químicos largo produce un mayor grosor de la capa, inclusive mayor que un flujo al 59% de capacidad del flujo de arsénico, por lo que el tiempo se considera el factor principal. Sin embargo, es necesario observar tambíén las gráficas de interacciones, mismas que reportan una interacción importante entre los factores. Cuando el flujo de arsénico se encuentra a un 55% de su capacidad de flujo y el tiempo de exposición es corto, se produce un grosor promedio de 14.63275 μm, mientras que si se mantiene el flujo de arsénico en este nivel de operación pero se opera el sistema para un tiempo largo de exposición se genera un grosor promedio de la capa de 14.82475 μm, estos hechos dan evidencia de una interacción entre el flujo de arsénico y el tiempo de exposición. En el caso del flujo de arsénico en un nivel de funcionamiento de 59%, si se mantiene el sistema operando para un tiempo corto de exposición se obtiene un grosor promedio de 13.92150 μm, mientras que si se mantiene operando el sistema con un flujo de arsénico al 59% de su capacidad y un tiempo largo de exposición, se obtiene un grosor promedio de la capa de 14.78900 μm. Para establecer de manera definitiva cuales son los niveles de operación del sistema, es conveniente verificar la significancia tanto de los factores de manera individual como de las interacciones, para tal caso se ejecuta el Análisis de Varianza (ANOVA) correspondiente, mediante la siguiente secuencia de comandos:
anova=aov(modelo)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## Flujo_arseni 1 0.558 0.5580 1.226 0.290
## Tiempo 1 1.123 1.1225 2.467 0.142
## Flujo_arseni:Tiempo 1 0.456 0.4563 1.003 0.336
## Residuals 12 5.461 0.4551
Dado que, considerando un nivel de significancia de α=0.05, Valorp>α, por lo que se de acepta la hipótesis nula y se concluye que no existen diferencias significativas entre los grosores promedio producido por los niveles del factor de tratamiento considerados para el flujo de arsénico. Para el caso del factor tiempo de exposición, se concluye que no existen diferencias significativas entre los niveles probados para este factor, dado que Valorp>α, por lo que se acepta la hipótesis nula para los niveles del factor en comento. Para el caso de las interacciones, se concluye que no existen diferencias significativas entre las diferentes interacciones generadas, dado que Valorp>α, lo que lleva ala conclusión de que, si bien existen interacciones evidentes, éstas no son los suficientemente fuertes para provocar cambios importantes en el grosor de la capa epitaxial resultante.
Para el caso del modelo estadístico, el resultado obtenido reporta que los coeficientes de regresión dados los datos presentados quedarían representados de la siguiente manera:
\[{Grosor_{ij}}=14.5420 - 0.1868Porcentaje_{ij} + 0.2649Tiempo_j + 0.1689PorcentajeTiempo_{ij} + \epsilon_{ij}\]
Una vez realizado el Análisis de Varianza, es importante verificar las pruebas de adecuación del modelo, para lo cual se efectuarán las siguientes pruebas:
1.Prueba de Normalidad de Residuos de Shapiro Wilks
2.Prueba de Barttlet para Igualdad de Varianzas
Para el caso específico de la normalidad, procederemos a utilizar la Prueba de Bondad de Ajuste a la Distribución Normal de Shapiro-Wilks, aunque cabe mencionar que puede utilizarse cualquier otra, como Kolmogorov-Smirnov o Anderson-Darlind, la prueba de Shapiro-Wilks está diseñada específicamente para la Distribución Normal(Montgomery, 2004). Para realizar esta prueba debemos plantear las siguientes hipótesis de trabajo:
\[{H_0: x \in N(\mu = 0, \sigma^2=Constante)}\]
\[{H_1: x \notin N(\mu = 0, \sigma^2=Constante)}\]
La hipótesis nula de la Prueba de Shapiro-Wilks se rechaza cuando Valorp<0.05, siempre es recomendable realizar una gráfica de probabilidad normal para confirmar la prueba de hipótesis, para lo cual utilizaremos la siguiente secuencia de comandos:
normalidad=shapiro.test(resid(modelo))
print(normalidad)
##
## Shapiro-Wilk normality test
##
## data: resid(modelo)
## W = 0.69647, p-value = 0.0001543
#Gráfica de Probabiliad Normal
qqnorm(resid(modelo), main= "Gráfica de Probabilidad para los Residuales del Modelo", xlab="Cuantiles Teoricos", ylab = "Cuantiles de muestra")
qqline(resid(modelo))
En los resultados obtenidos para la prueba de Shapiro-Wilk dan evidencia de la falta de normalidad en los residuos, situación que se confirma mediante la Gráfica de Probabilidad para los Residuales del Modelo, esto lleva a la conclusión de que, para este caso particular, existen datos atípicos para el modelo propuesto, mismos que provocan que dicho modelo no sea el adecuado para explicar el grosor de la capa epitaxial en función del flujo de arsénico y el tiempo de exposición al baño químico al que se somenten las obleas de silicio pulido.
La Prueba de Homocedasticidad, o de Varianzas Iguales, se realiza mediante la Prueba de Bartlett, misma que para el caso particular, como sólo es significativo el factor de tratamiento, solo se considerará éste para la ejecución de la prueba(Pulido & Vara Salazar, 2012). La Prueba de Bartlett tiene las siguientes hipótesis:
\[{H_0: \sigma^2_i=\sigma^2_j=Constante)}\]
\[{H_1: \sigma^2_i\neq\sigma^2_j=Constante)}\]
La Prueba de Bartlett se realiza con la siguiente línea de comandos, misma que se efectúa por separado para cada factor
homocedasticidad_flujo=bartlett.test(Respuesta~Flujo_arseni, data=datos)
print(homocedasticidad_flujo)
##
## Bartlett test of homogeneity of variances
##
## data: Respuesta by Flujo_arseni
## Bartlett's K-squared = 2.0048, df = 1, p-value = 0.1568
homocedasticidad_tiempo=bartlett.test(Respuesta~Tiempo, data=datos)
print(homocedasticidad_tiempo)
##
## Bartlett test of homogeneity of variances
##
## data: Respuesta by Tiempo
## Bartlett's K-squared = 13.934, df = 1, p-value = 0.0001893
Se pueda aceptar la igualdad de varianzas, es necesario que los residuales sean homocedásticos para todos los factores, y en el caso de el factor Tiempo de exposición, se rechaza la hipótesis de igualdad de varianzas. En lo anterior, se concluye que el modelo no es adecuado para explicar los cambios en el grosor de la capa epitaxial en función del flujo de arsénico y el tiempo de exposición al baño químico para las obleas de silicio pulido.
Esta función incluye todos los argumentos para evaluar la normalidad multivariada mediante pruebas de normalidad multivariante, en este caso se puede obsevar con datos atípicos multivariados.