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.
Tabla de datos para el ejemplo:
A | B | I | II | III | IV | Factor | Bajo (-) | Alto (+) |
---|---|---|---|---|---|---|---|---|
- | - | 14.037 | 16.615 | 13.972 | 13.907 | A | 55% | 59% |
+ | - | 13.880 | 13.860 | 14.032 | 13.914 | |||
- | + | 14.821 | 14.757 | 14.843 | 14.878 | B | Corto | Largo |
+ | + | 14.888 | 14.921 | 14.415 | 14.932 | 10 min | 15min |
Como primer paso se deberá importar los datos desde el archivo que los coontiene, ubicado en la carpeta de trabajo, que para este caso se llama dataset.txt.
library(printr)
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_arsenico: 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)
Para efectos de resolver adecuadamente el ejercicio, se reescribirá la tabla, de manera que sea interpretada como un conjunto de variables, quedando de la siguiente manera.
#Tabla de datos escrita.
head(datos, n= 16L)
respuesta | flujo_arsenico | 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.032 | 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 \(2^2\) 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~~\epsilon_{ij}\] De acuerdo con Montgomery, en un diseño factorial con dos niveles, el efecto promedio 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.(montgomery2005diseno?,)
Dicho lo anterior, para el caso del factor A, el efecto promedio, utilizando la notación de Yates, se define como:
\[A= \frac{1}{2_n}~~[ab+a−b−(1)]\]
Para el caso del factor B, se define de la siguiente manera:
\[B=\frac{1}{2_n}~~[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}{2_n}~~[ab+(1)−a−b]\]
Para determinar los efectos, utilizamos el siguiente código:
modelo=lm(respuesta~(flujo_arsenico+tiempo+flujo_arsenico*tiempo))
summary(modelo)
##
## Call:
## lm(formula = respuesta ~ (flujo_arsenico + tiempo + flujo_arsenico *
## tiempo))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.72575 -0.24475 -0.02450 0.06756 1.98225
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 14.4858 0.1740 83.268 <2e-16 ***
## flujo_arsenico -0.2430 0.1740 -1.397 0.188
## tiempo 0.2086 0.1740 1.199 0.254
## flujo_arsenico:tiempo 0.1126 0.1740 0.647 0.530
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.6959 on 12 degrees of freedom
## Multiple R-squared: 0.2409, Adjusted R-squared: 0.05114
## F-statistic: 1.269 on 3 and 12 DF, p-value: 0.3289
library(FrF2)
experimento=FrF2(nruns = 4, nfactors = 2, factor.names = list(flujo_arsenico=c(-1,1),tiempo=c(-1,1)),replications = 4,randomize = FALSE)
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")
**
Inciso B) y C)
Para el caso de las gráficas de efectos individuales, o de efectos principales, se lográ observar que existe una rapidez de flujo de arsénico al 55% de su capacidad lo cúal genera un grosor de la capa epitaxial de 14.72875 \(μm\) en promedio, mientras que para un flujo de dicha sustancia al 59% de su capacidad genera un grosor de la capa de 14.35525 \(μm\) en promedio, por otra parte para el caso del tiempo, un lapso corto de tiempo (10 min) de exposición a los vapores químicos lográ producir 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\). De esta manera se puede concluir 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, tambíén es necesario observar las gráficas de interacciones, ya que estas gráficas reportan una interacción relevante 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 proporcionan una evidencia de una interacción entre el flujo de arsénico y el tiempo de exposición. Para el caso del flujo de arsénico en un nivel de funcionamiento de 59%, si este se mantiene en 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 lograr 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.
anova=aov(modelo)
summary(anova)
## Df Sum Sq Mean Sq F value Pr(>F)
## flujo_arsenico 1 0.945 0.9448 1.951 0.188
## tiempo 1 0.696 0.6964 1.438 0.254
## flujo_arsenico:tiempo 1 0.203 0.2030 0.419 0.530
## Residuals 12 5.811 0.4842
Con esto se puede observar, el \(Valor_p\) para el efecto producido por el flujo de arsénico no es significativo, considerando un nivel de significancia de \(α=0.05, Valorp>α\), por lo que con esto se acepta la hipótesis nula y se puede concluir que no existen diferencias significativas entre los grosores promedio producido por los niveles del factor de tratamiento considerados para el flujo de arsénico. Mientras que para el factor tiempo de exposición, se puede concluir que no existen diferencias significativas entre los niveles probados para este factor, debido a que \(Valorp>α\), por lo que se acepta la hipótesis nula para los niveles del factor en comento. Para las interacciones, se concluye que no existen diferencias significativas entre las diferentes interacciones generadas, debido a que \(Valorp>α\), por lo que lleva a la 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. Mientras que para el caso del modelo estadístico, el resultado obtenido reporta que los coeficientes de regresión los datos presentados quedarían representados de la siguiente manera:
\[Grosor_{ij}=14.54209-0.1868 flujo arsenico_i+0.2649 Tiempo_j+ 0.1689flujo arsenicotiempo_{ij}+\epsilon_{ij}\]
Una vez realizado y finalizado el Análisis de Varianza, es importante verificar las pruebas de adecuación del modelo, para lo cual se realizarán las siguientes pruebas:
INCISO D)
##Pruebas de adecuación.
### Prueba de Normalidad de Residuos de Shapiro-Wilk.
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(montgomery2005diseno?,). Para poder realizar esta prueba se debe plantear las siguientes hipótesis de trabajo:
\[H_0: x ~\epsilon ~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 \(Valor_p<0.05\), siempre es recomendable realizar una gráfica de probabilidad normal para confirmar la prueba de hipótesis.
normalidad=shapiro.test(resid(modelo))
print(normalidad)
##
## Shapiro-Wilk normality test
##
## data: resid(modelo)
## W = 0.76061, p-value = 0.0008551
#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))
Los resultados obtenidos para la prueba de Shapiro-Wilk brindan evidencia de la falta de normalidad en los residuos, lo cual esto se confirma mediante la Gráfica de Probabilidad para los Residuales del Modelo, lo cual se llega a la conclusión de que, para este caso en particular, hay existencia de datos atípicos para el modelo propuesto, lo cual esto provoca que este 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, De la Vara Salazar, González, Martı́nez, & Pérez, 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~~\neq~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_arsenico, data=datos)
print(homocedasticidad_flujo)
##
## Bartlett test of homogeneity of variances
##
## data: respuesta by flujo_arsenico
## Bartlett's K-squared = 2.7762, df = 1, p-value = 0.09568
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 = 6.7968, df = 1, p-value = 0.009132
Se rechaza la hipotesis de igualdad porque el modelo no es el correcto para explicar los cambios existentes en el grosor de la capa pitaxial.
INCISO E
Para el caso de los datos atípico existen varias alternativas, mismas que se reportan en el siguiente enlace:
Ver enlace.
#Bibliografia