Cómo usar un modelo de referencia para el propósito de verificación continua del proceso multivariado basado en el modeloHola a todos,
En la continuación de la publicación (enlace a la que se proporciona a continuación) -
https://community.jmp.com/t5/Discussions/Help-in-JSL-scripting-of-Model-Driven-Multivariate-Control-Chart/mp/655359#M84445
Me gustaría ampliar la secuencia de comandos para tener una secuencia de comandos genérica en líneas similares a las que se sugirieron anteriormente, pero esta vez, el gráfico de control multivariado basado en modelos debería usar algunos modelos de referencia (ya sea PCA o PLS) para fijar el límite de control. El motivo es que, con el fin de continuar con la verificación del proceso, una vez que fijamos el límite (calculado a partir del conjunto de datos históricos sin valores atípicos), los lotes futuros deben monitorearse contra este límite. Actualmente, lo que sucede es que, cada vez que se ejecuta este script, genera un nuevo límite de control (por razones obvias) ya que el conjunto de datos es diferente.
Entonces, la primera parte es fijar el límite de control (todo el conjunto de datos históricos/dorados debe estar por debajo del límite de control) y para hacer esto, ¿es posible desarrollar un modelo con validación cruzada para finalizar el número de componentes para que el los puntos de datos caen por debajo del límite de control (por supuesto, después de eliminar los valores atípicos)? La parte difícil aquí a la que me enfrento, a pesar de que se eliminan los llamados valores atípicos, cada vez que MDMVCC proporciona uno u otro punto de datos más allá de un límite de control (ya que el conjunto de datos está cambiando).Esto tiene que arreglarse.
La segunda parte es ejecutar este script (con un límite de control fijo) en los lotes fabricados posteriormente para identificar cualquier desviación en las variables como parte de la actividad de CPV.
La idea general es tener un script MDMVCC genérico (de un modelo de referencia) que pueda predecir/identificar los valores atípicos/variaciones con buena precisión.
Agradezco mucho si alguien de la comunidad puede guiarme o arrojar algo más de luz sobre esta solicitud.
Gracias de antemano !!
KR,
Nawaz
Modelado Estadístico AvanzadoRe: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @Riaz90Nawaz
Para sus segundas preguntas (con límites de control fijos), esta es una idea.
- Agregar datos históricos/dorados al conjunto de datos actual/lote futuro
- Establezca la opción "Fin de datos históricos en la fila" para MDMVCC
Aquí hay un script de muestra para su referencia.
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;
Espero que funcione para tu problema.
Re: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @yuichi_katsumur ,
Muchas gracias por tu orientación. Muy apreciado.
Al mismo código, estoy tratando de agregar una matriz de diagrama de dispersión multivariante para comprender las correlaciones entre las variables agregando el siguiente código, pero parece que lo estoy haciendo de manera incorrecta ya que no funciona:
multivariado(
Y(columnas_de_interés),
Estimación de la varianza ("Row-wise"),
Matriz de diagrama de dispersión (elipses de densidad (1))
);
Aprecio si puedes arrojar algo de luz sobre este aspecto también.
Gracias y KR,
Re: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @Riaz90Nawaz ,
Una idea es el siguiente código. Creo que esto funcionará.
Multivariate(
Y( eval(cols_of_interest) ),
Variance Estimation( "Row-wise" ),
Scatterplot Matrix( Density Ellipses( 1 ) )
);
Re: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @yuichi_katsumur ,
Muchas gracias por el pronto apoyo. Funcionó.
Una consulta general, que también publiqué en mi publicación principal, ¿no podemos agregar este límite fijo (generado a partir de un conjunto de datos históricos) al conjunto de datos actual visualmente (a través de secuencias de comandos)? Ya veo, aunque el script proporciona contribuciones solo para aquellas filas que infringen el límite de control histórico. sería ideal tener esta línea de referencia también para el conjunto de datos actual. En la actualidad, para el conjunto de datos actual, el límite de control se muestra como una línea roja discontinua, no quiero que aparezca (por razones obvias), en lugar de esto, el límite de control fijo del histórico debe continuar para el actual/futuro conjunto de datos también. Esto proporciona una representación visual más correcta.
CR
Re: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @Riaz90Nawaz ,
Como sabrá, el Límite de control superior (UCL) para los datos históricos se basa en la distribución Beta. Por otro lado, la UCL para datos actuales se basa en la distribución F. https://www.jmp.com/support/help/en/17.1/#page/jmp/detalles-estadísticos-para-límites.shtml#ww345612
No estoy seguro de si tiene sentido usar el mismo límite para cada dato, una idea es usar la opción Excluir fila. Aquí hay un script de muestra para su referencia.
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: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @yuichi_katsumur ,
¡¡Muchas gracias una vez más por su rápido apoyo!!
Sí, soy consciente de las diferencias de distribución básicas para el conjunto de datos histórico y actual. En realidad, como parte de la "Verificación del proceso continuo (CPV)", no podemos usar límites diferentes para el seguimiento posterior. Tiene que haber un límite de control fijo (derivado de un conjunto de datos históricos) contra el cual se monitorean los lotes posteriores, básicamente para estudiar cualquier desviación/cambio en el proceso. Espero que hayas entendido lo que estoy tratando de arreglar.
Agradezco su apoyo en esto, pero, ¿no podemos hacer esto sin excluir filas? Acabo de probar la secuencia de comandos proporcionada, aunque en términos de visualización del gráfico de control de T2, cumple el propósito que quería lograr, pero cuando miré los gráficos de contribución de T2, la secuencia de comandos proporciona los gráficos para todos los puntos (especialmente para el conjunto de datos actual ) independientemente de si un punto específico está infringiendo la UCL o no. Aunque en la secuencia de comandos, los gráficos de contribución se mencionan específicamente para "alarm_rows", pero parece que no funciona, podría deberse a que hemos excluido las filas del conjunto de datos actual, no estoy seguro.
Espero que hayas entendido lo que estoy tratando de lograr.
Gracias de antemano por su apoyo,
Atentamente,
Re: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @Riaz90Nawaz , Gracias por su respuesta. Entiendo lo que quieres. Lo siento, hay un error en mi guión. Agregue la siguiente línea al script (en la línea 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!!
Cuando excluyo filas, seleccioné algunas filas, por lo que debe anular su selección. Creo que esto funcionará.
Re: Cómo usar un modelo de referencia para el propósito de verificación de procesos continuos multivariados basados en modelosHola @yuichi_katsumur ,
Muchas gracias por el guión actualizado.Está funcionando ahora.
¡Agradezco su apoyo inmediato!
Qué tengas un lindo día !!
Atentamente,