さいしょに
この記事では、実験計画法について紹介しつつ、Rでやる方法について説明していきます。これまで、いくつか個別の手法について扱ってきましたが、ここでは比較的広いお話を書きます。
誰に向けているか
この記事は、実験計画法をやってみようと思ってもどこから手を付けたらいいのかな~え、Rでやるの~?という人に向けて作成しています。また、個別の手法をリンクとしてまとめるページとしても機能させる予定です。
実験計画法とは?
実験計画法とは、一言で書くと「実験を統計的なアプローチで効率良くやる方法」です。
現代では様々な産業で用いられています。私は製造業の人間なのですが、実際に特性の改善であったり収率の改善などに用いられています。
歴史は古く、統計学の父と呼ばれるフィッシャーが実験計画法を始めたと言われています。英語ではDesign of Experimentsと書かれ、その頭文字を取ってDoEと呼ばれる事が多いです。
フィッシャーは農業試験場にて、小麦などの農作物の収量を最大化するために、どの肥料をどれだけ投入すればよいか、どの品種が良いか、などを評価するために、実験計画法を考えたと言われています。
この手法の中で、反復 (Replication)、無作為化 (Randomization)、局所管理 (Local Control)という実験を進めるための原則を示しました。
このときの分析方法としては分散分析(ANOVA)そのものですが、現在では「実験を統計的なアプローチで効率良くやる」ために、どのようにモデルを設定し、どのように分析すれば「計画的に」実験を進めることが出来るか、という手法を指す言葉になっているように見えます。
なので、分散分析を発展させていったというより、もっと実務に寄せて良い感じのやり方を追求していったからなのか、やり方によっては「それも実験計画法の枠で語っていいんだ」と思ったりすることもあります。
実験計画法の実例
下のページを元に説明します。(CC BY 4.0なので図もコピーして使わせてもらいます。)
実験計画法とは、「様々な産業で用いられている」「実験を統計的なアプローチで効率良くやる方法」と上で書きましたが、このページでも同じような説明から入っています。
Design of experiments (DoE) is a statistical approach to process optimization that is used across a variety of industries.
下の図で説明してみます。x1とx2という変数があり、応答値は等高線で表されているとします。例えば応答値が収率であり、x1とx2はそれを決める因子(例えば、原料Aと原料Bの投入量)であり、収率が最大になるx1とx2を求めたい、とします。
このとき、人力で条件振りを行うと(a)のようになりやすいです。最初はx1を固定してx2を振り応答値が一番高いx2をメモします。次に先ほど一番高かったx2で固定してx1を振り、応答値が最も高いところを最終条件とするやり方です。この方法では、たいてい最も高いところにたどり着くことが出来ません。
というので実験計画法というアプローチがあります。一般的には因子を振った時の挙動を等高線として取得し、一番高いところを選択する、という流れになります。実験計画法にも様々な方法がありますが、この記事では因子のスクリーニング(b)を行ったのちに、応答曲面法という手法で最適化(d)を行っています。(cが無いのは単純に採番ミスのようです)(d)の評価にて等高線を作成できるので、等高線の一番高いところを最終条件とする、という手順となります。
ここでの(b)がこの記事と、(d)がこの記事と対応していますので、細かいところはそちらで書いていきます。
この方法だと、「この方法で評価する」と決めた時点である程度実験のボリュームを見積もれるので、実験を計画的に進められる、となります。
とは言え、実際のところは等高線の頂点がスクリーニングの外にあったりして2週目、3週目に入る事もあったりしますが、、、それはそれとして遅延しても見積もれるのが良いところです。
why R?
Rを用いる利点ですが、まずCUIである事が挙げられます。
宋さんがここで書かれているとおり、CUIであることには様々なメリットがあります。改めてここで書くのであれば、実験というのはほかの人がやっても再現できる事が重要なので、手続きをキッチリ残し共有しやすいCUIのほうが向いていると言えます。さらに、今であればCUIのほうがAIに質問しやすいというのもありますね。
とは言え、CUIを覚えるのはしんどいのもわかります。Rコマンダーに実験計画法のプラグインがあるので、それを用いるのも手だと思います。(Rコマンダーは操作したスクリプトを残せますし、良い折衷案のように思うので、いつか記事にするかも)
さらには様々なライブラリが存在している点です。
私は正直言って読み切れていませんが、以下のページのように一般的な用途のライブラリから、農業向け製造業向けのようなジャンル別にも整理されています。たいていの手法であればすでにライブラリが準備されているのです。
また、このようなところ参考にすれば、数学的なところからRコードまで紹介されていたりしますので、理解の助けにもなるでしょう。
一方で、GUIで実験計画法を行う高価なソフトウェアというのが市場にあります。しかし高価なソフトウェアが必要になると、そのソフトウェアを持っている人しか手順を共有できないことになってしまいますし、GUIですので俗人化しやすいという欠陥があります。(やった人に聞かないと、どういう処理をどういう順番で行ったか、という事がわからない)
その点Rは無料であり、コードを共有するための機能が充実しており、実験計画法のライブラリについても非常に充実しているわけです。
Rで実験計画法を行う最大のハードルは、日本語で書かれたページが少ない点かと思います。関連ページにいくつか挙げてはおきますが、それでも片手で数えられる程度です。少ないなら作っておくか~~というモチベーションで、記事を充実していこうかなと思っています。
自分が書いたページ
これまで、スクリーニングと応答曲面法をRで行う記事を書きました。ここにまとめていきます。
Rの実験計画法で参考になるページ
