富士フイルム・ダイオシンス・バイオテクノロジーズは、プロセス特性評価(PCS)に特化した専任のプロセス特性評価部門を有する受託開発製造機関(CDMO)です。PCSの目的は、お客様のプロセスがパラメータ設定や通常の動作範囲の変化に対して堅牢であることを証明することです。
PCSでは、プロセス入力が品質特性(QA)およびプロセス性能指標(PPI)に与える影響を調査するために、実験計画法(DOE)が一般的に用いられます。DOE分析は、QA/PPIに影響を与える入力を特定するための有用なツールですが、主に定量的な分析です。
従来のDOE分析に加えて、各入力項目の影響比(IR)を計算することで、定量的および定性的な評価が可能になり、パラメータの重要性を判断するのに役立ちます。IRは、許容範囲に関連する効果量の測定値を提供します。
手作業での計算は時間がかかり、ミスが発生しやすくなります。DOEモデルから必要な情報を抽出し、IRを計算する自動化ツールをご紹介します。インターフェースにより、ユーザーは結果の計算方法をカスタマイズできます。
皆さん、こんにちは。今日は同僚のサムと一緒にこうしてお話できて本当に嬉しいです。今日は影響度比についてお話します。つまり、DoE因子がDoEの出力や反応にどのような影響を与えるのかということです。まずはJMPの概念、計算方法、そして例をご紹介した後、サムにバトンタッチします。サムがJSLを使って実際にプロセスを自動化する方法と、アドインでどのように実現したかを実演します。
まず最初に告白します。本当はこの講演のタイトルを「プロセス特性評価科学者とNASAの科学者の共通点とは何か?」にしたかったのですが、関連性が薄すぎて、少し難解な表現になってしまったかもしれません。それでも、ここでもこれらの概念を使うことにしました。最初のスライドに流星の写真があるのはそのためです。これは私の比喩です。衝突クレーターを見て、衝突比と比較しているのは、少し楽しむためです。
ここでは何が起こっているのでしょうか?非常によく似た隕石が地球、火星、あるいは月に落下する可能性があり、状況はそれぞれ異なります。まず、大気の有無、ごくわずかな大気の有無、あるいは全く大気がない状態です。これが爆発の様相を変え、隕石の挙動も変化させます。地球上では、衝突によって形成されるクレーターが、周囲の状況に非常に大きな影響を及ぼす可能性があります。なぜなら、地球には人々が暮らしているからです。
これを念頭に置いて、今日は何を学んでいくのでしょうか?もう一つの統計的比率を見てみましょう。統計学者は比率を好みます。次に、影響度比率が具体的に何を測定しているのかを見ていきます。そして、「これはJMPで計算できますか?」という疑問に答えます。答えは、もちろん可能です。そして、いくつかの方法があります。面倒な手作業で行うこともできますが、ここでは手順を説明します。時間がないのでこのステップは省略しますが、表管理を少し簡単にするためのワークフローを作成しました。
それでは、サムにバトンタッチします。サムはJMPアドインをクリックして影響度を計算する便利な方法を紹介します。ここには、管理図という統計学者の世界ではよく使われる図なので、皆さんもきっと何度も目にしたことがあるであろう、私が自分で描いた下手な手描きの図があります。ここに出力があり、例えばバッチを作成するにつれて、時間の経過とともに変化していく様子が分かります。
このチャートにはゾーンがあります。青紫色のゾーンは、出力がどこに収まるかを示しています。これは正規分布のデータなので、時間の経過とともにどこに収まるかを予測できます。ここには、この青いゾーンがどの程度広がるかを予測する統計データがあります。そして、2つの仕様の間の緑色のゾーンは、顧客タイプの安全ゾーンです。顧客から仕様が提供される場合もあれば、開発作業から受け入れ基準を算出する場合もあります。
私たちが目指すのは、プロセス制御を行う際に、プロセスが安全ゾーンに完全に収まっていることを確認することです。このために使用される比率の一つが能力指数(CPK)です。これはCPKやPPKと同様に、基本的にこのゾーンとこの緑色のゾーンの比率です。これは私が見つけた影響比率に最も似ています。ここにはほぼ同じグラフがあります。同じ図を再利用しているのがお分かりいただけると思います。ここでの唯一の違いは、今回はデータの広がりを予測する統計ではなく、データの形状を予測する統計を使用していることです。入力を変更し、その値を低から高に変化させたときに、特定の出力に何が起こるかをモデル化しています。
これは、DoE(実験計画法)を実施し、運転条件を体系的に変更する場合に行う手順です。特にプロセス特性評価においては、この下限から上限までの値は、許容範囲であると証明したい値となります。ここでは最終的に式が示され、青色のゾーンは応答の予測最小値から最大値です。さらに緑色のゾーンは、プロセス終了時に高品質な製品を得るために許容される範囲です。
逸脱が安全エリアまたは遊び場の許容可能な割合を占めているかどうかを再度確認しています。この影響比は、すべての要因について同様のモデルが得られるため、様々な要因の影響を比較するのに役立ちます。また、これがDoEの一部である場合、これらの要因を分類するための基準にもなります。この影響比は実際には何を測定しているのでしょうか?前のスライドでヒントがありましたが、隕石の話に戻りましょう。
NASAの科学者たちは2つのことを計算しました。隕石が地球に衝突する場所と、衝突クレーターの半径です。彼らは、この緑色の安全区域内にいる限り、外側に住む人々は大丈夫だと言っています。もちろん、隕石の場合はそうではありませんが、少しお付き合いください。ここで計算しているのは、基本的にクレーターの半径と安全区域の半径の比率です。この数値がこれよりもはるかに小さくなることを期待しています。安全区域は衝突クレーターに比べて非常に大きいのです。
さて、何が起こるかというと、NASAの科学者たちは隕石がここに落ちると予測していたのに、実際にはここに落ちたというように、目標を外れている可能性があります。安全領域はおそらく中心にある隕石やプロセス(この場合)には十分な広さだったはずですが、実際には衝突クレーターは安全領域をはるかに超えています。この辺りに住んでいないことを願います。もう一つの可能性、そして他にもたくさんの可能性がありますが、目標は達成しているものの、クレーターの計算を間違えたというケースです。クレーターは私たちが予想していたよりもはるかに大きいのです。繰り返しますが、それは安全領域の外側にあり、安全領域の半径は実際にはここにあるクレーターの半径よりも小さいのです。これは単なる図ですが、グラフでどのように見えるか見てみましょう。同じグラフですが、ここには追加の矢印といくつかの式があります。
簡単に言うと、影響度比とは、効果サイズを仕様または許容基準までの距離で割った比率です。ここでの効果サイズは、この場合は青とオレンジの細い矢印で示されています。これは、最小予測値から中心までの距離、または最大予測値から中心までの距離です。これを、中心から仕様までの距離(両側)で割った比率です。この場合、この距離は安全域の70%を占めています。これは良い影響度比とは言えません。ここはわずか40%ですが、それでもかなり高い数値です。しかし、公平を期すために、これら2つの値のうち最大値を取る必要があるため、ここでは70%と見なします。
これは私の手描きです。実際のJMPチャートを見てみましょう。これはジャンプチャートで、DoE分析の最後に表示されるプロファイラーの一部です。この場合、少し曲率がありますが、ゾーンは同じです。ここで最小値への影響率を計算すると、最小値から中心への予測値は、仕様に対する最小値の約42%を占めると予測されます。一方、最小値から上側または最大値への予測値は、安全ゾーンの約7%を占めるだけです。
とはいえ、この数値は報告する必要があるため、依然としてかなり高い数値です。ここで答えを出そうとしているのは、「許容範囲と比較して影響が小さく、目標通りなのか」ということです。では、ここからJMPに入り、手動で実行する方法を少しお見せします。これは面倒な方法ですが。ここでは、ボックス型の標準DoE、5つの因子を使用しています。ここでは4つの回答のみを共有しています。すべて匿名化されているため、申し訳ありませんが、数値がすべてマイナス1から1の間なので、少しおかしく見えます。
しかし、ここで私たちが求めているのは、応答の限界が指定されていることです。そうすれば、それらの応答の目標値を自由に設定できます。不純物などは最小化できるかもしれませんが、ほとんどの応答については最大化します。また、応答値がどれだけ高くなるかは、そもそも関心がないかもしれません。モデリングについてはここでは説明しません。申し訳ありません。スクリプトが間違っていました。さあ、これで終わりです。これは既にフィッティング済みで、メモに書いてあった例なので、このまま進めます。
ここでは、プロファイラを使って方程式に必要な数値をすべて取得しています。これを中心点に設定し、その数値を記録します。これで完了です。これが中心点の条件です。ここではすべてが中心点に保たれています。JMPにこの設定を記憶させます。ここでは荷重に関心があるので、これを「荷重中心点」と呼びます。これが最初の設定です。そうすれば、手動でJMPに問い合わせる必要がなくなります。これら2つはすべて中心点にあります。これを最小値に移動するだけで、これを最小値として記録できます。これが私の荷重の最小値です。
最大値については、少し複雑です。このようにやってみることもできます。これを大きくして、ここで最大値に到達するようにすることもできます。しかし、今回はJMPを信頼することにします。Control + Altを押しながら、ここにある他の2つのグラフをクリックし、因子設定を中心点でロックします。なぜなら、私が関心があるのは、負荷がどのように作用しているか、そして他のすべてがその点に保たれているときに負荷の最大値はいくらかだからです。その後、JMPのマキシマイザーを使用します。
できました。手作業でも到達できましたが、これでちょうど最大値であることが分かりました。これも保存しておきます。最大値に達しました。これで必要なものはほぼ全て揃いました。これを手作業で行う場合、リストにある全ての因子または方程式パラメータ、そして全ての応答に対して同じ作業を行うことになります。モデルがかなり大きく、応答が5~10個程度ある場合、作業量はあっという間に膨大になります。
次に、このデータをすべてテーブルにエクスポートする必要があります。複数のデータがある場合はこの方法を使用しますが、今回は1つしか持っていないので、この方法で行います。必要な情報はすべて間違った形式で表示されています。ここで確認する必要があるのは、これらのデータがどこにあるかということです。この数値はここにあります。ここでテーブルを転置する操作を行いますが、私は既に転置済みなので使用しません。この操作を簡単に説明しておきます。なぜうまくいかないのでしょうか?転置後のデータがあります。テーブルのすべてのラベルがここにあります。
手動で計算すると、下限と上限の仕様を追加する必要があります。これらと最小値と最大値、そしてCPから、ここでの比率の分子、比率の分母、そして比率自体を計算できます。小さな距離を大きな距離で割ると、低影響比率が得られます。次に、数式を使って2つの最大値を求め、これをそれぞれについて繰り返す必要があります。アドインがあれば、この作業がどれだけ簡単になるか、Samに説明してもらいましょう。Sam、いかがですか?
グウェン、ありがとう。グウェンが言ったように、このタスクを自動化するためにアドインを作成することにしました。アドインの仕組みを簡単に説明しましょう。グウェンが先ほど操作していたのと同じデータテーブルを使用しています。アドインを作成した理由は、スクリプトウィンドウから直接スクリプトを実行するよりも簡単だからです。アドインの利点は、アドイン名にマウスオーバーするとツールヒントを追加できることです。この場合、ツールヒントにはアドインを実行する適切なウィンドウが表示されます。
実際、クリックしてみても何も起こりません。正しい場所にいないからです。先ほど作成したモデルを使ってスクリプトを開くと、スクリプトを実行できるようになり、正常に動作することがわかります。まず、ユーザーにはいくつかの指示が記載されたウィンドウが表示され、その後、ユーザーが入力するための領域が表示されます。最初のウィンドウには、基になるデータテーブルの要件に関する指示のみが表示されます。
例えば、因子列はコード化する必要があり、単位も列プロパティとして入力する必要があります。いずれの列もコード化されていない場合は、「キャンセル」をクリックして戻って変更を加えることができます。ただし、今回の場合はすべて正しくコード化されているので、「実行」をクリックして「OK」をクリックします。次のウィンドウには因子設定を入力するための領域が表示されます。カテゴリ因子の入力欄があるのがお分かりいただけると思います。
カテゴリ因子の影響度比を計算することはできません。ただし、モデルに含まれるカテゴリ因子は特定の設定に固定する必要があるため、ユーザーはここで設定を入力できます。DoEで評価された残りの連続因子については、設定を入力するための領域があります。スクリプトはテーブルから読み取るだけで、最小値と最大値を自動的に読み込んでいることがわかります。また、最小値と最大値の中間点を見るだけで中心点も計算しています。
ただし、場合によっては中心点が範囲の正確な中心ではないことがあります。今回の場合は負荷がそうだったので、20に変更します。これらの値はどれも編集可能です。ここで入力値を変更できる利点は、加算を実行した結果、一部の要因に対して影響率が高すぎる場合です。その場合は、再度加算を実行し、ここで値を変更して、例えば要因の範囲を縮小して評価してみることができます。そして、新しい範囲で影響率が改善するかどうかを確認できます。
残りの値はそのままにして「OK」をクリックします。すると、最後のウィンドウに応答の受け入れ基準を入力する欄が表示されます。ここで値を入力します。基準が1つしかない場合は、片方だけ入力し、もう片方は空白のままにしておきます。基準がない場合は、両方のボックスを空白のままにしておいても影響度を計算できます。その場合、影響度は設定値応答と最小または最大予測値の差のパーセンテージになります。実用的な意味合いでは設定値応答と同じ測定結果にはなりませんが、スクリプトによって計算されます。
「OK」をクリックすると、サマリーテーブルが生成されていることがわかります。アドインを実行したウィンドウに戻ると、各予測プロファイラーの下に設定が保存されていることがわかります。これは、モデル内の各因子の最小値と最大値の予測を得るために使用された設定です。これは、後で計算がどのように行われたかを確認できるので便利です。このように確認できるのは良いことです。
ここでは、スクリプトが実際にどのように動作するか、ごく一般的な概要を説明します。まず、スクリプトはウィンドウ内の各応答モデルをループ処理します。次に、応答を最大化するように望ましさを設定します。次に、スクリプトはモデル内の各項をループ処理します。最初の項(この場合は負荷)については、因子設定のロックを解除し、自由に移動できるようにします。その後、他のすべての因子は設定値でロックされます。次に、スクリプトは「最大化して記憶」関数を実行します。これで、その設定がプロファイラーの下に保存され、この場合は負荷係数を変更するだけで応答を最大化できたことがわかります。
次に、モデル内の各項に対してこの操作を繰り返し、応答を最小化するように望ましさを設定します。このプロセスが再度繰り返されます。各項は再度評価され、最小予測値が得られます。最後に、記憶されているすべての設定が更新され、名前が意味の通るものになります。次に、因子名と、目標が応答の最小化か最大化かを表示します。最後に、このプロセス全体が、ウィンドウに含まれる各応答モデルに対して繰り返されます。これがスクリプトの動作です。出力されたサマリーテーブルに戻りましょう。
全てのデータが収集され、この表に出力されていることがわかります。各行には、評価された各応答モデルごとに特定の因子が1つずつ含まれています。ユーザーが入力した受け入れ基準の列があります。次に、設定値における予測値、そしてその応答モデルに含まれる各因子の最小予測値と最大予測値を示す列があります。残りの列は単なる数式です。ここでは、最小予測値と設定値予測値の差が表示されており、同様に、最大予測値と設定値予測値の差も表示されています。
最後の2列は、計算された影響度です。下限影響度と上限影響度があります。基準が1つしかないことにお気づきでしょうか。このケースでは、不純物については上限許容基準しかないため、上限影響度のみを計算しています。最後の列は、全体の影響度です。これは、下限影響度と上限影響度の最大値を単純に算出したものです。最後に、このタスクを自動化するアドインを使用するメリットをまとめ、この部分の講演を締めくくりたいと思います。
まず、アドインを使用すると、手動で行うよりもはるかに早く作業が完了します。次に、タスクを繰り返すのがはるかに簡単になります。前述のように、アドインを実行して影響率が高すぎると判断された場合は、アドインを再実行し、係数の設定を変更して、許容できる影響率が得られるかどうかを確認できます。最後に、データの転記や操作が不要なため、エラーが発生する可能性が大幅に低くなります。スクリプトはすべてのデータを収集し、最後に出力されるテーブルにまとめます。
はい、ありがとうございます。これで私の講演は終了です。グウェンにバトンタッチして、まとめをお願いします。ありがとうございました。
サムが言ったことに加えて、アドインの大きな利点は、計算を繰り返したり、最初の数表に入力した内容を変更したりできることです。例えば、実証済みの許容範囲を示すために設定した値を、通常の運用範囲から少し外れた値に取り込むなど、係数の設定を変更できます。他に変更できる点は、仕様や許容基準の見直しです。影響度が非常に高かった場合、安全領域は快適に運用するには少し狭すぎる可能性があります。
仕様を拡張して、すべての影響度が少し小さくなっているかどうかを確認できます。これは、許容基準を変更する正当な理由として使用できる可能性があります。これらの影響度を利用してできることのもう1つは、テスト済みのプロセスパラメータを分類するための基準として、それらをまとめて使用できることです。DoEの終了時に、プロセスパラメータの影響度が非常に小さいため、そのパラメータが重要、非常に重要、または重要でないと判断される可能性があります。本日の影響度についてお話ししたのはこれで終わりです。ご質問があれば、お二人ともお答えいたします。ありがとうございました。