モデル駆動多変量継続プロセス検証目的でベンチマーク モデルを使用する方法こんにちは、みんな、
投稿の続き(リンクは下にあります) -
https://community.jmp.com/t5/Discussions/Help-in-JSL-scripting-of-Model-Driven-Multivariate-Control-Chart/mp/655359#M84445
スクリプトを拡張して、前に提案したのと同様の行に汎用スクリプトを 1 つ含めたいと考えていますが、今回は、モデル駆動型多変量管理図でいくつかのベンチマーク モデル (PCA または PLS) を使用して管理限界を修正する必要があります。 その理由は、継続的なプロセス検証の目的で、制限 (外れ値のない履歴データセットから計算) を修正したら、今後のバッチをこの制限に対して監視する必要があるためです。 現在、このスクリプトが実行されるたびに、データセットが異なるため、(明らかな理由により) 新しい管理限界が生成されます。
したがって、最初の部分は管理限界を修正することであり (すべての履歴/ゴールデン データセットが管理限界を下回る必要があります)、これを行うために、相互検証を使用してコンポーネントの数を最終的に決定するモデルを開発して、データポイントは管理限界を下回りますか (もちろん、外れ値を除去した後)? ここで私が直面している厄介な部分は、たとえいわゆる異常値が除去されているとしても、MDMVCC が管理限界を超えるデータ ポイントを与えるたびに (データセットが変化しているため) ということです。これは修正する必要があります。
2 番目の部分は、その後製造されるバッチに対してこのスクリプト (固定管理限界を使用) を実行して、CPV アクティビティの一部として変数の逸脱を特定することです。
全体的なアイデアは、外れ値/変動を高い精度で予測/特定できる汎用 MDMVCC スクリプト (ベンチマーク モデルから) を用意することです。
コミュニティの誰かが私を指導してくれたり、このリクエストにもう少し光を当ててくれたりすると非常に感謝します。
前もって感謝します !!
KR、
ナワズ
高度な統計モデリングRe: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法こんにちは@Riaz90Nawaz
2 番目の質問 (管理限界が固定されている場合) については、これはアイデアです。
- 履歴/ゴールデン データを現在のデータセット/将来のバッチに追加します
- MDMVCC の「履歴データの行終了」オプションを設定します。
参考用のサンプル スクリプトを次に示します。
Names Default To Here( 1 );
historical_dt = Open( "$SAMPLE_DATA/Quality Control/Aluminum Pins Historical.jmp" );
current_dt = Open( "$SAMPLE_DATA/Quality Control/Aluminum Pins Current.jmp" );
//Get the number of rows for the historical data
historical_data_end_row = N Row( historical_dt );
//Combine the data tables
dt = historical_dt << Concatenate( current_dt );
//Close
Close( historical_dt, nosave );
Close( current_dt, nosave );
dt << Clear Row States;
cols_of_interest = dt << get column names( Continuous, "String" );
Eval(
Substitute(
Expr(
obj = dt <<
Model Driven Multivariate Control Chart(
Process( cols_of_interest ),
Historical Data End at Row( historical_data_end_row )
)
),
Expr( cols_of_interest ), Eval( cols_of_interest ),
Expr( historical_data_end_row ), Eval( historical_data_end_row )
)
);
obj << T Square Plot( Save Values );
new_cols = Associative Array( dt << get column names( Continuous, "String" ) );
new_cols << Remove( Associative Array( cols_of_interest ) ); // T2 column
// get UCL (should be made more robust)
ucl_value = ((Report( obj )[Outline Box( "T² Limit Summaries" )] << Child)[3] << Get)[1];
alarm_rows = Loc( dt[0, new_cols << get keys] > ucl_value );
dt << Select Rows( alarm_rows );
Wait( 0 );
obj << T² Plot( Contribution Plot for Selected Samples( alarm_rows ) );
dt << Clear Select;
それがあなたの問題に役立つことを願っています。
Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法やあ@yuichi_カツムル、
ご指導ありがとうございました。 高く評価します。
同じコードに、次のコードを追加して変数間の相関関係を理解できるように多変量散布図マトリックスを追加しようとしていますが、機能しないため間違った方法で行っているようです。
多変量(
Y(関心のある列)、
分散推定( "行ごと" )、
散布図行列( 密度楕円( 1 ) )
);
この側面にも光を当てていただければ幸いです。
KRさん、ありがとう。
Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法こんにちは@Riaz90Nawaz 、
1 つのアイデアは次のコードです。 これはうまくいくと思います。
Multivariate(
Y( eval(cols_of_interest) ),
Variance Estimation( "Row-wise" ),
Scatterplot Matrix( Density Ellipses( 1 ) )
);
Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法やあ@yuichi_カツムル、
迅速なサポートに本当に感謝しています。 出来た。
一般的な質問の 1 つは、メインの投稿にも投稿しましたが、この固定制限 (履歴データセットから生成) を現在のデータセットに視覚的に (スクリプトを介して) 追加できないでしょうか。 なるほど、スクリプトは履歴管理制限に違反している行に対してのみ寄与を提供しますが。現在のデータセットにもこの基準線があることが理想的です。 現在、現在のデータセットでは、管理限界は赤い破線で表示されていますが、これは表示されたくないのですが(明らかな理由により)、その代わりに、過去の固定管理限界が現在/将来にわたって継続される必要があります。データセットも同様です。 これにより、より正確な視覚的表現が提供されます。
KR
Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法やあ@Riaz90Nawaz 、
ご存知のとおり、履歴データの上限管理限界 (UCL) はベータ分布に基づいています。 一方、現在のデータの UCL は F 分布に基づいています。 https://www.jmp.com/support/help/en/17.1/#page/jmp/statistical-details-for-limits.shtml#ww345612
各データに同じ制限を使用することが意味があるかどうかはわかりませんが、1 つのアイデアは、[行を除外] オプションを使用することです。 参考用のサンプル スクリプトを次に示します。
Names Default To Here( 1 );
historical_dt = Open( "$SAMPLE_DATA/Quality Control/Aluminum Pins Historical.jmp" );
current_dt = Open( "$SAMPLE_DATA/Quality Control/Aluminum Pins Current.jmp" );
//Get the number of rows for the historical data
historical_data_end_row = N Row( historical_dt );
//Combine the data tables
dt = historical_dt << Concatenate( current_dt );
//Close
Close( historical_dt, nosave );
Close( current_dt, nosave );
dt << Clear Row States;
cols_of_interest = dt << get column names( Continuous, "String" );
dt << Multivariate(
Y( Eval( cols_of_interest ) ),
Variance Estimation( "Row-wise" ),
Scatterplot Matrix( Density Ellipses( 1 ) )
);
//Exclude current data
data_end_row = N Row( dt );
selected_row = dt << select rows( Index( historical_data_end_row, data_end_row ) );
selected_row << Exclude;
obj = dt << Model Driven Multivariate Control Chart( Process( Eval( cols_of_interest ) ) );
//Show excluded row
obj << Show Excluded Rows( 1 );
obj << T Square Plot( Save Values );
new_cols = Associative Array( dt << get column names( Continuous, "String" ) );
new_cols << Remove( Associative Array( cols_of_interest ) ); // T2 column
// get UCL (should be made more robust)
ucl_value = ((Report( obj )[Outline Box( "T² Limit Summaries" )] << Child)[3] << Get)[1];
alarm_rows = Loc( dt[0, new_cols << get keys] > ucl_value );
dt << Select Rows( alarm_rows );
Wait( 0 );
obj << T² Plot( Contribution Plot for Selected Samples( alarm_rows ) );
dt << Clear Select;
//Add reference line
report = obj << report;
report[Picture Box( 1 )][axis box( 2 )] << Add Ref Line(
{0, eval(historical_data_end_row)},
"Solid",
"Light Red",
"Historical",
1,
0.25
);Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法やあ@yuichi_カツムル、
早速のご対応誠にありがとうございました!!
はい、過去のデータセットと現在のデータセットの基本的な分布の違いについては認識しています。 実際には、「継続プロセス検証 (CPV)」の一環として、後続の監視に異なる制限を使用することはできません。 基本的にプロセス内のドリフト/シフトを調査するために、後続のバッチを監視するための 1 つの固定管理限界 (履歴データセットから導出) が必要です。 私が何を修正しようとしているのか理解していただければ幸いです。
これについてはサポートに感謝しますが、行を除外せずにこれを行うことはできませんか? 提供されたスクリプトを試してみました。T2 管理図の視覚化という点では、達成したい目的は果たしていますが、T2 寄与プロットを見ると、スクリプトはすべてのポイント (特に現在のデータセット) のグラフを提供しています。 ) 特定のポイントが UCL に違反しているかどうかには関係ありません。 スクリプトでは、寄与プロットが「alarm_rows」について具体的に言及されていますが、機能していないようです。おそらく、現在のデータセット行を除外したことが原因である可能性がありますが、それについてはわかりません。
私が達成しようとしていることを理解していただければ幸いです。
よろしくお願いいたします。
敬具、
Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法やあ@Riaz90Nawaz 、 お返事ありがとうございます。 あなたが何を望んでいるのか理解しています。 申し訳ありませんが、私のスクリプトに間違いがあります。 スクリプトに次の行を追加してください (26 行目)。
//Exclude current data
data_end_row = N Row( dt );
selected_row = dt << select rows( Index( historical_data_end_row, data_end_row ) );
selected_row << Exclude;
dt << Clear Select; //Please add this line!!
行を除外する場合、いくつかの行を選択しているため、それらの選択を解除する必要があります。 これはうまくいくと思います。
Re: モデル駆動多変量継続プロセス検証目的でのベンチマーク モデルの使用方法やあ@yuichi_カツムル、
スクリプトを更新していただき、誠にありがとうございます。今は機能しています。
迅速なサポートに感謝します!!
すてきな一日を !!
よろしくお願いします、