Buenos días a todos. Gracias por su participación. Soy Chris Dennis, del equipo de Ingeniería de Aplicaciones de SUMCO. Para quienes no lo sepan, SUMCO es una empresa fabricante de obleas de silicio. Fabricamos las obleas de silicio que se utilizan como materia prima en el proceso de semiconductores. Hoy hablaré sobre la remezcla práctica de gráficos de control para gestionar tiradas cortas y big data, y encontraré algunos cambios utilizando diferentes técnicas. Compartiré brevemente el concepto y luego haré una demostración en vivo para explicar cómo crear los gráficos y cómo configurar scripts para personalizarlos y convertirlos en algo útil para los ingenieros de procesos.
Los procesos de fabricación actuales son realmente complejos. Todo avanza a gran velocidad. Se producen numerosos cambios en la fábrica a diario. Es habitual tener cientos de productos en ejecución y decenas de herramientas. El enfoque tradicional de SPC genera un gráfico para cada parámetro, herramienta y combinación de piezas. Estos gráficos pueden multiplicarse rápidamente hasta miles. La alta frecuencia de cambios complica aún más los gráficos, ya que pueden añadirse pocos puntos de datos durante la producción.
Este es un ejemplo de una compilación de gráficos de control de uno de los procesos de nuestra fábrica. Se puede observar que tenemos muchos cambios de piezas y solo unas pocas ejecuciones en cada gráfico. Las suposiciones de un gráfico de control de estado ideal fallan rápidamente, ya que no contamos con ejecuciones largas y consistentes, y los procesos cambian constantemente de condiciones. Con esto, las suposiciones para los gráficos de control se rompen y pueden volverse ineficaces en los gráficos. Al analizar nuestro proceso, tenemos más de un parámetro que añade complejidad. Las entradas influyen en las salidas y se correlacionan entre sí. Si se grafican todas por separado, se puede perder la visión general. El sistema podría desviarse de forma sutil y oculta, y el SPC clásico no lo detectará.
¿Y si pudiéramos cambiar esto? En lugar de graficar datos sin procesar, graficamos lo inesperado. Construimos un modelo que establece una predicción para cada punto de datos y luego graficamos los residuos, la diferencia entre la realidad predicha, la predicción y la realidad. Ahí es donde residen las sorpresas.
A continuación, presentamos una breve comparación de las ventajas del SPC tradicional, o gráficos de control de modelos, frente a los gráficos SPC tradicionales. Los gráficos tradicionales son ideales para procesos estables y sencillos, con un producto a la vez. Los gráficos basados en modelos son multivariables. Gestionan correlaciones. Eliminan la variación normal y detectan lo inesperado. Perfecto. Perfecto para datos desordenados como los que tenemos en nuestro proceso.
Podemos elegir diferentes modelos. Por ejemplo, un modelo PCA. El análisis de componentes principales funciona bien cuando se desea comparar estructuras naturales, como sensores o datos espectrales. El modelo de mínimos cuadrados parciales es excelente cuando se necesita una respuesta para predecir un atributo de calidad, y los modelos de regresión funcionan bien para relaciones conocidas simples. La clave está en elegir el modelo que se ajuste a los datos que se introducen y verificarlo. Hablemos de lo que vamos a construir y cómo lo hacemos en JMP.
El primer paso es estandarizar los valores que se grafican, especialmente en el caso de gráficos de control de corto plazo, donde las sigmas varían y los resultados no coinciden, ¿verdad? Es recomendable normalizar los datos. En mi experiencia, también ayuda con los gráficos multivariados, ya que un parámetro no domina la señal y sobrepasa a los demás. Esto iguala todo. El siguiente paso sería ajustar el modelo. En este caso, voy a hablar de uno que se puede realizar en JMP estándar (no se necesita JMP Pro), que es el modelo PCA. Este se utiliza en la plataforma de gráficos de control multivariados basados en modelos. Podemos ejecutar ese modelo y, en él, graficar los residuos y las estadísticas T² para cada punto de datos. Por lo tanto, queremos capturar esos residuos y guardarlos. Podemos tomarlos y crear un gráfico de control de corto plazo para observar cómo cambia y detectar eventos inesperados. Por supuesto, el último paso es establecer límites y alarmas en nuestro gráfico.
Hablemos de algunos aspectos y de por qué este gráfico podría ser realmente útil, o al menos creo que lo es. Primero, cada una de estas líneas punteadas verticales representa un cambio en el producto. Todos los productos están en un solo gráfico, y puedo ver qué está sucediendo, dónde puede haber una alta variación o eventos fuera de control. Lo bueno del gráfico de control multivariante basado en modelos es que puedo analizar en detalle estos puntos y, a partir de ellos, puedo ver, mediante un método univariante, qué parámetros están fuera de lugar. Puedo buscar elementos comunes. Y luego, puedo profundizar en el gráfico univariante. Creo que este es el poder de monitorear los residuos: tengo 20 parámetros apilados en este gráfico para el ejemplo que voy a mostrar, creo que son diez productos diferentes, y lo voy a quitar y puedo llegar hasta ese gráfico individual que habría hecho multiplicando 20 por 10 veces... Con cada herramienta, obtengo una vista más simplificada del gráfico.
Muy bien. ¿Por qué usar este enfoque? Parece funcionar bien para líneas de productos de alta variedad con datos de tiradas cortas. Está basado en modelos, por lo que es menos ruidoso. Ayuda a identificar lo que importa. Se escala fácilmente con scripts. Se puede tomar esto de un conjunto de herramientas y copiar fácilmente la metodología a otro conjunto de herramientas o a un escenario diferente. Y luego, para el ingeniero de procesos, el usuario que tiene que revisar esto, las herramientas visuales de JMP, la vinculación dinámica de datos, la capacidad de explorar los gráficos a fondo, agiliza y facilita la resolución de problemas y permite llegar al meollo de los datos rápidamente.
Ahora, quiero mostrar un ejemplo real y avanzar. En este ejemplo, crearé un script para el gráfico, luego seguiré los pasos y los modificaré para mejorar su apariencia y funcionalidad, haciéndolo más útil para los ingenieros de procesos y agilizando y facilitando su trabajo.
Muy bien. Vayamos a JMP y veamos la demostración en vivo.
Para esta presentación y en el sitio web, he incluido un diario. Contiene ejemplos de los datos, de los scripts y de los pasos para desarrollarlos. Comencemos con la tabla de datos. Tengo una tabla de datos. Estos datos están normalizados y depurados, así que pueden usarlos. Hay 19 o 20 parámetros de proceso diferentes que se utilizan para una herramienta. Hay una parte. Estos datos ya están preparados, así que no voy a hablar del paso de preparación. Ese es un paso completamente diferente de manipulación y configuración de datos. De lo que hablaremos es de cómo vamos a realizar este análisis. Si comenzamos y realizamos este análisis manualmente, este es el flujo básico. Voy a empezar aquí mismo en el paso del gráfico de control multivariante basado en modelos, capturar los residuos y luego construir un gráfico de control de corto plazo a partir de ahí.
Quiero crear un script para esto. Uno de los trucos que he estado usando para facilitar mi creación de scripts (no soy un experto en scripting) es usar el Generador de Flujos de Trabajo. Voy a activarlo y traer esa ventana aquí. La configuraré para que grabe ahora mismo y la minimizaré porque no necesito verla ahora.
Hablemos de cómo crear un script básico. Lo primero que haré será copiar un esquema para estos tres pasos. Abriré una nueva ventana de script. Configuraré el esquema. Primero crearemos el modelo, luego los residuos y, finalmente, el gráfico de control de corto plazo. Haremos eso. Volvamos a nuestro ejemplo de gráfico de control multivariante basado en modelos para el proceso de calidad del análisis de datos. La plataforma es bastante fácil de usar. Simplemente tomaremos todas las entradas y las introduciremos en los parámetros del proceso. La pieza, la introduciremos en el parámetro "Por" y pulsaremos "Aceptar".
Tenemos un gráfico aquí. Hemos generado el gráfico. Este es el gráfico del que hablamos. Tiene enlaces para ver cada uno de los diferentes parámetros. Vamos a lo siguiente y vamos... El siguiente paso en esto es capturar los residuos. Para capturar los residuos, simplemente iré a cada gráfico y guardaré los valores de guardado de la columna. Esto es un poco tedioso viéndome apuntar y hacer clic para recorrer estas 9 o 10 partes, así que me disculpo por eso. Cantaría y bailaría, pero no canto, y solo bailo con mi esposa porque no soy muy bueno en eso. Revisaremos y tomaremos estos un par más que quedan. Lo que eso hizo es crear una nueva columna en la tabla de datos para el T² por parte, y completó ese valor residual para cada línea en la tabla de datos. Ahora tenemos un residuo para cada punto que podemos trazar.
El siguiente paso es volver al menú del proceso de calidad. Podemos abrir el Generador de gráficos de control. Vamos a cambiar porque tenemos varios productos. Los pondremos en el mismo gráfico. Los pondremos en un gráfico de control de tirada corta. Empezaremos por pieza. Toma eso y hazte cargo. Y luego, en lugar de graficar las entradas en estos puntos individuales, vamos a graficar los residuos. Arrástralos al eje y. Ahora, tenemos un gráfico de control de tirada corta con... Observa los diferentes cambios de pieza. Hay bajo control. Hay fuera de control. Los tenemos para todas estas diferentes piezas. Eso es prácticamente lo que nos propusimos hacer desde el principio. Voy a cerrar esto y luego volvamos ahora. Volvamos y tomemos nuestro Generador de flujo de trabajo y detengamos la grabación. En el Generador de flujo de trabajo, hemos capturado todos los pasos para hacer este gráfico.
Lo que quiero hacer ahora es seguir estos pasos e integrarlos en mi script. Tengo el paso de residuos del modelo a corto plazo. Cada uno de ellos son pasos diferentes dentro del Generador de Flujo de Trabajo de los pasos que hicimos. Simplemente puedo tomarlos, copiar el script desde aquí y agregarlo aquí. Veamos rápidamente lo que tenemos. Tenemos el gráfico de control multiparamétrico basado en el modelo. Tenemos mucha información específica de cada pieza. Como quiero que este sea un script general, voy a eliminar esa información. Esto me permitirá transferirla a un grupo diferente de piezas. Hacerlo menos específico y más transferible más adelante. Ahora, tengo esta línea de llamada.
El siguiente paso, veámoslo, también llama a este gráfico de control multivariado impulsado por modelos, pero al final aquí vemos que lo hemos guardado como un objeto y hemos guardado los valores del gráfico T².
Esto es lo que quiero hacer para capturar esos residuos. Voy a hacer un poco de trampa porque probablemente cometeré un error al escribir esto, pero voy a tomar una línea aquí que básicamente crea un bucle para obtener estos residuos; es el mismo comando T², guardar valores. La única diferencia es que noté que tenía un objeto aquí que estoy recorriendo y ajustando. Voy a poner el nombre de ese objeto aquí cuando cree esos gráficos multivariados.
El último paso es volver aquí y crear el gráfico de control de corto plazo. Lo copiaré y lo llevaré aquí. Lo añadiré a la sección del gráfico de control de corto plazo. Haré una pequeña limpieza aquí. Asegúrate de terminar estas instrucciones con un punto y coma.
No continuaré esta línea, así que quitaré la coma. Ese es mi script básico. Capturé todo del Generador de Flujos de Trabajo y lo incorporé al script. Ahora estoy listo. Puedo ejecutarlo. Tengo el gráfico multivariante y el gráfico de control de corto plazo. Eso es exactamente lo que quería hacer. Si, como usuario, veo esto y pienso: "Mira, algo que no me gusta de inmediato es que tengo que cambiar de gráfico para acceder a las cosas, y me gusta mucho este, donde puedo explorar en profundidad y ver las diferentes cosas que están sucediendo". Quiero aprovechar esa funcionalidad y añadirla directamente a este gráfico. Es bastante fácil con JMP. Podemos ir aquí y guardar el script de este gráfico en el portapapeles. Luego, podemos pegarlo como un nivel flotante y pegar Graphlet.
Ya lo tenemos. Es bastante fácil. Quiero añadirlo a mi script, pero olvidé activar el Generador de Flujos de Trabajo. Me sentí muy mal la primera vez que lo hice, y mientras lo revisaba, pensé: "¡Vaya!". El Generador de Flujos de Trabajo no lo capturó, pero hay una solución sencilla. Podemos ir al script de este gráfico. Podemos guardar el script en una ventana de scripts. Podemos traerlo. Puedo revisarlo y ver qué hay de diferente con mi script. Está aquí abajo, en el gráfico de control de ejecución corta. La diferencia, o donde se vuelve diferente, es que después de mostrar el panel de control, tengo toda esta información para enviarla al informe y crear el Graphlet para configurarlo. Voy a tomar todo eso, traerlo de vuelta aquí y pegarlo.
De nuevo, recogí toda la información de esta pieza. Solo voy a borrar esas líneas como hice antes. Asegúrate de que el espaciado sea correcto. Ahora, debería tener un script que creará ese gráfico con un Graphlet. Volvamos aquí. Cerremos esto porque no quiero volver a hacerlo. Cerremos esto, no necesito ver eso. Veamos nuestro script. Ejecutemoslo y veamos si obtuvimos lo que queríamos. Veamos aquí. ¡Boom! Lo tengo. Genial. Ahora, es un Graphlet, lo puse y... Por supuesto, obtuve lo mismo. Mira esto, esto está bien, pero personalmente me gustaría tal vez solo obtener el gráfico de la parte que estoy viendo cuando hago clic y no tener que desplazarme por todos estos y tenerlos todos en un solo lugar.
La forma en que lo haré, y de nuevo, me disculpo por no explicarlo detalladamente, pero por cuestiones de tiempo, voy a añadir un filtro de clic. Para añadir este filtro, voy a entrar aquí, que es la declaración de imagen dentro del Graphlet. Voy a añadir un comando diferente y definir la parte según el clic. Luego, volveré a crear el gráfico y añadiré un filtro de datos local para mostrar solo el gráfico de ese elemento. Con esto, espero que esto nos lleve a donde ahora tenemos un script que puedo revisar, puedo seleccionar un punto aquí. En este punto, puedo hacer clic aquí y generar ese gráfico de control con solo un clic. Comparémoslo con lo que teníamos originalmente. Esta es la parte 22. Veamos. Este gráfico y este otro no se ven iguales. Así que puede que haya algo aquí.
Aquí muestro dos gráficos fuera de control bastante fuertes. Aquí, solo tengo uno. La gran diferencia, si se fijan, es que el número de componentes principales en este gráfico es de cinco componentes principales. Aquí hay ocho. Al añadir ese filtro, perdí la parte dentro de ese gráfico multivariable que estaba colocando y reduciendo esos componentes principales para cada parte a un nivel diferente. Si revisan cualquiera de estos, verán que ahora todos están en ocho, cuando ninguno de ellos estaba en ocho antes. Podemos arreglar eso. Nuevamente, por cuestiones de tiempo, solo voy a añadir el script aquí, pero este es un enfoque de fuerza bruta y estoy seguro de que hay un enfoque mejor por ahí, pero lo que voy a hacer en el script original, después de haber guardado los residuos en la tabla, voy a obtenerlos manualmente. Cómo lo estoy haciendo realmente es ejecutar solo un valor de componentes principales independiente.
Voy a obtener el valor de ese componente basándome en el valor propio que sale, y la rutina funciona básicamente usando el número de componentes principales mayor o igual al 85%. Capturaré esos datos. Los pondré en una tabla. Y luego, puedo usar esa tabla para filtrar. En mi filtro de clic, necesito agregar un par de comandos aquí abajo también. Lo primero que haré es tomar esto y lo explicaré. Es de esa tabla de componentes principales, voy a seleccionar el valor donde la parte es igual a p. Ese es el valor de interés. Y luego, lo segundo que haré cuando cree el gráfico de control multivariante es agregar y establecer el número de componentes. Eso es algo que eliminé todas las demás veces por parte, porque quería facilitar el ajuste del número de partes. Con esto, ahora el número de piezas es más flexible, más ajustable.
Ahora puedo hacer cualquier cosa con esto. Veamos si copié y pegué todo correctamente. Aquí es donde esperaba que las cosas fallaran, pero veamos si funcionó. ¿Sabes qué? Voy a hacer esto dos veces porque no sé. Mostré un par de cosas volando y apareciendo en la pantalla. Lo primero que quiero mostrar es que tengo esta tabla de piezas y componentes. La pieza 22 es la que vimos antes de los cinco componentes. Verifiqué esto un par de veces y están bien. ¡Genial! Tengo esta tabla. Es ese filtro de clic que se aplicará a cada pieza. Toma este valor para asegurarme de obtener el gráfico correcto. Aquí está mi gráfico. Ahora tengo este gráfico de control de tirada corta de nuevo. Cada vez que las líneas discontinuas verticales van, estoy cambiando piezas.
Veo que tengo varios OC y algunas cosas que no lo son. Veamos qué nos dice este gráfico. Entramos, seleccionamos uno y lo colocamos en la otra pantalla. Tengo este gráfico y puedo explorarlo a fondo. Veo que hay algunos puntos donde el gráfico de control univariante estaría fuera de control. Esto se indica con el rojo. Puedo hacer clic en una de estas barras, explorar a fondo ese gráfico y mirarlo individualmente y decir: "Bueno, eso es todo. Lo que sea que eso signifique". Voy a dejar este abierto, pero voy a entrar y este tiene tres puntos. ¿Qué está pasando? Voy a hacer clic, abrir este gráfico y seleccionar estos tres puntos fuera de control que vi aquí.
Ahora puedo entrar y, en lugar de apuntar y hacer clic, puedo ver el gráfico de contribuciones desde el menú, pero puedo abrirlos todos a la vez. No tengo que hacer clic individualmente en esos gráficos. Me gusta mucho esto, especialmente al ver varias cosas, porque apila el gráfico de cada muestra uno encima del otro, ¿verdad? Puedo ver rápidamente qué está pasando si hay algo en común. Este tiene algo aquí. Estos no, pero justo aquí en el medio, estos cuatro elementos son todos diferentes. Eso para mí es interesante. Es algo que debería ir a explorar. Cuando miré este, las mismas cuatro entradas tenían la misma señal aquí eran diferentes en este. Tal vez tengo algún problema sistemático. Además, por supuesto, puedo entrar y puedo profundizar en este gráfico y ver algunos de estos individualmente, y esto es interesante porque todos eran diferentes.
Ninguno tenía OC, pero sí lo tienen en diferentes direcciones. Dos son altos, uno es bajo. Es interesante. Me da una herramienta que me permite acceder a una parada del gráfico y analizar rápidamente los puntos en común para ver dónde podría interesarme investigar algo.
Me gusta eso y daré un par de ideas al respecto. Al analizar estos gráficos, encontramos diferentes problemas. Encontramos problemas con válvulas que no se abrían ni cerraban correctamente. Encontramos problemas con la configuración del proceso, donde quizás estamos fluyendo más gas del necesario. Básicamente, estamos desperdiciando dinero innecesario, y encontramos problemas, o mejor dicho, problemas, pero encontramos problemas donde hemos llevado las entradas a un punto de inestabilidad, lo que podría haber causado inestabilidad en el producto que quizás no medimos en otro lugar. No lo sabemos.
Simplemente se alinea con esta situación en la que miras las entradas y puedes ver qué tan bien funcionan tus entradas y buscar anomalías en tus entradas, lo que puede ayudarte a ahorrar dinero y a evitar posibles problemas.
Esa es la demostración. Tengo una diapositiva más que quiero compartir con ustedes y comentarles. En cuanto a las referencias, tenía varias. Primero, vi en Discovery el año pasado, y también revisé de nuevo desde JMP online, la presentación de Mike Anderson sobre gráficos de control de tiradas cortas. Me fue muy útil. También el libro Short Run SPC de Don Wheeler. Si les interesa, es muy útil y muy fácil de seguir. Contiene muchísima información útil. Control innovador, gráficos, inteligente y justo. Es una mina de oro de recursos y se integra perfectamente con muchas de las aplicaciones de salto. Se lo recomiendo. Además, encontré en la comunidad JMP la presentación sobre métodos multivariantes. Me pareció muy útil. Y, por último, quiero agradecer especialmente a Jed Campbell, del equipo de Rocky Mountain JMP, por animarme a seguir con esta idea y ayudarme con algunos de los desafíos de scripting que encontré. Gracias por su tiempo y espero que tengan un buen día.