¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?He reunido el siguiente JSL para filtrar primero los valores atípicos en los datos y luego obtener el Ppk, pero observo que mi secuencia de comandos es incorrecta ya que cuando filtro los valores atípicos excluyendo todas las filas, excluyo los puntos de datos que no son atípicos para otros procesos. parámetros.
Para definir valores atípicos, mi criterio preferido es que cualquier cosa fuera de Q1/Q3 +/- 1.5xIQR es un valor atípico, que es lo que (creo) uso a continuación.
Names Default To Here (1);
Clear Log ();
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
col_names = dt << Get Column Group("Processes"); // Column Group should pre-exist.
obj = Explore Outliers(Y(Eval( col_names ) )); // Run expolore outliers
obj << Quantile Range Outliers( Tail Quantile( 0.25 ), Q (1.5) ); // select Q3/Q1 +/- 1.5 x IQR
obj << Exclude Rows(ALL); // exclude OL rows
// Run capability analysis
platform = dt << Process Capability(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Moving Range Method( Average of Moving Ranges ),
Overall Sigma Summary Report( 1 ),
//Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Select Out of Spec Values( 1 ),
Goal Plot(0 ),
Capability Index Plot( 1 ),
Process Performance Plot( 0 ),
Order By( "Within Sigma Ppk Ascending" )
);
Wait( 0 );
Report( platform )[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Into Data Table;
dt_curr = Current Data Table();
dt_curr << Set Name( "Capability Report" );Puedo colorear celdas atípicas por parámetro, pero no sé cómo excluirlas para el análisis de capacidad. Necesito algo de ayuda aquí.
En segundo lugar, para cada oblea en un lote, me gustaría calcular el Cpk para cada parámetro del proceso después del filtrado de valores atípicos , para obtener un gráfico de tendencia de Cpk por oblea para cada parámetro del proceso. ¿Cómo hacer esto a través de JSL (usando el conjunto de datos de ejemplo que tengo en mi script)?
Automatización y secuencias de comandosventanasRe: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Para la primera parte (Ppk) de mi pregunta, ¿intercambiaría
obj << Exclude Rows(ALL);
por
obj << Change to Missing(ALL);
¿Hacer el trabajo?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Debido a que tiene una tabla de formato amplio, tendrá que cambiarlas a faltantes (usar códigos de valores faltantes o modificar datos) O apilar sus datos para poder excluir filas.
¿Has probado si << Cambiar a faltante hace lo que buscas?

Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Creo que nos cruzamos. El cambio a faltante me da Ppk negativo para algunos parámetros. ¿Se espera esto?

Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Cree una sola columna con valores atípicos para los cuales pueda calcular el Ppk manualmente (y con JMP). Cambie los valores atípicos a los que faltan y repita los cálculos. ¿Son correctas?
Si solo tomo el primer parámetro y compruebo cómo se ve

Yo diría que alguien debería reaccionar de alguna manera ante eso. También puede ver con bastante facilidad por qué hay valores de capacidad negativos (la media está fuera de las especificaciones).
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias. Tenía entendido que los Ppk no pueden ser negativos mientras que los Cpk sí, por lo que dudaba de mi paso "Cambiar a Faltante". Comprobaré mi comprensión. Una cosa más antes de continuar con la segunda parte de mi pregunta: ¿estoy aplicando correctamente los criterios de filtrado de valores atípicos (es decir, filtro fuera de Q1/Q3 +/- 1.5xIQR )?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?La documentación de JMP tiene las mejores respuestas a preguntas como esa, si puede encontrar los lugares correctos. A veces puede resultar bastante difícil.
En este caso, lo más probable es que esté aquí Modelado predictivo y especializado > Explorar valores atípicos > Descripción general de Explorar valores atípicos > Valores atípicos de rango de cuantiles o aquí Modelado predictivo y especializado > Explorar valores atípicos > Informe de exploración de valores atípicos > Informe de valores atípicos de rango de cuantiles

Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias. Ahora vamos a la segunda parte de mi pregunta.
Para cada oblea de un lote, me gustaría calcular el Cpk para cada parámetro del proceso.después del filtrado de valores atípicos, para obtener un gráfico de tendencia de Cpk por oblea para cada parámetro del proceso.
Por lo tanto, esta no es la capacidad de un parámetro para todas las obleas en una tabla de datos, sino la capacidad del parámetro para una oblea en un lote determinado.
¿Cómo hacer esto a través de JSL en el mismo conjunto de datos que tengo aquí?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?¿No debería agrupar variables obtener esa tabla usando :lot_id, :wafer y/o :wafer en el lote según sea necesario? Y luego puedes crear un gráfico a partir de esa tabla.
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias. si uso
Names Default To Here (1);
Clear Log ();
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
col_names = dt << Get Column Group("Processes"); // Column Group should pre-exist.
obj = Explore Outliers(Y(Eval( col_names )),By( :Wafer ID in lot ID)); // Run expolore outliers
obj << Quantile Range Outliers( Tail Quantile( 0.25 ), Q (1.5) ); // select Q3/Q1 +/- 1.5 x IQR<BR />Aparece la ventana Explorar plataforma de valores atípicos donde tengo el trato con las obleas individualmente. ¿Cómo uso entonces?
obj << Change to Missing(ALL);
¿Desea pasar al siguiente paso, es decir, análisis de capacidad por "ID de oblea en ID de lote"?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Creo que eso debería funcionar bien. ¿Está seguro de que tiene valores atípicos en sus datos?
- Tome un conjunto de datos mucho más pequeño (solo unos pocos ID de oblea en el ID de lote)
- Crea algunos valores atípicos en una columna
- Ejecuta tu script
- comprobar que funciona
- Repita con datos más grandes
Observe que he cambiado Tail Quantile
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
eo = dt << Explore Outliers(Y(Column Group("Processes")), By(:Wafer ID in lot ID), Invisible);
eo << Quantile Range Outliers(Tail Quantile(0.4), Q(1.5));
dt << Begin Data Update;
// eo << Color Cells(All);
Log Capture(eo << Change to Missing(ALL));
dt << End Data Update;
eo[1] << Close Window;Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias, ahora he utilizado un conjunto de datos más pequeño para el análisis (JSL a continuación). Creo que no hay necesidad de filtrar los valores atípicos en una ID de oblea en función de la ID de lote, ya que las celdas atípicas desaparecen de cualquier manera. Lo que necesito es un análisis de capacidad en un conjunto de datos filtrados atípicos.
Names Default To Here( 1 );
Clear Log();
dt_full = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
dt = Data Table( "Semiconductor Capability" ) << Subset(
All rows,
columns( :lot_id, :wafer, :Wafer ID in lot ID, :SITE, :NPN1, :PNP2, :PNP3, :FNM1, :RES3, RSP2 )
);
Wait( 1 );
Close( dt_full, no save );
col_names = dt << Get Column Group( "Processes" ); // Column Group should pre-exist.
obj = Explore Outliers( Y( Eval( col_names ) ) );//,By( :Wafer ID in lot ID)); // Run expolore outliers
obj << Quantile Range Outliers( Tail Quantile( 0.25 ), Q( 1.5 ) ); // select Q3/Q1 +/- 1.5 x IQR
obj << Color Cells( ALL ); //check
Wait( 1 );
obj << Change to Missing( ALL );
Wait( 1 );
obj << Close Window;
// Run capability analysis
platform = dt << Process Capability(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Moving Range Method( Average of Moving Ranges ),
//Within Sigma Summary Report( 0),
Overall Sigma Summary Report( 1 ),
Select Out of Spec Values( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Capability Box Plots( 0 ),
Process Performance Plot( 0 ),
Order By( "Overall Sigma Ppk Ascending" )
);
Wait( 0 );
Report( platform )[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Into Data Table;
dt_curr = Current Data Table();
dt_curr << Set Name( "Capability Report" );
platform << close window;
dt << Clear Select;
// Run capability analysis by wafer in a lot
platform2 = dt << Process Capability(
Process Variables( Eval( col_names ) ),
Spec Limits Dialog( "No (skip columns with no spec limits)" ),
Moving Range Method( Average of Moving Ranges ),
//Within Sigma Summary Report( 0),
Overall Sigma Summary Report(1),
Select Out of Spec Values( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Capability Box Plots( 0 ),
Process Performance Plot( 0 ),
Order By( "Overall Sigma Ppk Ascending" ),
By( :Wafer ID in lot ID )
);
dt << Clear Select;
Allí quiero comparar Ppk por parámetro para el conjunto de datos completo con la capacidad del mismo parámetro en una ID de oblea en una base de ID de lote . Con este fin, he elaborado el siguiente script y estoy luchando por crear una tabla de datos combinada (puedo hacerlo de forma interactiva) a partir del segundo análisis de capacidad.
Report( platform2)[Outline Box( "Process Capability" )][Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<
Make Combined Data Table;
platform2 << close window;
Finalmente, lo que quiero es un gráfico de Capacidad (eje y) versus ID de oblea en un ID de lote (eje x) generado a partir de la tabla de datos combinados con nombres de parámetros en la página (en Graph Builder). Además, necesito que el Ppk calculado desde el primer análisis de capacidad se muestre como una línea horizontal para cada parámetro. ¿Podría obtener ayuda aquí?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?¿Cuál es el problema cuando intentas crear la tabla de datos combinados? ¿Has comprobado qué contiene platform2?
Names Default To Here(1);
dt_full = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
dt = Data Table("Semiconductor Capability") << Subset(All rows, Columns(:lot_id, :wafer, :Wafer ID in lot ID, :SITE, :NPN1, :PNP2, :PNP3, :FNM1, :RES3, RSP2));
Close(dt_full, no save);
col_names = dt << Get Column Group("Processes");
obj = dt << Explore Outliers(Y(Eval(col_names)));
obj << Quantile Range Outliers(Tail Quantile(0.25), Q(1.5));
obj << Change to Missing(ALL);
obj << Close Window;
// Run capability analysis
pc = dt << Process Capability(
Process Variables(Eval(col_names)),
Spec Limits Dialog("No (skip columns with no spec limits)"),
Moving Range Method(Average of Moving Ranges),
Overall Sigma Summary Report(1),
Select Out of Spec Values(1),
Goal Plot(0),
Capability Index Plot(0),
Capability Box Plots(0),
Process Performance Plot(0),
Order By("Overall Sigma Ppk Ascending"),
Invisible
);
dt_nogroup = Report(pc)[Outline Box("Process Capability")][Outline Box("Overall Sigma Capability Summary Report")][Table Box(1)] << Make Into Data Table;
dt_nogroup << Set Name("Capability Report");
pc << close window;
// Run capability analysis by wafer in a lot
pc = dt << Process Capability(
Process Variables(Eval(col_names)),
Spec Limits Dialog("No (skip columns with no spec limits)"),
Moving Range Method(Average of Moving Ranges),
Overall Sigma Summary Report(1),
Goal Plot(0),
Capability Index Plot(0),
Capability Box Plots(0),
Process Performance Plot(0),
Order By("Overall Sigma Ppk Ascending"),
By(:Wafer ID in lot ID),
Invisible
);
dt << Clear Select;
dt_wafer = (Report(pc[1]) << top parent)[Outline Box("Process Capability")][Outline Box("Overall Sigma Capability Summary Report")][Table Box(1)] << Make Combined Data Table;
pc << close window;
Write();
Primero debe intentar crear el gráfico usted mismo; le sugiero que una los valores de Ppk de "referencia" a sus "datos" y los utilice como gráficos de líneas adicionales encima de cualquier otro gráfico.
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias. Estoy en JMP 16.2. Obtengo lo siguiente cuando intento obtener una tabla de datos combinada usando su script (obtengo lo mismo con el mío)

Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Ya no tengo acceso a JMP16, así que tendrás que descubrirlo tú mismo o alguien más tendrá que intervenir. Si no recuerdo mal, JMP16 no crea una lista de objetos cuando usas By, sino un solo objeto . Desde allí, debe encontrar el cuadro de tabla correcto (elija primero con la información correcta) y debería poder enviarle << Crear tabla de datos combinados.
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?¿Funcionará de esta manera?
(pc << XPath( "//OutlineBox[text()='Process Capability']//TableBox" ))[1]
<< Make Combined Data Table;
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias.
@Mark_Bailey Esto funciona
dt_wafer = Report( pc[1] )[Outline Box( "Overall Sigma Capability Summary Report" )][Table Box( 1 )] <<MAKE combined="" data="https://community.jmp.com/" table=""></MAKE>
Next I would like to produce a chart similar to the one below (or even better with Parameters in the Page option of Graph Builder) with the overall Ppk calculated (in table Capability Report) from the first part of the script as horizontal dashed line on y-axis for each parameter. I do not know how to get y-axis values from one table and use it on a chart produced from a different table so need some help on the JSL here.
<SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><span class="lia-inline-image-display-wrapper" image-alt="Neo_0-1722527733886.png" style="width: 721px;"><img src="https://us.v-cdn.net/6038925/uploads/images/66723i4C71FBE8A07B4359/Neo_0-1722527733886.png" width="721" height="351" role="button" title="Neo_0-1722527733886.png" alt="Neo_0-1722527733886.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN>
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Unir los valores de los datos de referencia. Primero cambie el nombre de la columna "Ppk", por ejemplo, a "Ppk Ref", luego use Actualizar y haga coincidir con Proceso

Luego cree el gráfico y agregue dos columnas al eje Y: Ppk y Ppk ref. Deshabilitar Ppk ref desde puntos y Ppk desde línea

Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Gracias. Esto funciona. Finalmente, ¿cómo muestro el valor de Ppk Ref para cada proceso en el eje y adyacente a la línea horizontal?
Además, ¿cómo cambiar el título del eje y de todos los gráficos a algo común (digamos "Capacidad") a través de JSL?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Con las versiones más nuevas de JMP es muy fácil, simplemente puede habilitar la etiqueta para la línea (no estoy seguro si esto ya estaba en JMP16):


Si eso no existe en JMP16, entonces usaría líneas de referencia y omitiría la actualización del Ppk de referencia de la otra tabla (en su lugar, las almacenaría en una matriz asociativa y las usaría al configurar los valores de referencia).
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi Sí, gracias. Encontré la configuración de etiqueta de habilitación en mi JMP 16.
Mi segunda pregunta, ¿cómo cambiar el título del eje y para todos los gráficos (a través de "Página") a algo común (digamos "Capacidad") a través de JSL?
Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?Usaría XPath e intentaría encontrar referencias correctas. Es posible que esto no funcione en todos los casos y que requiera algunos ajustes.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(528, 2954),
Show Control Panel(0),
Variables(X(:height), Y(:weight), Page(:age)),
Elements(Points(X, Y, Legend(15)), Smoother(X, Y, Legend(16)))
);
tebs = Report(gb) << XPath("//TextEditBox");
tebs[4::N Items(tebs)::2] << Set Text("Capability");Re: ¿Cómo obtener Ppk por parámetro y Cpk por oblea por parámetro después del filtrado de valores atípicos?@jthi . Gracias. En su lugar, opté por Wrap, que funciona para lo que necesito el gráfico. En este caso, solo hay que preocuparme por un eje y que puedo manejar en JSL.