Planificar y ejecutar un diseño de experimentos (DOE) puede ser una tarea compleja que involucra a múltiples especialistas. Tras el experimento, persisten los desafíos de analizar, interpretar y comunicar los resultados, especialmente cuando las partes interesadas tienen distintos niveles de experiencia técnica. Para agilizar este proceso y estandarizar nuestro flujo de trabajo, desarrollamos un script que visualiza automáticamente los resultados del DOE. Este script genera dos gráficos intuitivos que representan eficazmente los hallazgos.
El primer gráfico ilustra la variabilidad total de cada variable de interés, indicando el grado de influencia que puede tener cada una según el DOE. El segundo gráfico resume la sensibilidad de la variable de interés a los cambios en las variables de entrada.
Nuestro script está diseñado para ser flexible, lo que permite añadir nuevos cálculos y normalizar gráficos según sea necesario. Esta herramienta ha mejorado significativamente nuestra eficiencia, ahorrando aproximadamente dos horas por gráfico en comparación con los métodos manuales. Además, el formato de visualización estandarizado mejora la comunicación con las partes interesadas sin conocimientos técnicos, haciendo que los resultados del DOE sean más accesibles y fáciles de comprender.
En NNE, ayudamos a muchos de nuestros clientes con el diseño de experimentos y DoE por diversas razones. Por ejemplo, pruebas de robustez, mejora de procesos y validación. Uno de los grandes desafíos que enfrentamos con frecuencia es comunicar los resultados a las partes interesadas. Puede haber muchos desafíos. Algunos de ellos podrían no tener tanta inclinación por la estadística o las matemáticas como nosotros.
En algunos casos, incluso podría tratarse de una leve fobia a las matemáticas. Muchos no estarán familiarizados con la interfaz de JMP, por lo que también puede resultar un poco intimidante, o simplemente la complejidad del modelo que hemos creado podría dificultar su análisis o comprensión.
Otro factor importante es que algunos de nuestros análisis han sido bastante laboriosos y laboriosos. Puede ser un poco aburrido. Cuando uno se aburre, también comete errores, y eso no es bueno.
Lo que queríamos era crear un método que nos permitiera generar gráficos de forma rápida y sencilla. Pudiéramos mostrar los resultados a las partes interesadas. Deberían generarse automáticamente, para reducir los errores, y ser rápidos, para no perder demasiado tiempo esperando los resultados. Debería ser compatible con muchos modelos, ya que trabajamos con ellos.
Ya habíamos creado los gráficos previamente. Aun así, nos llevó mucho tiempo. Generalmente, creamos dos gráficos: uno para visualizar el rango del resultado y otro para visualizar su sensibilidad a las variables que usamos en nuestro DoE.
Encontramos una forma de automatizar el análisis, donde hacemos los cálculos necesarios exportando nuestros modelos a Python, resolviendo algunos problemas de optimización global y luego visualizando los resultados en JMP, y luego normalizando el resultado allí también para permitir comparaciones.
Pueden ver uno de los gráficos aquí. Es el que creamos. Ese es el gráfico de rango. Aquí tenemos un gráfico de sensibilidad. Para este gráfico, hemos creado un pequeño ejemplo. Los datos provienen de diferentes cultivares de soja, donde modelamos el rendimiento del cultivo y luego creamos este gráfico.
Puedo mostrar el proceso de creación de este gráfico. Es bastante sencillo. Tenemos los datos aquí. De alguna manera, hemos creado un modelo. Esa coma aparece aquí. Luego, desde nuestra herramienta, simplemente presionamos un pequeño botón y se ejecuta. Para algunos modelos, especialmente si hay muchos niveles en algunas de las variables nominales, puede ser un poco intensivo. Debe resolver un problema de optimización global para cada combinación, pero incluso en los casos más grandes, obtenemos los resultados bastante rápido.
Aquí pueden ver el resultado. Tardó unos 20 segundos. Desde aquí, podemos trazar lo que queramos. En general, se creará un gráfico. Pueden personalizarlo como quieran. Algunas de estas variables son solo para análisis. Aquí, tenemos un gráfico casi instantáneo donde podemos ver lo que queremos y comunicarlo fácilmente a las partes interesadas.
Por ejemplo, para este conjunto de datos, podríamos querer encontrar el mejor cultivo según la temporada. El punto que se muestra aquí es el valor nominal. Es decir, el rendimiento que obtendremos si usamos el cultivo y todos los demás ajustes se establecen en el valor medio. El rango (la barra aquí) muestra el rango que puede tomar el valor.
Para este cultivo, el valor puede oscilar entre 4700 y 4000 aproximadamente. Las líneas punteadas representan los límites de control, es decir, la desviación estándar libre nominal más menos, junto con, en este caso, los límites objetivo y especificado. Podemos ver inmediatamente que, para la temporada 1, tenemos tres o cuatro buenos candidatos que se encuentran dentro de nuestros límites, e incluso uno que se acerca casi al objetivo.
Podemos llevarlo a la segunda temporada, donde generalmente son un poco más bajos, pero aún podemos encontrar algunos que funcionen. Este fue un caso de uso. Ahora podemos cerrarlos todos. Además, esto solo tenía una variable de salida.
Otro caso es que podemos tener más de un resultado, y estos resultados pueden tener diferentes escalas. Aquí tenemos otro ejemplo. Se trata de datos simulados, pero basados en un ejemplo real. Teníamos un producto que queríamos analizar. Era un producto manufacturado. Se midieron muchas dimensiones, y queríamos ver cuáles eran las más críticas para el resultado.
Aquí tenemos dos variables explicativas y cinco dimensiones, todas con escalas diferentes. Puedo omitir este paso. Podemos volver a ejecutar nuestro modelo. Se tarda unos 5 segundos en graficarlo, y obtenemos los resultados al instante. También podemos ver rápidamente el problema con las diferentes escalas, ya que si solo intentamos mostrarlo, solo podemos ver la dinámica de la dimensión 4, ya que es mucho mayor que las demás. Podríamos intentar escalarla, pero podríamos tener el mismo problema. Las dimensiones 1 y 2 son mayores que la 3, por lo que solo podemos ver una o dos a la vez.
Lo que hacemos, en cambio, es normalizar nuestros gráficos de alguna manera. Podríamos, por ejemplo, normalizarlos al objetivo. Aquí, simplemente colocamos nuestra variable aquí. Ahora la hemos normalizado, de modo que el objetivo siempre está en cero, el límite superior de especificación en uno y el límite inferior en menos uno. Ahora podemos ver al instante que, para la dimensión 3, si configuramos la dimensión 2, siempre estamos fuera de especificación.
Podemos observar que tanto la dimensión 1 como la 2 no presentan tanta variabilidad en comparación con el límite especificado. En la configuración 2, la dimensión 2 variará considerablemente, pudiendo variar mucho según las variables de entrada. En esta configuración, tendríamos que controlar la temperatura con bastante precisión.
Este funciona si tenemos límites específicos de especificación. Si no los tenemos, se pueden hacer otras cosas. Tenemos otro que simplemente está normalizado a la intersección y los límites específicos. Si no tenemos un objetivo específico, solo queremos asegurarnos de que estamos dentro de los límites específicos, y eso se normaliza aquí. Podemos tener un último que esté normalizado a la desviación estándar de la intersección, lo cual siempre funciona, pero aún así podríamos encontrarnos con el problema de que aquí hay una escala diferente.
Por ejemplo, aquí podemos ver que la dimensión 4 es bastante grande en comparación con la varianza residual, mientras que la dimensión 1 no tiene límites de especificación muy grandes en comparación con la varianza residual.
Finalmente, puede que no solo te interese el alcance de tus valores, sino también cómo quieres controlar estas variables de resultado. Aquí tenemos otro conjunto de datos que muestra las calorías quemadas en función de la edad, la altura, el peso, el sexo, etc. Queremos saber cuántas calorías podría quemar como factor.
Tenemos el conjunto de datos. Tenemos nuestro modelo, que viene aquí. Presionamos el botón. Tarda unos segundos, y luego obtenemos un gráfico. Aquí, trazamos las sensibilidades. ¿Cuáles son las sensibilidades? Es decir, cuánto cambiará la variable de resultado según la configuración nominal y para cada variable continua.
Por ejemplo, en este caso, podemos ver que, si hago ejercicio un minuto más, quemaré unas 5,5 calorías más. Si lo hago más intenso y aumento mi frecuencia cardíaca en una unidad, quemaré unas 2,5 calorías más.
Las demás variables del modelo podrían no tener tanto impacto en la práctica. Mi edad podría no ser tan importante… Mi peso podría no ser tan importante. Sin embargo, esto, por supuesto, no se ve afectado por la escala de la variable. Si puedo variar mi frecuencia cardíaca más que la duración, podría tener un impacto significativo.
Tenemos otra forma de normalizar que es simplemente tomando el gradiente, tomando la sensibilidad y multiplicándolo por qué tan grande puede ser el rango... ¿Cuánto puedo variar mi frecuencia cardíaca versus cuánto puedo variar la duración?
Aquí podemos ver que antes la frecuencia cardíaca no tenía tanto impacto. Ahora vemos que la frecuencia cardíaca podría tener un impacto igual de grande en las calorías quemadas que en la duración, ya que podría variar mi frecuencia cardíaca más que mi duración.
También podemos ver que, con solo la duración, podría quemar casi más calorías. Al hacer ejercicio más intenso, podría quemar alrededor de 60 calorías más de lo esperado. De hecho, podemos ver cuánto puedo variar tanto mi peso como mi edad. Esto podría tener un efecto práctico, que no podíamos ver antes, ya que solo analizamos los efectos de permanencia estimados a nivel individual.
Ahora cerramos todo esto. Si volvemos al inicio, lo que intentábamos era crear un método automático para analizar experimentos. Ahora tenemos un método que funciona. Es relativamente rápido y se puede personalizar según las necesidades, según el aspecto que se quiera para el gráfico. Eso es todo.