Exemple: Injecció

En una planta de fabricación de piezas de plástico por inyección se realizó un experimento para reducir el número de rugosidades (“mark flows”) que aparecían en las piezas. Cada prueba consistió en fabricar 100 piezas y obtener el número medio de rugosidades (contadas de una forma normalizada) que aparecían.

Se decidió estudiar los 8 factores siguientes, todos ellos a 2 niveles, uno bajo (–) y otro alto (+):

El diseño experimental utilizado fue un 28-4 con los experimentos seleccionados con FrF2. Los resultados obtenidos, en el orden estándar de la matriz de diseño, fueron

resposta = c(6.2, 5.2, 4.3, 3.0, 5.3, 4.0, 0.0,
             1.9, 6.3, 5.8, 6.0, 3.0, 3.3, 5.8,
             0.0, 0.0)

Solució: Creem la matriu de disseny i hi afegim la resposta

library(FrF2)
dis = FrF2(nruns = 16, nfactors = 8, 
           randomize = FALSE)

resposta = c(6.2, 5.2, 4.3, 3.0, 5.3, 4.0, 0.0,
             1.9, 6.3, 5.8, 6.0, 3.0, 3.3, 5.8,
             0.0, 0.0)
dis = add.response(dis, resposta)

És un disseny de resolució IV: hi ha interaccions de dos factors confoses entre elles

aliasprint(dis)
## $legend
## [1] A=A B=B C=C D=D E=E F=F G=G H=H
## 
## $main
## character(0)
## 
## $fi2
## [1] AB=CE=DF=GH AC=BE=DG=FH AD=BF=CG=EH AE=BC=DH=FG AF=BD=CH=EG AG=BH=CD=EF
## [7] AH=BG=CF=DE

Fem el Daniel plot i identifiquem la temperatura del motlle i la fundició com a importants

DanielPlot(dis)

Ajustem el model amb les temperatures com a predictores, i veiem que són significatives

mod = aov(resposta ~ B + C, dis)
summary(mod)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## B            1  35.11   35.11   24.14 0.000284 ***
## C            1  23.77   23.77   16.34 0.001397 ** 
## Residuals   13  18.91    1.45                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Fem el gràfic d’efectes

library(emmeans)
emmip(mod, B ~ C)

Si volem minimitzar la resposta, recomanem que B = C = 1. És a dir, volem que les temperatures siguin altes. Si volem continuar experimentant, podríem provar temperatures més altes.

Afegir noms dels nivells del factor

Amb FrF2, podem afegir els noms dels nivells, si en tenim. Per exemple:

disseny2 = FrF2(nruns = 16, nfactors = 5,
                randomize = FALSE,
                factor.names = 
                  list(temp = c("150", "200"),
                       visco = c("1", "2"),
                       conc = c("20", "30"),
                       pres = c("2", "4"),
                       tipus = c("A", "B")))
disseny2
##    temp visco conc pres tipus
## 1   150     1   20    2     B
## 2   200     1   20    2     A
## 3   150     2   20    2     A
## 4   200     2   20    2     B
## 5   150     1   30    2     A
## 6   200     1   30    2     B
## 7   150     2   30    2     B
## 8   200     2   30    2     A
## 9   150     1   20    4     A
## 10  200     1   20    4     B
## 11  150     2   20    4     B
## 12  200     2   20    4     A
## 13  150     1   30    4     B
## 14  200     1   30    4     A
## 15  150     2   30    4     A
## 16  200     2   30    4     B
## class=design, type= FrF2

Etiquetes de cava

Creem la matriu de disseny i hi afegim la resposta

library(FrF2)
disseny = FrF2(nruns = 8, nfactors = 5,
               randomize = FALSE)
resposta = c(24, 16, 22.5, 24.5,
             25, 16, 24.5, 23.5)
disseny = add.response(disseny, resposta)

És un disseny de resolució III: hi ha efectes principals confosos amb interaccions de dues variables.

