
R の実験計画用パッケージを探してみたら、いろいろなパッケージが利用できるようでビックリです 1。常日頃から情報収集のアンテナをしっかり張っておけば良かったと反省しました。
中でも AlgDesign - Algorithmic Experimental Design は、D-, A-, I-最適計画 (Optimal Design 2) を生成する機能があるとのことで、個人的に大いに興味を持ちました。なぜなら、最適計画を RSM(応答曲面法)に活用した、エンジニアリングのための実験計画/解析ツールを作りたい、それが自分がコンピュータのプログラミングに取り組む最も基本的なモチベーションになっているからです。
以前、このブログの記事で [3] のような記事を書いたのもその一環でした。その当時は D-optimal を生成するルーチン作成については目処が立っていたので、手こずりそうな Contour Map(等高線図)の作成に手を付けたのですが、R が利用できるとなれば話は別です。遅々として進まない Project Ammonite [4] のコアとなる計算部分を R に任せられるのであれば、GUI の部分を再検討し、一気にそこそこ動作するぐらいまで進められそうです。
AlgDesign は、Fedora の RPM パッケージでは提供されていないので、install.packages("AlgDesign") でインストールしました。マニュアルの optFederov コマンドに記載されていた例を参考にして、3 水準 4 因子、二次モデル、16 回の実験について、D-optimal, A-optimal, I-optimal それぞれの計画を作成してみました。
> library("AlgDesign")
> dat <- gen.factorial(3, 4, varNames = c("A", "B", "C", "D"))
> dat
A B C D
1 -1 -1 -1 -1
2 0 -1 -1 -1
3 1 -1 -1 -1
...
(途中省略)
...
79 -1 1 1 1
80 0 1 1 1
81 1 1 1 1
> desD <- optFederov(~quad(A, B, C, D), dat, nTrials=16, eval=TRUE)
> desD
$D
[1] 0.4307032
$A
[1] 4.821205
$I
[1] 19.77447
$Ge
[1] 0.524
$Dea
[1] 0.404
$design
A B C D
1 -1 -1 -1 -1
8 0 1 -1 -1
9 1 1 -1 -1
13 -1 0 0 -1
21 1 -1 1 -1
25 -1 1 1 -1
30 1 -1 -1 0
34 -1 1 -1 0
38 0 -1 0 0
46 -1 -1 1 0
50 0 0 1 0
54 1 1 1 0
55 -1 -1 -1 1
63 1 1 -1 1
75 1 -1 1 1
79 -1 1 1 1
$rows
[1] 1 8 9 13 21 25 30 34 38 46 50 54 55 63 75 79
> desA <- optFederov(~quad(.), dat, nTrials=16, eval=TRUE, crit="A")
> desA
$D
[1] 0.4038767
$A
[1] 3.930381
$I
[1] 18.78988
$Ge
[1] 0.418
$Dea
[1] 0.249
$design
A B C D
1 -1 -1 -1 -1
6 1 0 -1 -1
7 -1 1 -1 -1
13 -1 0 0 -1
21 1 -1 1 -1
26 0 1 1 -1
31 -1 0 -1 0
38 0 -1 0 0
41 0 0 0 0
45 1 1 0 0
46 -1 -1 1 0
57 1 -1 -1 1
62 0 1 -1 1
64 -1 -1 0 1
78 1 0 1 1
79 -1 1 1 1
$rows
[1] 1 6 7 13 21 26 31 38 41 45 46 57 62 64 78 79
> desI <- optFederov(~quad(.), dat, nTrials=16, eval=TRUE, crit="I")
> desI
$D
[1] 0.4239604
$A
[1] 4.373075
$I
[1] 18.55387
$Ge
[1] 0.367
$Dea
[1] 0.178
$design
A B C D
4 -1 0 -1 -1
9 1 1 -1 -1
11 0 -1 0 -1
19 -1 -1 1 -1
24 1 0 1 -1
25 -1 1 1 -1
30 1 -1 -1 0
43 -1 1 0 0
50 0 0 1 0
55 -1 -1 -1 1
59 0 0 -1 1
61 -1 1 -1 1
69 1 0 0 1
75 1 -1 1 1
76 -1 0 1 1
81 1 1 1 1
$rows
[1] 4 9 11 19 24 25 30 43 50 55 59 61 69 75 76 81
>
例として full-factorial で候補の条件行列を用意しておいて、そこから最適な組み合わせを、それぞれの基準で探索したのですが、呆気ないぐらい即座に計算結果が返ってきます。
実験計画/解析ツールを作るのであれば、このパッケージを利用しない手はありません。いや R をコアに据えるのであれば、もう必要な機能は全て揃っています。あとはどんな GUI を用意するかが、どれだけ多くのユーザーに使ってもらえるツールになるかを左右するといっても過言ではありません。あまりにも突然、長年欲しかった機能を備えたパッケージに巡り会えてしまいました。
(冷静になって、これからの取り組み方を考える必要があるので)さしあたって、AlgDesign の Fedora 用 RPM パッケージを作りながら、どういう計算をしているのか調べてみようと思います。
- CRAN Task View: Design of Experiments (DoE) & Analysis of Experimental Data
- Optimal design - Wikipedia, the free encyclopedia
- bitWalk's: Contour Map - 5 月連休の成果
- bitWalk's: 【備忘録】JavaFX で複数のウィンドウを扱う
RSM について、参考になるようなスライドがないか探しましたが、解析に RSM を利用していた論文しかありませんでした。
JMP による DOE (RSM) の説明です。
こちらは SAS Institute 社による JMP 11 / DOE (RSM) のプレゼンテーションです (Discovery Summit 2013, Sept 9 - 13 at Grand Hyatt San Antonio)。

0 件のコメント:
コメントを投稿