はじめよう実験計画

実験を早く終わらせるための技術

Rによる実験計画法

Rによる実験計画一覧です。参照元はこちらです。

cran.r-project.org

 

要因配置計画

パッケージFrF2の関数FrF2を使用。nrunsに2のnfactors乗の値を指定する。

> library(FrF2)
> #要因配置計画
> FrF2(nruns=16,nfactors=4, randomize=F)
creating full factorial with 16 runs ...

    A  B  C  D
1  -1 -1 -1 -1
2   1 -1 -1 -1
3  -1  1 -1 -1
4   1  1 -1 -1
5  -1 -1  1 -1
6   1 -1  1 -1
7  -1  1  1 -1
8   1  1  1 -1
9  -1 -1 -1  1
10  1 -1 -1  1
11 -1  1 -1  1
12  1  1 -1  1
13 -1 -1  1  1
14  1 -1  1  1
15 -1  1  1  1
16  1  1  1  1
class=design, type= full factorial 

一部実施要因配置計画

パッケージFrF2の関数FrF2を使用。nrunsに2のnfactors乗の半分、4分の1などの値を指定する。

> #一部実施要因配置計画
> library(FrF2)
> FrF2(nrun=8,nfactors=4, randomize=F)
   A  B  C  D
1 -1 -1 -1 -1
2  1 -1 -1  1
3 -1  1 -1  1
4  1  1 -1 -1
5 -1 -1  1  1
6  1 -1  1 -1
7 -1  1  1 -1
8  1  1  1  1
class=design, type= FrF2 

 

Plackett-Burmann(プラケット-バーマン)計画

> #12試行11要因のPlackett-Burmann計画
> library(FrF2)
> pb(nruns = 12) A B C D E F G H J K L 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 2 1 -1 -1 -1 1 -1 1 1 -1 1 1 3 -1 -1 -1 1 -1 1 1 -1 1 1 1 4 1 1 1 -1 -1 -1 1 -1 1 1 -1 5 1 1 -1 -1 -1 1 -1 1 1 -1 1 6 -1 1 1 -1 1 1 1 -1 -1 -1 1 7 1 1 -1 1 1 1 -1 -1 -1 1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 9 -1 1 -1 1 1 -1 1 1 1 -1 -1 10 -1 -1 1 -1 1 1 -1 1 1 1 -1 11 1 -1 1 1 -1 1 1 1 -1 -1 -1 12 1 -1 1 1 1 -1 -1 -1 1 -1 1 class=design, type= pb

 

分割法

パッケージFrF2の関数FrF2を使用。分割法なので、repplications(反復)に2以上を設定する。hardにはWhole-plot要因の数を指定する。factorの先頭からhard個の要因がWhole-plotとなる。分割法についてはこちら。

sturgeon.hatenablog.com

 

Central Composite Design(中心複合計画)

> library(rsm)
>
ccd(basis = 4, randomize = F) run.order std.order x1.as.is x2.as.is x3.as.is x4.as.is Block 1 1 1 -1.00000 -1.00000 -1.00000 -1.00000 1 2 2 2 1.00000 -1.00000 -1.00000 -1.00000 1 3 3 3 -1.00000 1.00000 -1.00000 -1.00000 1 4 4 4 1.00000 1.00000 -1.00000 -1.00000 1 5 5 5 -1.00000 -1.00000 1.00000 -1.00000 1 6 6 6 1.00000 -1.00000 1.00000 -1.00000 1 7 7 7 -1.00000 1.00000 1.00000 -1.00000 1 8 8 8 1.00000 1.00000 1.00000 -1.00000 1 9 9 9 -1.00000 -1.00000 -1.00000 1.00000 1 10 10 10 1.00000 -1.00000 -1.00000 1.00000 1 11 11 11 -1.00000 1.00000 -1.00000 1.00000 1 12 12 12 1.00000 1.00000 -1.00000 1.00000 1 13 13 13 -1.00000 -1.00000 1.00000 1.00000 1 14 14 14 1.00000 -1.00000 1.00000 1.00000 1 15 15 15 -1.00000 1.00000 1.00000 1.00000 1 16 16 16 1.00000 1.00000 1.00000 1.00000 1 17 17 17 0.00000 0.00000 0.00000 0.00000 1 18 18 18 0.00000 0.00000 0.00000 0.00000 1 19 19 19 0.00000 0.00000 0.00000 0.00000 1 20 20 20 0.00000 0.00000 0.00000 0.00000 1 21 1 1 -2.19089 0.00000 0.00000 0.00000 2 22 2 2 2.19089 0.00000 0.00000 0.00000 2 23 3 3 0.00000 -2.19089 0.00000 0.00000 2 24 4 4 0.00000 2.19089 0.00000 0.00000 2 25 5 5 0.00000 0.00000 -2.19089 0.00000 2 26 6 6 0.00000 0.00000 2.19089 0.00000 2 27 7 7 0.00000 0.00000 0.00000 -2.19089 2 28 8 8 0.00000 0.00000 0.00000 2.19089 2 29 9 9 0.00000 0.00000 0.00000 0.00000 2 30 10 10 0.00000 0.00000 0.00000 0.00000 2 31 11 11 0.00000 0.00000 0.00000 0.00000 2 32 12 12 0.00000 0.00000 0.00000 0.00000 2

 

