0

I have a design matrix with 18 runs. A and B are three-level categorical variables (low, mid , high and small, medium and large), and C is a two-level categorical variable (male, female). Here's an example

| runs   | low | mid | small | medium | male |
|--------|-----|-----|-------|--------|------|
| run 1  | 1   | -1  | 1     | -1     | 1    |
| run 2  | 1   | -1  | 1     | -1     | -1   |
| run 3  | 1   | -1  | -1    | 1      | 1    |
| run 4  | 1   | -1  | -1    | 1      | -1   |
| run 5  | 1   | -1  | -1    | -1     | 1    |
| run 6  | 1   | -1  | -1    | -1     | -1   |
| run 7  | -1  | 1   | 1     | -1     | 1    |
| run 8  | -1  | 1   | 1     | -1     | -1   |
| run 9  | -1  | 1   | -1    | 1      | 1    |
| run 10 | -1  | 1   | -1    | 1      | -1   |
| run 11 | -1  | 1   | -1    | -1     | 1    |
| run 12 | -1  | 1   | -1    | -1     | -1   |
| run 13 | -1  | -1  | 1     | -1     | 1    |
| run 14 | -1  | -1  | 1     | -1     | -1   |
| run 15 | -1  | -1  | -1    | 1      | 1    |
| run 16 | -1  | -1  | -1    | 1      | -1   |
| run 17 | -1  | -1  | -1    | -1     | 1    |
| run 18 | -1  | -1  | -1    | -1     | -1   |

Is it possible to select runs for a fractional design based on this matrix or is there an algorithm that would allow me to do it for more complex setups?

  • There are algorithms, maybe look for D-optimal designs. See https://stats.stackexchange.com/questions/176359/2k-3l-factorial-design, https://stats.stackexchange.com/questions/213886/expanding-an-experimental-design/491109#491109 and search this site! – kjetil b halvorsen Dec 06 '21 at 22:11

1 Answers1

0

You could use algorithms for optimal experimental design. Below I give an example, using R.

library(AlgDesign)   # on CRAN

full <- gen.factorial(levels=c(3, 3, 2), 
                       factors="all", 
                      varNames=c("A",  "B", "Sex"))

 full
   A B Sex
1  1 1   1
2  2 1   1
3  3 1   1
4  1 2   1
5  2 2   1
6  3 2   1
7  1 3   1
8  2 3   1
9  3 3   1
10 1 1   2
11 2 1   2
12 3 1   2
13 1 2   2
14 2 2   2
15 3 2   2
16 1 3   2
17 2 3   2
18 3 3   2

frac.D <- optFederov(  ~ A + B + Sex,
                     data=full,
                     nTrials=9,  criterion="D")

This makes for a D-optimal half fraction, assuming a linear model without interactions. You can try with first argument ~ (A + B + Sex)^2 for an optimal fraction assuming a model with interactions. We can list the generated design with

 frac.D
$D
[1] 0.2594239

$A
[1] 5.666667

$Ge
[1] 0.857

$Dea
[1] 0.846

$design
   A B Sex
2  2 1   1
3  3 1   1
4  1 2   1
5  2 2   1
7  1 3   1
9  3 3   1
10 1 1   2
15 3 2   2
17 2 3   2

$rows
[1]  2  3  4  5  7  9 10 15 17
```
or make a fuller evaluation with
```r
eval.design(  ~ A + B + Sex,,
        design=frac.D$design,
            confounding=TRUE,
            variances=TRUE,
            X=full)
. + $confounding
               [,1] [,2] [,3] [,4] [,5]    [,6]
(Intercept) -1.0000  0.5  0.5  0.5  0.5  0.3333
A2           0.5455 -1.0 -0.5  0.0  0.0  0.0000
A3           0.5455 -0.5 -1.0  0.0  0.0  0.0000
B2           0.5455  0.0  0.0 -1.0 -0.5  0.0000
B3           0.5455  0.0  0.0 -0.5 -1.0  0.0000
Sex2         0.2727  0.0  0.0  0.0  0.0 -1.0000

$determinant
[1] 0.2594239

$A
[1] 5.666667

$I
[1] 6.25

$Geff
[1] 0.857

$Deffbound
[1] 0.846

$diagonality
[1] 0.836

$gmean.variances
[1] 5.664525

ÀlgDesign` comes with a vignette you should study! Also have a look at the CRAN Task View.

Other helpful posts:

kjetil b halvorsen
  • 63,378
  • 26
  • 142
  • 467