aliasprint(disseny)
## $legend
## [1] A=A B=B C=C D=D E=E
## 
## $main
## [1] A=BD=CE B=AD    C=AE    D=AB    E=AC   
## 
## $fi2
## [1] BC=DE BE=CD

Fem el Daniel plot

DanielPlot(disseny)

Ens surten A, B i D com a importants. Hem d’anar amb compte, però, perquè és un disseny fraccional i hi ha confusions:

Sembla poc probable que CE sigui realment important, donat que els efectes de C i E no apareixen enlloc més. Per tant, amb les dades que tenim, els models següents semblen raonables:

Amb les dades que tenim, aquests models no es poden distingir. Si feu les taules ANOVA d’aquests quatre models, veureu que són idèntiques. El que sí que sembla clar és que els factors C i E no són importants.

Si treballem amb un enginyer que ens digui quin model és el “bo”, en podríem triar un. Si no és el cas, recomanem fer un disseny complet \(2^3\) amb els factors A, B i D. Recordeu que els dissenys complets poden distingir els quatre models que hem identificat com interessants perquè no tenen confusions.

Vernís

Creem la matriu de disseny i hi afegim la resposta

disseny2 = FrF2(nruns = 16, nfactors = 5,
                randomize = FALSE,
                factor.names = 
                  list(temp = c("150", "200"),
                       visco = c("1", "2"),
                       conc = c("20", "30"),
                       pres = c("2", "4"),
                       tipus = c("A", "B")))

resposta = c(55.5, 44.5, 42.0, 48.0,
             58.0, 46.0, 41.5, 48.5,
             48.0, 37.8, 32.9, 38.5,
             46.5, 38.5, 30.0, 39.0)

disseny2 = add.response(disseny2, resposta)

FrF2 només ens identifica confusions d’efectes principals amb interaccions de dues variables i confusions d’interaccions de dues variables entre elles. En aquest cas, no en troba cap, de confusió. Per tant, el disseny és de resolució V, com a mínim.

aliasprint(disseny2)
## $legend
## [1] A=temp  B=visco C=conc  D=pres  E=tipus
## 
## [[2]]
## [1] no aliasing among main effects and 2fis

Als dissenys de resolució V, hi ha interaccions de tres variables confoses amb interaccions de dues. Com que normalment ignorem les interaccions de tres variables (a no ser que tinguem motius molt bons per saber que existeixen), els dissenys de resolució V són, a efectes pràctics, com si fossin complets.

Fem un Daniel plot:

DanielPlot(disseny2)

Detectem la viscositat, la pressió i la seva interacció com a importants. Si fem una taula ANOVA, veurem que són significatives totes tres. Si fem un gràfic de mitjanes estimades (emmip), veurem que, si volem maximitzar l’adherència, hem de fixar la viscositat a 1 i la pressió a 2.

library(emmeans)
mod2 = aov(resposta ~ visco*pres, disseny2)
emmip(mod2, visco ~ pres)

Gelats

Creem la matriu de disseny i hi afegim la resposta

dis_gelat = FrF2(nruns = 8, nfactors = 4, 
                 randomize = FALSE)
resposta = c(29.63, 31.91, 33.02, 25.55,
             27.28, 32.35, 34.39, 24.72)

dis_gelat = add.response(dis_gelat, resposta)

És un disseny de resolució IV amb les següents confusions

aliasprint(dis_gelat)
## $legend
## [1] A=A B=B C=C D=D
## 
## $main
## character(0)
## 
## $fi2
## [1] AB=CD AC=BD AD=BC

Fem el Daniel plot:

DanielPlot(dis_gelat)

El gràfic identifica AB com a important. La interacció AB està confosa amb la interacció CD. L’enunciat ens diu que és poc probable que hi hagi una interacció entre temperatura de congelació (C) i el temps d’emmagatzematge (D). Per tant, ajustem el model amb AB i ens el creiem.

mod = aov(resposta ~ A*B, data = dis_gelat)

Mirant el gràfic de mitjanes estimades, recomanem fer els gelats amb llet sencera i a potència 500 W. Si volem continuar experimentant, podríem provar potències més altes.

emmip(mod, A ~ B)