Hola. Me llamo Byron Wingerd y soy ingeniero de sistemas de JMP. Suelo trabajar con empresas farmacéuticas de la Costa Este. Hoy voy a hablar sobre la detección de pequeñas variaciones. Se trata de analizar datos de procesos o ensayos para intentar comprender cuándo se producen pequeñas variaciones y cómo detectarlas. Analizar los datos, incluso retrospectivamente, para intentar comprender cuándo pudieron haberse producido variaciones en el pasado. Hablamos de encontrar señales en el ruido de los datos que se capturan continuamente.
Tengo algunas advertencias para ti. Tu proceso no te quiere. Tu sistema, sea cual sea tu proceso, ya sea un sistema de medición o de fabricación, purificaciones, sea cual sea el proceso, es más sensible a la variación de entrada que tus métodos de control de calidad. ¿A qué me refiero? Eso que buscas, como la pureza, es genial si puedes detectarlo, pero no podrás detectar cosas que no esperas encontrar.
Además, los certificados de autenticidad de los proveedores, especialmente de productos químicos, a veces simplemente se copian de un lote a otro. No hay muchas advertencias sobre pequeños cambios en las materias primas entrantes, a menos que se cuente con métodos extremadamente sensibles para detectarlos. Para la gran mayoría de las personas, estos simplemente no existen.
Tengo otra advertencia para ti. ¿Tus programas de seguimiento y tendencias? No te aprecian. En parte es culpa nuestra. Nos hemos vuelto complacientes. Todo el mundo dice que si tienes demasiadas alarmas, la gente empieza a ignorarlas. Pero la otra cara de la moneda es que no hay alarmas. Todo parece ir bien. Todo está bajo control. No tenemos que preocuparnos por nada. Además, dejamos de analizar los datos con atención. Entre este problema de no poder detectar cosas que afecten a nuestro proceso, y además que todo parece ir bien, no estoy analizando con tanta atención, podemos tener problemas.
¿Por qué usamos gráficos de control? ¿Por qué usamos SPC, CPV, o como queramos llamarlo? Lo principal es diferenciar la variación por causa común de la variación por causa especial. Es un mecanismo para responder a los cambios en el proceso que detectamos. Con la estadística, podemos ser bastante sensibles a lo que encontramos. También podemos automatizar alertas para detectar cosas cuando, bueno, no estamos prestando atención.
Pero todo este seguimiento y análisis de tendencias no es realmente opcional. Si trabajas en el sector farmacéutico, es obligatorio por ley. Si te dedicas a cualquier otro tipo de fabricación, la norma ISO 9000 también lo exige. No es opcional. Todos deberíamos hacerlo y supervisar nuestros procesos.
Otra advertencia: tu proceso podría estar advirtiéndote discretamente sobre cosas que te van a afectar más adelante. A esto me refiero. Existen experimentos de fabricación accidentales. Hay situaciones límite. Como, por ejemplo, casi se sale de control o casi se pierde el control de ese lote. Hay cosas raras que no están fuera de control, pero puedes encontrar pequeños cambios en los datos. El problema es que no puedes ver lo que no buscas.
Por otro lado, no queremos dejarnos engañar por la aleatoriedad, sino simplemente buscar señales aleatorias. Este es el objetivo de los gráficos de control. Solo queremos responder a la variación por causas especiales, no a la causa común. Nos encontramos en ese margen, como si estuviéramos observando los datos en el medio.
Me gustaría hablar sobre la aplicación de algunas herramientas disponibles para detectar pequeños cambios. Contamos con gráficos CUSUM. Son fantásticos. Idealmente, se usarían prospectivamente, buscando cambios ocurridos. Se trata de la suma acumulada de los movimientos ascendentes o descendentes en un proceso. Disponemos de diferentes métodos para interpretarlos. Otro método muy útil son los gráficos EWMA o de media móvil ponderada exponencialmente. Son realmente buenos.
Luego podemos adentrarnos en la idea de la detección de puntos de cambio. Aquí es donde se abordan algunos aspectos del análisis multivariante. Hablaremos de algo llamado Lazo Fusionado, y quizás incluso usaremos métodos de árbol como partición, cribado de predictores y bosque bootstrap para detectar pequeños cambios, desplazamientos y desviaciones. En JMP contamos con excelentes herramientas para analizarlas, y me gustaría hablar sobre algunas de las claves.
CUSUM es una herramienta excelente para detectar pequeños cambios en un proceso, especialmente desviaciones que ocurren lentamente y luego se aceleran. Podemos detectarlas observando patrones en los gráficos que se destacan de forma muy evidente. Antes, existía todo esto de la Máscara V, que permitía observar la Máscara V y el flujo de datos, y parecía un poco superficial. Funciona. Es totalmente fiable. Pero en JMP, reconstruimos la plataforma hace un par de años para que se parezca más a un gráfico de control convencional. Es muy práctico de usar.
Ese gráfico de control, el CUSUM, utiliza algunos parámetros. Está el Sigma, que indica la magnitud de la diferencia que se desea detectar. Está la ventaja inicial, como la respuesta inicial rápida. Hay un valor H y un valor K que analizan la magnitud del cambio que podemos detectar y lo que define el Sigma que utilizamos: el intervalo K-Sigma. Algunos parámetros deben ajustarse para obtener una precisión óptima.
Ahora, otro gráfico de control que mencionamos fue el EWMA. Este es un gráfico de control con memoria limitada, donde CUSUM analiza la suma acumulada. El EWMA tiene memoria, y la pregunta es: ¿hasta qué punto se permite que las observaciones previas lo influyan? Se puede ponderar esa memoria exponencialmente. De nuevo, tiene algunos parámetros. Tiene el objetivo, la sigma y, especialmente, la lambda. La lambda es ese suavizado, es decir, ¿hasta qué punto en la memoria se recuerda todo, nada o algo intermedio durante esa espera?
Ambos métodos, muy comunes para detectar cambios y desviaciones, requieren cierta experiencia y conocimiento para su uso. Es fundamental saber cómo configurarlos para detectar exactamente lo que se busca, ya que podrían detectarse o pasarse por alto elementos inexistentes si se sobreajustan los parámetros y no se pueden tomar decisiones precisas.
¿No sería genial si pudiéramos contar con alguna herramienta, no sé, de aprendizaje automático, que realizara esas llamadas por nosotros, sin que se viera afectada por nuestra experiencia y conocimientos? Sería genial. Existe un método que nos ayuda a lograrlo: Fused Lasso. Forma parte de las herramientas de los métodos de regresión modernos avanzados. Es una herramienta que podemos usar mediante la regresión generalizada. La regresión generalizada es una función de JMP Pro. Es un método de regresión penalizado.
Anteriormente, se hablaba de esto como un método para encontrar puntos de cambio. Requiere cálculos matemáticos complejos e ideas bastante complejas sobre cómo encontrar dónde podrían estar esos puntos de cambio en los datos. Debo mencionar que hace 10 años, Clay Barker presentó esta idea en una de sus charlas sobre Genreg, detección de puntos de cambio y lazo fusionado.
Creo que es una de esas cosas que terminó siendo una nota a pie de página, y es muy importante. Llevo usándolo un par de años, pero he visto que no mucha gente lo conoce. O sea, me quedo con cada palabra que dice Clay Barker; es mi héroe. Pero quizá no todos los demás.
En este punto, quizás digas: "Oye, Byron, necesito que te pongas un poco más serio. ¿Métodos de regresión modernos avanzados? ¿Genreg? Me siento un poco desesperado porque estás hablando de algo como JMP Pro y de matemáticas muy complicadas que no quiero entender". Resulta que esto es solo un poco complicado. Es relativamente fácil de configurar, y puedes configurar una forma de detectar señales que podría tener alguna ventaja sobre los métodos más simples.
Un poco de contexto. Algo que se ha usado durante mucho tiempo es algo como la plataforma de partición en JMP. Si se usa el tiempo como X e Y como las respuestas que se están analizando, se puede usar para encontrar los puntos donde la media ha cambiado con el tiempo, especialmente si se usa una programación regularizada, como el número de fila o algo similar. Funciona bastante bien para detectar dónde los datos de proceso podrían haber cambiado, como podría haber ocurrido el cambio en la media. Puede encontrar algunos de esos puntos de interrupción. Es bastante bueno en eso.
Hay un par de pequeños problemas. Si los puntos de interrupción están demasiado cerca, no los encuentra. Si el ruido es demasiado grande, no los encuentra. Si hay muchos, podría encontrar solo el primero y no los siguientes. Pero es una idea genial porque, al igual que el lazo fusionado, lo que se hace es buscar vecinos de grupos con medias similares y luego encontrar diferencias en las medias. Eso es exactamente lo que ocurre con la partición.
Volviendo a las técnicas avanzadas de regresión, necesitamos configurar una estructura de datos especial con una instrucción JSL muy simple (y con simple, me refiero a breve, no realmente simple) que generará una matriz. Esta matriz se ve así en la diapositiva. Imaginen una matriz diagonal donde la primera columna tiene solo unos, la siguiente columna es cero, y luego todos unos. La siguiente columna es cero, cero y todos unos. Tenemos una columna para cada fila que queremos analizar en nuestra tabla de datos.
Si tenemos cien filas de datos, obtenemos cien columnas. Si tienes mil filas de datos, obtienes mil columnas en esta matriz diagonal. Para simplificar, más adelante la llamaré matriz de descubrimiento, pero es un término inventado y totalmente erróneo. Sin embargo, a mí me funciona.
Anteriormente, al configurar esto, podíamos usar esta matriz de descubrimiento y la plataforma de partición para hacer lo mismo. Esto lo hacía mucho más sensible para detectar las rupturas, ya que encontrábamos esta columna que corresponde a un cambio en la media. Esa columna es la fila del conjunto de datos. Funcionó muy bien y fue bastante sencillo de configurar.
Los JMP han cambiado mucho en los últimos años. Una de mis funciones favoritas de JMP es el cribado predictivo. Este cribado crea muchos árboles y luego los promedia.
Bien, aquí está la clave. En el análisis de predictores, se crearán, digamos, 100 árboles y se tomará una muestra aleatoria de las columnas de la matriz de descubrimiento y una muestra aleatoria de las filas de mis datos, simplemente observando una muestra aleatoria de la Y que intento explicar. Construirá un árbol. Lo hará una y otra vez.
Lo que ocurre es que la parte donde un desplazamiento podría estar cerca de otro no aparece en todos los árboles. Podemos encontrar otros desplazamientos cercanos. Podemos encontrar muchos desplazamientos en ese conjunto de datos. Esto resuelve algunos de los problemas que presentaba la partición: no se podían encontrar elementos cercanos ni más de un par de desplazamientos si se producían. Esto nos permite encontrar mucho más.
Configuré un entorno de pruebas para comprobar su funcionamiento. ¿Qué tan pequeño es pequeño, y cómo se ve mi entorno de pruebas? Bueno, quiero encontrar cosas que representen un cambio de 1 a 2 sigma. Quiero encontrar cambios sistemáticos. Es como lo que estoy haciendo con los experimentos de fabricación accidentales o los cambios en las materias primas que ocurrieron. No nos descontrolaron, pero podrían haberlo aumentado un poco. Cuando esa cantidad de material se agota, se reduce de nuevo. Estos son cambios minúsculos que ocurren mientras nuestro proceso está en marcha, y esto me permite retroceder y diagnosticar algunos de ellos. Quiero cosas realmente pequeñas que estén sucediendo.
Imagínense algo así: en mi entorno de pruebas, tengo unas 200 filas. En las primeras cien filas, tengo un desplazamiento en 33 + 1, y luego un desplazamiento descendente de -1 en 66. Digamos que tengo una media de 3, y subo a 4, y luego vuelvo a 3, que es mi media. Hay ruido asociado. Esta es una imagen muy clara y bonita. La ves y piensas: "Bueno, Byron, si empiezas a analizar datos como esos, puedo encontrarlos todo el tiempo". Bueno, pero te diré la trampa al final.
En el rango azul de esto, no tengo desplazamiento. En las primeras 100 filas, tengo un desplazamiento definido. En el segundo desplazamiento, no hay nada. Aquí es donde está el ruido. Nunca debería encontrar nada en esta sección, y siempre debería encontrar un desplazamiento en 33 y 66.
Es bastante atrevido decir que tengo un método que puede hacer esto cuando la señal es fácil de encontrar. Pero supongamos que mis datos se ven así. Digamos que tengo varios miles de conjuntos de datos. Todos están graficados uno sobre el otro. Hay una neblina, y siempre quiero encontrar ese desplazamiento en 33 y 66. En promedio, aún puedes mirar estos datos y pensar: "Sí, Byron, puedo ver perfectamente que está ahí". Pero algunos de estos se desplazarán de forma muy clara, otros no, y algunos solo tendrán ruido o se desplazarán por casualidad en esa sección azul. ¿Qué tan bien detecto un cambio o no lo detecto?
Aquí hay un ejemplo para aclararlo un poco. Alrededor de 33, con solo mirar ese primer cambio, puedo ver que algo subió. Pero ese segundo cambio es como una tendencia bajista. No está muy claro. En mi análisis de ausencia de deriva o cambio hacia el final, ¿está subiendo? ¿O hay un patrón de dientes de sierra? No estoy seguro. Estos cambios pueden no ser fáciles de ver o detectar.
Bien, voy a ponerme nervioso un poco y les mostraré cómo se ve esto en la vida real. Luego, volveremos a evaluar algunos resultados. Bien. Aquí está mi caja de herramientas. Tengo una muestra aleatoria de datos, y esta de aquí tiene un desplazamiento hacia arriba, marcado con una línea roja, y un desplazamiento hacia abajo, marcado con una línea roja. Es solo un gráfico de control de los datos. Con solo mirarlo, me costaría decir que sí, que realmente hay algo ahí.
Bajo aquí y observo un gráfico de control CUSUM. Las líneas moradas indican dónde podrían ocurrir cambios. Aquí podemos ver claramente, alineadas con las rojas, que CUSUM detecta ese cambio. Si cambio los valores de K, H y Sigma, puedo aumentar la sensibilidad. Fijémoslo en 0,15. Ahora, al cambiar el valor de K que estoy viendo, puedo reducirlo un poco. Lo reduciré aún más. No encuentro 66, pero sí algo aquí, en este rango de 80-90. Indica que algo ocurre. Pero esta es una buena prueba.
Puedo bajar aquí y aquí está mi gráfico EWMA. Permítanme agrandarlo un poco. Tengo mi control deslizante Lambda y puedo cambiarlo. Si voy aquí, no hay memoria. Si voy aquí, hay memoria completa. Es prácticamente igual que un gráfico CUSUM. Ya lo dije, y sé que hay gente que trabaja mucho con gráficos de control que lo escuchará. Por favor, no me echen por decirlo, pero es lo que hay. Aquí, al disminuir esto o aumentar Lambda, puedo identificar puntos de cambio cerca de 33, pero no encuentro nada cerca de 66.
Veamos el tercer método. Aquí estoy usando el cribado predictivo y acabo de crear un pequeño diagrama de Pareto. En el cribado predictivo, configuré mi matriz de descubrimiento. Podemos echar un vistazo al conjunto de datos rápidamente. No, no voy a mirar el conjunto de datos. Créanme, está ahí. Lo que veo aquí es la primera suposición. Indica que podría haber un cambio en la fila 33, y la suposición número 2, el rango número 2, es 65. Vemos algo aquí en 142, y luego en 35, y luego en 40, y 80, 70. Nuestras primeras suposiciones están dando en el blanco.
Lo que hice fue dibujar en este gráfico una línea azul para cada una de las filas indicadas en la pantalla del predictor. La proporción que explican es el grosor de la línea azul. Indica: "Creo que vemos algo alrededor de 33 y algo alrededor de 65". Esto es bastante efectivo para detectar ese desplazamiento en la media a medida que avanza, porque pueden ver que hay un punto justo aquí, y si lo ignoraran por completo, parecería que hay un desplazamiento de este elemento en relación con este otro. Pero nuestros ojos lo detectan, y los otros métodos también lo detectan, e intentan incluirlo. Sin embargo, no se incluyó en todos los árboles, así que nos permitió detectar ese desplazamiento, lo cual es bastante interesante.
¿Con qué frecuencia funcionará correctamente? Me gustaría saberlo. Voy a volver a PowerPoint. Reanudemos la tarea. Lo que hice fue simular miles de estos datos individuales del conjunto. Cada uno tenía el mismo ruido, y algunos eran fáciles de detectar, otros difíciles, pero miles. Ejecuté el perfilador de predicción con cada uno de esos conjuntos de datos, capturé los primeros 10 rangos y verifiqué si se había seleccionado la fila correcta.
Esto es lo que descubrí. La mayoría de las veces, seleccionamos muy cerca o justo en los puntos de cambio que hemos definido. Con muy poca frecuencia, seleccionamos puntos que están en ese ruido por encima de 100, donde sé con certeza que no pasa nada. Parece que funciona bastante bien.
Veamos algunas estadísticas. Esto aplica a 8000 entornos de prueba diferentes. Para cuando lleguemos al descubrimiento, probablemente la cifra será mayor. Calificados con el cribado de predictores, solo usamos 100 árboles, y analizamos los 10 primeros puestos, y obtuvimos una ventana de +/- 3. 33 +/- 3, y 66 +/- 3. ¿Seleccionó dentro de ese rango? Para ambos, estando simultáneamente entre los 10 primeros, el 95 % del tiempo, sí. Encontró 33, el cambio en 33, el 90 % del tiempo, y 66, el 92 % del tiempo. Está haciendo un buen trabajo al encontrarlos, lo cual es fantástico.
En este gráfico, intento expresar la idea de sensibilidad y especificidad. En el cribado predictivo, obtenemos los primeros 10 rangos, los primeros 10 resultados. Pregunto: ¿en la ventana de ±3 o en la de ±12, qué porcentaje de las veces? La primera selección la obtenía casi siempre. En el ruido, la primera selección, o especialmente las primeras cinco, aparecía con muy poca frecuencia. Es un método bastante bueno y sensible.
Conclusiones. Primero, la detección de pequeños desplazamientos es realmente accesible mediante múltiples métodos en JMP, pero esta idea de usar el método de lazo fusionado es fantástica. Habrá un pequeño huevo de Pascua en el Constructor de Gráficos de JMP 19, una de las personalidades de línea. No lo sé con certeza, pero compruébalo cuando salga la versión 19. Estos métodos avanzados son bastante sencillos porque se puede usar un script para generar la matriz de descubrimiento. Sin necesidad de ajustes, este método de lazo fusionado funciona muy bien. Solo se necesita un poco de habilidad y mucha oportunidad.
¿Habrá algún script que pueda usar para hacer esto yo mismo? ¿Compartirán la herramienta Sandbox? Sí. Para cuando salga Discovery, habrá un complemento muy útil. Podrán seleccionar sus datos, usar la herramienta Sandbox y la herramienta Explorer para detectar múltiples desplazamientos. Además, volveré a publicar el script que Clay usó para crear la matriz de Discovery. Espero que les sea útil, o al menos entretenido. Espero verlos en Discovery. Si me ven en el pasillo, salúdenme. Debería estar allí.
Nos vemos luego. Manténganse alerta.