実験計画法(DOE)の計画と実行は、複数の専門家が関わる複雑な作業になりがちです。実験後も、結果の分析、解釈、そして伝達という課題は依然として残り、特に関係者の専門知識レベルにばらつきがある場合はなおさらです。このプロセスを効率化し、ワークフローを標準化するために、DOEの結果を自動的に視覚化するスクリプトを開発しました。このスクリプトは、結果を効果的に伝える2つの直感的なグラフを生成します。
最初のグラフは、各対象変数の全体的な変動性を示しており、DOEに基づいて各変数がどの程度影響を受けるかを示しています。2番目のグラフは、入力変数の変化に対する対象変数の感度をまとめたものです。
当社のスクリプトは柔軟性を重視して設計されており、必要に応じて新しい計算を追加したり、グラフを正規化したりできます。このツールによって効率が大幅に向上し、手作業による方法と比較してグラフ1つあたり約2時間を削減できました。さらに、標準化された可視化形式により、技術に詳しくない関係者とのコミュニケーションが促進され、DOEの結果がよりアクセスしやすく、理解しやすくなりました。
NNEでは、多くのお客様の実験計画法(DoE)の実施を様々な目的でサポートしています。例えば、ロバスト性試験、プロセス改善、バリデーションなどです。私たちが頻繁に直面する大きな課題の一つは、結果をステークホルダーに伝えることです。課題は様々ですが、ステークホルダーの中には、私たちほど統計学や数学に精通していない方もいらっしゃるかもしれません。
場合によっては、ちょっとした数学恐怖症が原因かもしれません。JMPのインターフェースに慣れていない人も多いので、少し怖気づいてしまうかもしれませんし、作成したモデルの複雑さゆえに分析や理解が難しい場合もあります。
もう一つの大きな問題は、私たちの分析の一部にかなりの時間と労力がかかることです。分析作業は少し退屈になることもあります。退屈になると間違いも起こりやすく、それは良くありません。
私たちがやりたかったのは、素早く簡単にグラフを作成できる方法を作ることでした。関係者に提示し、結果を伝えることができるように。グラフは自動的に作成されるため、エラーが少なく、結果を待つ時間があまりかからないため、高速である必要があります。私たちは多くのモデルを扱っているので、多くのモデルに対応できる必要があります。
グラフは以前に作成済みです。それでもかなり時間がかかりました。基本的には2つのグラフを作成しました。1つは結果の範囲を視覚化するもので、もう1つはDoEで使用する変数に対する結果の感度を視覚化するものです。
私たちは分析を自動化する方法を見つけました。モデルを Python にエクスポートし、いくつかのグローバル最適化問題を解決し、結果を JMP で視覚化し、比較できるようにそこで結果を正規化することで、必要な計算を実行します。
ここにグラフの一つがあります。これが私たちが作成したグラフです。これは範囲プロットです。ここに感度プロットがあります。範囲プロットについては、小さな例を作成しました。データは大豆の栽培品種、様々な種類の大豆から取得しており、これを用いて収穫量をモデル化し、このグラフを作成しました。
このグラフを作成するプロセスをご紹介します。非常にシンプルです。ここにデータがあります。そして、何らかの方法でモデルを作成しました。ここにカンマが表示されます。ツールから小さなボタンを押すだけで実行されます。モデルによっては、特に名義変数に多くの水準がある場合、少し負荷がかかることがあります。それぞれの組み合わせについてグローバル最適化問題を解く必要がありますが、大規模なケースでもかなり速く結果が得られます。
結果はこちらです。20秒ほどかかりました。ここから、必要なグラフをプロットできます。基本的にはグラフが作成されますが、必要に応じてカスタマイズできます。一部の変数は分析のみに使用します。これで、ほぼ瞬時にグラフが作成され、必要な情報を確認でき、関係者への伝達も容易になります。
例えば、このデータセットでは、季節に応じて最適な作物を見つけたいとします。ここに表示されている点は名目値です。これは、作物を使用し、他のすべての設定を中央値に設定した場合に得られる収量です。範囲、つまりバーは、値が取り得る範囲を示しています。
この作物の場合、値は4,700から4,000程度まで変動します。点線は管理限界、つまり公称標準偏差プラスマイナス自由標準偏差、そしてこの場合は目標限界と規格限界です。シーズン1では、すぐに3つか4つの候補が見つかり、それらは限界内に十分収まっており、ほぼ目標値と一致しているものも1つあります。
これをシーズン2に適用すると、全体的には少し低くなりますが、それでも使えるものがいくつか見つかります。これはそのユースケースの一つです。これですべて閉じることができます。もう一つ、これは出力変数が1つしかないからです。
もう1つのケースは、複数の出力があり、それらの出力は異なるスケールを持つことができるというものです。ここに別の例があります。これはシミュレーションデータですが、実際の例に基づいています。分析したい製品がありました。それは製造された製品でした。多くの寸法が測定され、どの寸法が結果に最も重要かを調べたいと考えました。
ここでは説明変数が2つと次元が5つあり、それぞれスケールが異なります。これは省略できます。モデルをもう一度実行してみましょう。プロットには5秒ほどかかり、結果はすぐに得られます。また、スケールが異なることによる問題もすぐに分かります。単に表示しようとすると、次元4が他の次元よりもはるかに大きいため、そのダイナミクスしか見えません。スケールを変更することもできますが、同じ問題が発生する可能性があります。次元1と2は次元3よりも大きいため、一度に1つか2つしか見えません。
代わりに、プロットを何らかの方法で正規化します。例えば、ここで目標値に正規化できます。ここでは、変数をここに配置します。これで正規化されたので、目標値は常に0、上限仕様限界は1、下限仕様限界は-1になります。これで、次元3で2を設定した場合、常に仕様外になることがすぐにわかります。
寸法1と寸法2はどちらも、仕様限界と比較してそれほど大きな変動がないことがわかります。セットアップ2では、寸法2は入力変数によって大きく変動する可能性があります。このセットアップでは、温度をかなり厳密に制御する必要があります。
これは目標とする仕様限界がある場合に機能します。それがない場合は、他の方法があります。切片と仕様限界に正規化された別の方法もあります。具体的な目標値がない場合は、仕様限界内に収まっていることを確認したいだけなので、ここではそれを正規化しています。最後に、切片の標準偏差に正規化された方法もあります。これは常に機能しますが、スケールが異なるという問題が発生する可能性があります。
たとえば、ここでは、次元 4 は残差分散に比べてかなり大きいのに対し、次元 1 は残差分散に比べて仕様限界がそれほど大きくないことがわかります。
最後に、値がどのような値を取るかだけでなく、これらの結果変数をどのように制御したいかにも興味があるかもしれません。ここには別のデータセットがあります。これは、年齢、身長、体重、性別などの関数として消費カロリーのデータです。つまり、どれくらいのカロリーを消費できるかを知りたいのです。
データセットとモデルはここにあります。ボタンを押してください。数秒でグラフが表示されます。ここでは感度をプロットしています。感度とは何でしょうか?これは、名義変数の設定と各連続変数に応じて、結果変数がどれだけ変化するかを示しています。
例えば、私の場合、運動を1分長くすると、約5.5カロリー多く消費すると予想されます。運動強度を上げて心拍数を1つ上げると、消費カロリーは約2.5カロリー増加します。
モデル内の他の変数は、実用上はそれほど大きな影響を与えないかもしれません。年齢はそれほど重要ではないかもしれませんし、体重もそれほど重要ではないかもしれません。しかし、もちろん、これは変数のスケールには依存しません。もし心拍数を持続時間よりも大きく変化させることができれば、それでも大きな影響を与える可能性があります。
正規化する別の方法としては、勾配と感度を取り、それを範囲の大きさで乗算する方法があります。心拍数をどれだけ変化させることができるか、そして持続時間をどれだけ変化させることができるかです。
ここでは、以前は心拍数がそれほど影響していなかったことがわかります。しかし、心拍数の変化は運動時間よりも大きいため、心拍数が消費カロリーに同じくらい大きな影響を与える可能性があることがわかります。
また、期間中だけでも、ほぼより多くのカロリーを消費できることが分かります。より激しい運動をすれば、約60カロリー多く消費できると予想されます。体重や年齢がどれだけ変化するかが実際に分かります。これは、これまで個人レベルでの推定効果では見えなかった、実際的な影響があるかもしれません。
さて、これですべて閉じます。最初に戻ってみましょう。私たちが目指したのは、実験を分析する自動化手法を作ることでした。今では、実際に動作する手法が完成しました。比較的高速で、グラフの見た目に合わせてカスタマイズできます。以上です。