Box-Behnken(ボックス-ベンケン)計画

> library(rsm)
> bbd(k=4, randomize = F)
   run.order std.order Block x1.as.is x2.as.is x3.as.is x4.as.is
1          1         1     1       -1       -1        0        0
2          2         2     1        1       -1        0        0
3          3         3     1       -1        1        0        0
4          4         4     1        1        1        0        0
5          5         5     1        0        0       -1       -1
6          6         6     1        0        0        1       -1
7          7         7     1        0        0       -1        1
8          8         8     1        0        0        1        1
9          9         9     1        0        0        0        0
10        10        10     1        0        0        0        0
11        11        11     1        0        0        0        0
12        12        12     1        0        0        0        0
13        13        13     2       -1        0        0       -1
14        14        14     2        1        0        0       -1
15        15        15     2       -1        0        0        1
16        16        16     2        1        0        0        1
17        17        17     2        0       -1       -1        0
18        18        18     2        0        1       -1        0
19        19        19     2        0       -1        1        0
20        20        20     2        0        1        1        0
21        21        21     2        0        0        0        0
22        22        22     2        0        0        0        0
23        23        23     2        0        0        0        0
24        24        24     2        0        0        0        0
25        25        25     3       -1        0       -1        0
26        26        26     3        1        0       -1        0
27        27        27     3       -1        0        1        0
28        28        28     3        1        0        1        0
29        29        29     3        0       -1        0       -1
30        30        30     3        0        1        0       -1
31        31        31     3        0       -1        0        1
32        32        32     3        0        1        0        1
33        33        33     3        0        0        0        0
34        34        34     3        0        0        0        0
35        35        35     3        0        0        0        0
36        36        36     3        0        0        0        0

 

Definitive Screening Design(決定的スクリーニング計画)

詳しくはこちらの記事をどうぞ。

sturgeon.hatenablog.com

> library(daewr)#DSDのためのパッケージ
> DefScreen(m=8, c=0)
    A  B  C  D  E  F  G  H
1   0 -1  1  1 -1  1  1  1
2   0  1 -1 -1  1 -1 -1 -1
3  -1  0 -1  1  1  1  1 -1
4   1  0  1 -1 -1 -1 -1  1
5  -1 -1  0  1  1 -1 -1  1
6   1  1  0 -1 -1  1  1 -1
7   1 -1  1  0  1  1 -1 -1
8  -1  1 -1  0 -1 -1  1  1
9  -1 -1  1 -1  0 -1  1 -1
10  1  1 -1  1  0  1 -1  1
11  1 -1 -1 -1  1  0  1  1
12 -1  1  1  1 -1  0 -1 -1
13 -1  1  1 -1  1  1  0  1
14  1 -1 -1  1 -1 -1  0 -1
15  1  1  1  1  1 -1  1  0
16 -1 -1 -1 -1 -1  1 -1  0
17  0  0  0  0  0  0  0  0

 

D最適計画

パッケージAlgDesignのoptFederovを使用。D最適計画は候補点から指定した数の条件を抜き出すため、事前に候補となる条件群を設定してやる必要がある。

詳しくはこちらの記事をどうぞ。

sturgeon.hatenablog.com

> library(AlgDesign)
> A <- c(-1,0,1)
> candidate <- expand.grid(A,A,A,A)
> #条件の候補(一部抜粋)
> candidate[1:5,]
  Var1 Var2 Var3 Var4
1   -1   -1   -1   -1
2    0   -1   -1   -1
3    1   -1   -1   -1
4   -1    0   -1   -1
5    0    0   -1   -1
> #D最適計画の選択。ここでは2次モデルquad(.)に対する最適計画を求める。
> optFederov(~quad(.), candidate, nTrials=22, criterion = "D", nRepeats = 10)
$D
[1] 0.4705411

$A
[1] 4.113712

$Ge
[1] 0.731

$Dea
[1] 0.692

$design
   Var1 Var2 Var3 Var4
1    -1   -1   -1   -1
3     1   -1   -1   -1
8     0    1   -1   -1
13   -1    0    0   -1
18    1    1    0   -1
19   -1   -1    1   -1
21    1   -1    1   -1
25   -1    1    1   -1
27    1    1    1   -1
33    1    0   -1    0
34   -1    1   -1    0
37   -1   -1    0    0
50    0    0    1    0
56    0   -1   -1    1
57    1   -1   -1    1
58   -1    0   -1    1
63    1    1   -1    1
71    0    1    0    1
73   -1   -1    1    1
75    1   -1    1    1
79   -1    1    1    1
81    1    1    1    1

$rows #候補のうち、D最適計画を構成する条件の行番号
 [1]  1  3  8 13 18 19 21 25 27 33 34 37 50 56 57 58 63 71 73 75 79 81