本ページは 実験計画法(Design of Experiments)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
実験計画法(Design of Experiments, DoE)は、 Ronald Fisher が農学実験の効率化のために生み出した分野。 現在では 製薬の臨床試験、 半導体の歩留まり改善、 Web の A/B テストなど、 あらゆる「実験」の根幹技術です。 統計的検定(ANOVA, t検定)と密接に結びついています。
Fisher の 3 原則:
| 原則 | 目的 | 方法 |
|---|---|---|
| ランダム化 | 系統的偏りを排除 | 処置をランダムに割り当てる |
| 反復 | 誤差を推定可能に | 同条件を複数回 |
| 局所管理 | 環境変動を除く | 類似条件をブロックに |
例:肥料 A, B, C を比較したい場合 ─ 田んぼを 3 つに分けて適用するのではなく、 各田んぼ内でランダムに小区画に割り当て、 反復して測定。 こうすれば「田んぼの差」と「肥料の差」が分離できます。
因子が多い場合は 直交配列表で組合せ爆発を抑制。 「8 因子各 2 水準なら $2^8 = 256$ 通り」を 8 通りで済ませる魔法のような技。
因子設計の分散分析モデル:
例:3 因子 2 水準の完全実施 vs 直交配列:
| 方法 | 実験数 | 推定可能な効果 |
|---|---|---|
| 完全実施 $2^3$ | 8 | 主効果 + すべての交互作用 |
| $L_4$(半分実施) | 4 | 主効果のみ(交互作用は交絡) |
| $L_8$ 直交配列 | 8 | 主効果 + 2因子交互作用 |
因子が増えると(例:7 因子 2 水準)、 完全実施は $2^7 = 128$ 実験。 $L_8$ で 8 実験に圧縮可能(主効果のみ)。
最小コードで動かしてみる例:
1 2 3 4 5 6 7 8 9 10 | import pandas as pd import statsmodels.api as sm from statsmodels.formula.api import ols # 二元配置 ANOVA df = pd.read_csv('data/raw/experiment.csv') model = ols('収量 ~ C(肥料) + C(品種) + C(肥料):C(品種)', data=df).fit() anova_table = sm.stats.anova_lm(model, typ=2) print(anova_table) |