如何使用基准模型进行模型驱动的多变量持续过程验证大家好,
继续这篇文章(下面提供了链接)-
https://community.jmp.com/t5/Discussions/Help-in-JSL-scripting-of-Model-Driven-Multivariate-Control-Chart/mp/655359#M84445
我想扩展该脚本,使其在与之前建议的类似行上有一个通用脚本,但这一次,模型驱动的多元控制图应该使用一些基准模型(PCA 或 PLS)来修复控制限制。 原因是,出于持续过程验证的目的,一旦我们确定了限制(根据没有任何异常值的历史数据集计算),就必须根据该限制监控未来的批次。 目前,发生的情况是,每次运行此脚本时,由于数据集不同,它都会生成新的控制限制(出于明显的原因)。
因此,第一部分是修复控制限制(所有历史/黄金数据集都应低于控制限制),为此,是否可以开发一个具有交叉验证的模型来最终确定组件的数量,以便数据点低于控制限(当然,在删除异常值之后)? 我面临的棘手部分是,即使所谓的异常值被删除,每次 MDMVCC 都会给出超出控制限制的一个或其他数据点(随着数据集的变化)。这个问题必须得到解决。
第二部分是在后续制造的批次上运行此脚本(具有固定的控制限制),以识别变量中的任何偏差作为 CPV 活动的一部分。
总体想法是拥有一个通用的 MDMVCC 脚本(来自基准模型),它可以高精度地预测/识别异常值/变化。
如果社区中的任何人能够指导我或对这一请求提供更多说明,我将不胜感激。
提前致谢 !!
克罗恩,
纳瓦兹
高级统计建模回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@Riaz90Nawaz
对于你的第二个问题(有固定的控制限制),这是一个想法。
- 将历史/黄金数据添加到当前数据集/未来批次
- 为 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;
希望它能解决您的问题。
回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@yuichi_katsumur ,
非常感谢您的指导。 高度赞赏。
对于相同的代码,我尝试添加多元散点图矩阵,以便通过添加以下代码来理解变量之间的相关性,但看来我做错了,因为它不起作用 -
多元(
Y(感兴趣的列),
方差估计(“按行”),
散点图矩阵( 密度椭圆( 1 ) )
);
如果您也能在这方面有所启发,我将不胜感激。
谢谢,KR,
回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@Riaz90Nawaz ,
一种想法是下面的代码。 我认为这会起作用。
Multivariate(
Y( eval(cols_of_interest) ),
Variance Estimation( "Row-wise" ),
Scatterplot Matrix( Density Ellipses( 1 ) )
);
回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@yuichi_katsumur ,
非常感谢您的及时支持。 有效。
我也在我的主要帖子中发布了一个一般查询,我们不能将这个固定限制(从历史数据集生成)直观地添加到当前数据集(通过脚本)吗? 我明白了,尽管脚本仅为那些违反历史控制限制的行提供贡献。当前数据集也有这条参考线是理想的。 目前,对于当前数据集,控制限制显示为红色虚线,我不希望出现这种情况(出于明显的原因),而不是这样,历史中的固定控制限制应该继续当前/未来数据集也是如此。 这提供了更正确的视觉表示。
韩国
回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@Riaz90Nawaz ,
您可能知道,历史数据的控制上限 (UCL) 基于 Beta 分布。 另一方面,当前数据的 UCL 基于 F 分布。 https://www.jmp.com/support/help/en/17.1/#page/jmp/statistical-details-for-limits.shtml#ww345612
我不确定对每个数据使用相同的限制是否有意义,一个想法是使用“排除行”选项。 这是一个示例脚本供您参考。
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
);回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@yuichi_katsumur ,
再次感谢您的及时支持!
是的,我知道历史数据集和当前数据集的基本分布差异。 实际上,作为“持续过程验证(CPV)”的一部分,我们不能对后续监控使用不同的限制。 必须有一个固定的控制限制(源自历史数据集),随后的批次将根据该限制进行监控,主要是为了研究过程中的任何漂移/变化。 希望您明白我要解决的问题。
我感谢您对此的支持,但是,我们不能在不排除行的情况下做到这一点吗? 我刚刚尝试了提供的脚本,虽然就 T2 控制图可视化而言,它满足了我想要实现的目的,但是当我查看 T2 贡献图时,脚本给出了所有点的图表(特别是对于当前数据集) )无论特定点是否违反 UCL。 虽然在脚本中,特别提到了“alarm_rows”的贡献图,但它似乎不起作用,可能是因为我们已经排除了当前数据集行,对此不确定。
希望您理解我想要实现的目标。
预先感谢您的支持,
亲切的问候,
回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@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!!
当我排除行时,我选择了一些行,因此您需要取消选择它们。 我认为这会起作用。
回复:如何使用基准模型进行模型驱动的多元持续过程验证你好@yuichi_katsumur ,
非常感谢您更新的脚本。现在正在工作。
感谢您的及时支持!
祝你有美好的一天 !!
此致,