Análisis de diseños factoriales 2^k en bloques

Anuncio
SIMULACIÓN Y OPTIMIZACIÓN DE PROCESOS
5º INGENIERÍA QUÍMICA
CURSO 2004-05
ANÁLISIS DE
DISEÑOS FACTORIALES EN BLOQUES
Para generar un diseño factorial por bloques utilizamos el comando básico
conf.design:
d1 <- conf.design(c(1,1,1), 2, treatment.names=c("A","B","C"))
d1
Blocks A B C
1
0 0 0 0
2
0 1 1 0
3
0 1 0 1
4
0 0 1 1
5
1 1 0 0
6
1 0 1 0
7
1 0 0 1
8
1 1 1 1
La especificación c(1,1,1) indica el efecto que se quiere confundir, en este caso ABC,
luego se indica el número (común) de niveles de los factores (2) y finalmente los
nombres de los factores. Vemos un diseño 23 completo repartido en dos bloques, los
cuales quedan caracterizados por los dos valores de la variable Blocks. Por ejemplo, los
tratamientos en el primer bloque serían (1), ab, ac y bc, etc.
Observemos que el número de bloques viene determinado por el número de efectos
confundidos. Por ejemplo, para obtener un diseño 24 completo en 4 bloques
especificamos dos efectos de la siguiente manera:
d2 <- conf.design(rbind(c(1,1,1,1),c(0,1,1,1)), 2,
treatment.names=c("A","B","C","D"))
d2
Blocks A B C D
1
00 0 0 0 0
2
00 0 1 1 0
3
00 0 1 0 1
4
00 0 0 1 1
5
01 1 1 0 0
6
01 1 0 1 0
7
01 1 0 0 1
8
01 1 1 1 1
9
10 1 0 0 0
10
10 1 1 1 0
11
10 1 1 0 1
12
10 1 0 1 1
13
11 0 1 0 0
14
11 0 0 1 0
15
11 0 0 0 1
1
16
11 0 1 1 1
Este diseño confunde ABCD y BCD con bloques. Existe la posibilidad de que al
especificar los efectos confundidos hayamos incluido uno que en realidad no deseamos
confundir. El comando conf.set ofrece todos los efectos confundidos (cargar la
función de antemano si no se ha hecho ya):
conf.set(rbind(c(1,1,1,1),c(0,1,1,1)), 2)
[1,]
[2,]
[3,]
[,1] [,2] [,3] [,4]
1
1
1
1
0
1
1
1
1
0
0
0
De nuevo este 2 es el número común de niveles. Vemos ahora como la interacción
generalizada ABCD*BCD = A (un efecto principal) “se ha colado” como efecto
confundido, luego el diseño obtenido en este caso no es muy útil.
A veces deseamos replicar un factorial completo en bloques. En este caso, tenemos la
opción de confundir efectos distintos en cada réplica. Por ejemplo, los siguientes
comandos generan un diseño 23 replicado cuatro veces (utilizando ocho bloques en
total, cada uno de tamaño 4) y confundiendo parcialmente los efectos ABC, AB, AC y
BC respectivamente (cada réplica confunde uno de estos efectos):
d3 <d4 <d5 <d6 <d3456
d3456
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
conf.design(c(1,1,1),
conf.design(c(1,1,0),
conf.design(c(1,0,1),
conf.design(c(0,1,1),
<- rjoin(d3,d4,d5,d6)
2,
2,
2,
2,
treatment.names=c("A","B","C"))
treatment.names=c("A","B","C"))
treatment.names=c("A","B","C"))
treatment.names=c("A","B","C"))
Part Blocks A B C
Part1
0 0 0 0
Part1
0 1 1 0
Part1
0 1 0 1
Part1
0 0 1 1
Part1
1 1 0 0
Part1
1 0 1 0
Part1
1 0 0 1
Part1
1 1 1 1
Part2
0 0 0 0
Part2
0 1 1 0
Part2
0 0 0 1
Part2
0 1 1 1
Part2
1 1 0 0
Part2
1 0 1 0
Part2
1 1 0 1
Part2
1 0 1 1
Part3
0 0 0 0
Part3
0 0 1 0
Part3
0 1 0 1
Part3
0 1 1 1
Part3
1 1 0 0
Part3
1 1 1 0
Part3
1 0 0 1
Part3
1 0 1 1
Part4
0 0 0 0
2
26
27
28
29
30
31
32
Part4
Part4
Part4
Part4
Part4
Part4
Part4
0
0
0
1
1
1
1
1
0
1
0
1
0
1
0
1
1
1
1
0
0
0
1
1
0
0
1
1
Alternativamente, podemos definir una variable bloque con 8 niveles:
d3456$Blocks <- join(d3456$Part, d345$Blocks)
d3456
Part
1 Part1
2 Part1
3 Part1
4 Part1
5 Part1
...
32 Part4
Blocks
Part1Part10
Part1Part10
Part1Part10
Part1Part10
Part1Part11
A
0
1
1
0
1
B
0
1
0
1
0
C
0
0
1
1
0
Part4Part11 1 0 1
Para analizar los datos obtenidos en este experimento, procedemos de la siguiente
manera. Primero generamos un vector con los datos en el mismo orden que especifica
d3456:
y <- c(2208,2133,2459,3096,2196,2086,3356,2776,
+
2004,2112,3073,2631,2179,2073,3474,3360,
+
1916,2151,2979,2500,2189,2095,2839,3522,
+
2010,2056,3209,3066,1878,2156,3423,2524)
Después invocamos el comando aov de esta manera:
fm <- aov(y ~ A*B*C + Error(Blocks), data=d3456)
summary(fm)
Error: Blocks
Df Sum Sq Mean Sq F value Pr(>F)
A:B
1 200344 200344 15.5235 0.02914 *
A:C
1 150975 150975 11.6982 0.04183 *
B:C
1 16200
16200 1.2552 0.34416
A:B:C
1 33541
33541 2.5989 0.20533
Residuals 3 38718
12906
--Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
Error: Within
Df Sum Sq Mean Sq F value
Pr(>F)
A
1 224283 224283
3.9664
0.06273 .
B
1
53
53
0.0009
0.97604
C
1 6886688 6886688 121.7890 3.584e-09 ***
A:B
1
737
737
0.0130
0.91044
A:C
1 416067 416067
7.3580
0.01478 *
B:C
1
2667
2667
0.0472
0.83066
A:B:C
1
70742
70742
1.2511
0.27891
Residuals 17 961283
56546
--Signif. codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1
3
Observamos aquí los siguientes puntos:



La especificación del término de error en el comando aov hace uso de la variable
Blocks.
Primeramente se ofrece una tabla ANOVA correspondiente al efecto Bloques
(que incorpora todos los efectos parcialmente confundidos). Hay 7 grados de
libertad para diferencias entre bloques, de los cuales 4 están parcialmente
confundidos (apareciendo justamente los efectos asociados) y 3 no están
confundidos.
Como la confusión es parcial, la significación de los efectos confundidos puede
testarse (comparando con la fila del error/residuals de la forma usual). Esta es la
información que ofrece la segunda tabla. Concretamente, se deduce que los
efectos importantes son, en este orden: C, AC y A.
Esta salida puede compararse con la obtenida en el caso de confusión total
(quedándonos únicamente con la primera réplica):
d3 <- conf.design(c(1,1,1), 2, treatment.names=c("A","B","C"))
y <- c(2208,2133,2459,3096,2196,2086,3356,2776)
fm <- aov(y ~ A*B*C + Error(Blocks), data=d3)
summary(fm)
Error: Blocks
Df Sum Sq Mean Sq
A:B:C 1 33541
33541
Error: Within
Df Sum Sq Mean Sq
A
1 174640 174640
B
1
2048
2048
C
1 1173512 1173512
A:B 1
50562
50562
A:C 1 195938 195938
B:C 1
7320
7320
En este caso, el efecto confundido ABC no se lista en la segunda tabla (es imposible
distinguirlo de Blocks en este caso). Tampoco hay término de error (se trata de una
única réplica), pero las sumas de cuadrados ofrecidas permiten valorar los efectos
importantes: de nuevo (¡claro!) C, AC y A por este orden.
Por último, imaginemos dos réplicas confundiendo en ambas ABC; usamos los datos
reales de la segunda réplica pero pretendiendo que se hizo con la misma estructura que
la primera réplica (con lo cual los resultados son ya ficticios, pero ilustran el tipo de
salida que se obtiene en este caso):
d3 <- conf.design(c(1,1,1), 2, treatment.names=c("A","B","C"))
d4 <- conf.design(c(1,1,1), 2, treatment.names=c("A","B","C"))
d34 <- rjoin(d3,d4)
d34$Blocks <- join(d34$Part, d34$Blocks)
y <- c(2208,2133,2459,3096,2196,2086,3356,2776,
+
2004,2112,3073,2631,2179,2073,3474,3360)
fm <- aov(y ~ A*B*C + Error(Blocks), data=d34)
summary(fm)
4
Error: Blocks
Df Sum Sq Mean Sq F value Pr(>F)
A:B:C
1 198916 198916 6.9588 0.1187
Residuals 2 57170
28585
Error: Within
Df Sum Sq Mean Sq F value Pr(>F)
A
1
25600
25600 0.3505 0.57543
B
1
29070
29070 0.3981 0.55136
C
1 3270672 3270672 44.7845 0.00054 ***
A:B
1 166056 166056 2.2738 0.18231
A:C
1
80940
80940 1.1083 0.33299
B:C
1
6241
6241 0.0855 0.77988
Residuals 6 438188
73031
Como ABC está totalmente confundido, sólo aparece en la primera tabla. En cambio,
ahora en la segunda tabla hay término de error, y se puede testar la significación de los
demás efectos…
5
Descargar