Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut tout le monde,
Dans la continuité du post (dont le lien est fourni ci-dessous) -
https://community.jmp.com/t5/Discussions/Help-in-JSL-scripting-of-Model-Driven-Multivariate-Control-Chart/mp/655359#M84445
Je voudrais étendre le script pour avoir un script générique sur les lignes similaires à ce qui a été suggéré plus tôt, mais cette fois, la carte de contrôle multivariée pilotée par le modèle doit utiliser certains modèles de référence (PCA ou PLS) pour fixer la limite de contrôle. La raison en est, à des fins de vérification continue du processus, une fois que nous avons fixé la limite (calculée à partir de l'ensemble de données historiques sans aucune valeur aberrante), les futurs lots doivent être surveillés par rapport à cette limite. Actuellement, ce qui se passe, c'est que chaque fois que ce script est exécuté, il génère une nouvelle limite de contrôle (pour des raisons évidentes) car l'ensemble de données diffère.
Ainsi, la première partie consiste à fixer la limite de contrôle (tout le jeu de données historique/or doit tomber en dessous de la limite de contrôle) et pour ce faire, est-il possible de développer un modèle avec validation croisée pour finaliser le nombre de composants afin que le les points de données tombent en dessous de la limite de contrôle (bien sûr, après avoir supprimé les valeurs aberrantes) ? La partie délicate ici à laquelle je suis confronté, même si les soi-disant valeurs aberrantes sont supprimées, chaque fois que le MDMVCC donne l'un ou l'autre point de données au-delà d'une limite de contrôle (car l'ensemble de données change).Cela doit être corrigé.
La deuxième partie consiste à exécuter ce script (avec une limite de contrôle fixe) sur les lots fabriqués ultérieurement pour identifier toute excursion dans les variables dans le cadre de l'activité CPV.
L'idée générale est d'avoir un script MDMVCC générique (à partir d'un modèle de référence) qui peut prédire/identifier les valeurs aberrantes/variations avec une bonne précision.
J'apprécie beaucoup si quelqu'un de la communauté peut me guider ou éclairer davantage cette demande.
Merci d'avance !!
KR,
Nawaz
Modélisation statistique avancéeRe : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleBonjour @Riaz90Nawaz
Pour vos deuxièmes questions (avec des limites de contrôle fixes), c'est une idée.
- Ajouter des données historiques/dorées à l'ensemble de données actuel/futur lot
- Définir l'option "Fin des données historiques à la ligne" pour MDMVCC
Voici un exemple de script pour votre référence.
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;
J'espère que cela fonctionne pour votre problème.
Re : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut @yuichi_katsumur ,
Merci beaucoup pour vos conseils. Hautement apprécié.
Au même code, j'essaie d'ajouter une matrice de diagramme de dispersion multivariée afin de comprendre les corrélations entre les variables en ajoutant le code suivant, mais il semble que je le fasse mal car cela ne fonctionne pas -
Multivarié(
Y(cols_of_interest),
Estimation de la variance ("Row-wise"),
Matrice de nuage de points (ellipses de densité (1))
);
Appréciez si vous pouvez également éclairer cet aspect.
Merci et KR,
Re : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleBonjour @Riaz90Nawaz ,
Une idée est le code suivant. Je pense que cela fonctionnera.
Multivariate(
Y( eval(cols_of_interest) ),
Variance Estimation( "Row-wise" ),
Scatterplot Matrix( Density Ellipses( 1 ) )
);
Re : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut @yuichi_katsumur ,
Merci beaucoup pour le soutien rapide. Ça a marché.
Une requête générale, que j'ai également publiée dans mon article principal, ne pouvons-nous pas ajouter visuellement cette limite fixe (générée à partir de l'ensemble de données historiques) à l'ensemble de données actuel (via des scripts) ? Je vois, bien que le script ne fournisse des contributions que pour les lignes qui dépassent la limite de contrôle historique. il serait idéal d'avoir également cette ligne de référence pour l'ensemble de données actuel. À l'heure actuelle, pour l'ensemble de données actuel, la limite de contrôle est indiquée par une ligne rouge en pointillés, je ne veux pas que cela apparaisse (pour des raisons évidentes), au lieu de cela, la limite de contrôle fixe de l'historique devrait continuer pour l'actuel/futur ensemble de données également. Cela fournit une représentation visuelle plus correcte.
KR
Re : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut @Riaz90Nawaz ,
Comme vous le savez peut-être, la limite de contrôle supérieure (UCL) pour les données historiques est basée sur la distribution bêta. D'autre part, l'UCL pour les données actuelles est basée sur la distribution F. https://www.jmp.com/support/help/en/17.1/#page/jmp/statistical-details-for-limits.shtml#ww345612
Je ne sais pas s'il est logique d'utiliser la même limite pour chaque donnée, une idée est d'utiliser l'option Exclude Row. Voici un exemple de script pour votre référence.
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 : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut @yuichi_katsumur ,
Merci beaucoup encore une fois pour votre soutien rapide !!
Oui, je suis conscient des différences de distribution de base pour l'ensemble de données historique et actuel. En effet, dans le cadre de la "Continued Process Verification (CPV)", nous ne pouvons pas utiliser des limites différentes pour la surveillance ultérieure. Il doit y avoir une limite de contrôle fixe (dérivée d'un ensemble de données historiques) par rapport à laquelle les lots suivants sont surveillés, essentiellement pour étudier les dérives/décalages dans le processus. J'espère que vous avez compris ce que j'essaie de corriger.
J'apprécie votre soutien à ce sujet, mais ne pouvons-nous pas faire cela sans exclure les lignes ? Je viens d'essayer le script fourni, bien qu'en termes de visualisation du tableau de contrôle T2, cela serve l'objectif que je voulais atteindre mais quand j'ai regardé les tracés de contribution T2, le script donne les graphiques pour tous les points (en particulier pour l'ensemble de données actuel ), qu'un point spécifique enfreigne ou non l'UCL. Bien que dans le script, les tracés de contribution soient spécifiquement mentionnés pour "alarm_rows", mais il semble que cela ne fonctionne pas, peut-être parce que nous avons exclu les lignes de l'ensemble de données actuel, sans en être sûr.
J'espère que vous avez compris ce que j'essaie de réaliser.
Merci d'avance pour ton aide,
Bien à vous,
Re : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut @Riaz90Nawaz , Merci pour votre réponse. Je comprends ce que tu veux. Je suis désolé, il y a une erreur dans mon script. Veuillez ajouter la ligne suivante au script (à la ligne 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!!
Lorsque j'exclus des lignes, j'ai sélectionné certaines lignes, vous devez donc les désélectionner. Je pense que cela fonctionnera.
Re : Comment utiliser un modèle de référence à des fins de vérification de processus continu multivariée pilotée par modèleSalut @yuichi_katsumur ,
Merci beaucoup pour le script mis à jour.Ça marche maintenant.
Appréciez votre soutien rapide !!
Passe une bonne journée !!
Cordialement,