Me llamo David Burnham y en esta charla me gustaría analizar cómo podemos estimar la vida útil de un producto modelando la degradación que se produce con el tiempo. Una forma de realizar esta evaluación es colocar el producto en una cámara con clima controlado. Si lo hacemos, podríamos necesitar meses o incluso años para recopilar datos suficientes para construir nuestros modelos. Pero ¿qué ocurre si introducimos un nuevo producto en el mercado que es intrínsecamente inestable? Necesitamos obtener esa información cuanto antes.
La función de un estudio de estabilidad acelerada es proporcionarnos estos datos en tan solo unas semanas. Esto se logra sometiendo el producto a estrés; por ejemplo, podemos almacenarlo a altas temperaturas. Soy autor de una aplicación JSL diseñada para modelar los datos resultantes de estos estudios de estabilidad acelerada. El trabajo ha sido una colaboración entre Pega Analytics y un par de compañías farmacéuticas. Pega Analytics es la empresa que fundé hace 15 años para ofrecer principalmente formación en JMP, pero también servicios de JSL. En esta charla, me propongo analizar el proceso de modelado de la degradación en comprimidos farmacéuticos.
Esta degradación se produce porque estas tabletas no son totalmente estables. Contienen impurezas que evolucionan con el tiempo. Puedo usar un modelo cinético como descripción científica de dicha evolución. Las impurezas se deben a la energía térmica y la presencia de humedad dentro de la tableta y en el ambiente. Analicemos los datos de este tipo de estudio. Tenemos altas temperaturas, que corresponden a las temperaturas de almacenamiento y a una humedad relativa alta. Debido a esta aceleración, al someter el producto a un estrés de tan solo dos semanas, tenemos cantidades medibles de impurezas y una variación suficiente en estos valores para poder construir un modelo.
Permítanme mostrarles cómo se vería un modelo. Este modelo tiene tres componentes: la temperatura y la humedad relativa, que son las condiciones de almacenamiento. Luego, está el componente temporal, que representa la evolución de la impureza a lo largo del tiempo. Una vez que estos datos me permitan construir el modelo, puedo hacer dos cosas. La primera es reducir las condiciones de almacenamiento para alcanzar la condición normal sin estrés. Luego, quiero extrapolar e intentar anticipar el comportamiento futuro de este producto. Permítanme reescalar el eje Y para que puedan ver esto. En este ejemplo, pueden ver que el perfil temporal es plano y uniforme, por lo que tenemos un producto estable y estable, y está por debajo de la línea púrpura, el umbral de especificación del 1 % para este producto. Todo parece correcto para este modelo cinético.
Existe otro tipo de modelo que podemos construir: el modelo de empaquetado. Expliquemos por qué podríamos querer usar el empaquetado. Para esto, quiero tener un producto inestable. Para ilustrarlo, voy a subir la temperatura a 50 grados. Lo que ven ahora es que esta impureza, después de unos 50 o 60 días, supera el límite de especificación, por lo que ya no tenemos un producto viable. Imaginen, sé que en este caso subí la temperatura a 50 grados, pero imaginen que esta es una condición normal de almacenamiento. Entonces tenemos que pensar en qué podemos hacer. Bueno, podemos introducir el empaquetado. La función del empaquetado es reducir la humedad.
Al reducir la humedad, se observa que el perfil temporal se aplana. De hecho, al reducirla, también reduzco la sensibilidad a la temperatura. Aquí tengo una humedad relativa del 20 %, que puedo alcanzar en un entorno controlado al envasar. Introduzco las pastillas en la botella y la cierro al 20 %. No necesito un modelo de envasado para hacerlo; simplemente introduzco las pastillas en la botella. Pero lo que ocurre con el tiempo es que la humedad en la botella aumenta. Esto es fascinante. Si bien la botella es bastante sólida, la humedad se filtra por los lados, y podemos modelar esa filtración. Es un ejemplo de física realmente interesante.
Podemos ralentizar este proceso añadiendo desecante y modelar sus efectos. Con estos modelos, podemos realizar análisis hipotéticos basados en la cantidad de desecante que utilizamos. Por eso nos interesa el modelo de empaquetado. Es un modelo muy específico, muy espacioso, muy divertido y que despierta el interés por la física y las matemáticas. Para que la enseñanza llegue a un público más amplio, me centraré en los modelos cinéticos. Incluso si nos centramos en el empaquetado, este modelo no sirve de nada si no comprendemos su dependencia de la humedad. Me centraré en estos modelos cinéticos. También quiero abordar los desafíos que surgen al construir estos modelos. No tanto en la construcción, sino en la selección del modelo.
Creo que el desafío de la selección de modelos es muy particular en los estudios de estabilidad acelerada. La aplicación JSL me ayudará a lograrlo. Pero antes de analizar la aplicación en sí, quiero que comprendan algunos de los mecanismos de cómo construimos estos modelos de forma nativa con la funcionalidad de JMP. Les presentaré lo que considero probablemente el modelo más simple que pude construir para estos datos. Tengo una fórmula para el modelo. Esta fórmula se basa en una ecuación de Arrhenius. Efectivamente, tenemos un término exponencial para la temperatura y un término para el tiempo, y también tenemos un componente para la humedad relativa. Hemos ampliado la ecuación de Arrhenius para incluir la humedad. Ahora puedo mostrarles cómo funciona esta fórmula.
Si muestro esta columna, esto es lo que la fórmula predice para mi impureza, y no funciona correctamente. Predice un 10 %, pero el valor real es del 2,5 %. ¿Qué sucede? Si reviso la fórmula, estará familiarizado con la idea de que, al crear una fórmula, esta es una expresión basada en diferentes variables de columna. Pero puede que no esté familiarizado con la posibilidad de agregar parámetros. Puedo agregar un parámetro, asignarle un nombre y un valor. Ahora bien, esta fórmula tiene tres parámetros, y cada uno tiene un número asignado arbitrariamente. Eso no es lo que quiero hacer. Lo que quiero es elegir valores óptimos para esos parámetros.
Lo hago ajustando el modelo a mis datos. Ese proceso se logra usando la plataforma no lineal en JMP. Voy a examinar más de cerca la plataforma no lineal. Primero, asigno el modelo a mi fórmula de predicción y la impureza a mi respuesta. Esto me da una ventana donde dice "haz clic en ir para comenzar". Antes de hacer clic en el botón ir, déjame explicarte lo que está sucediendo. Tenemos estos parámetros y les he dado valores iniciales. Lo que quiero hacer es optimizar esos valores. Al hacer clic en Ir, se aplica un algoritmo de Gauss-Newton, que busca elegir valores que minimicen una suma de cuadrados de error. Un concepto similar a la regresión de mínimos cuadrados. Si lo prefieres, puedes convertir esto en un error cuadrático medio de aproximadamente 2. Ese es mi modelo final.
A continuación, puedo preguntarme: ¿es esto lo mejor que puedo hacer? Sería bueno tener un segundo modelo con el que comparar, y así podemos construir modelos mucho más complejos que el que les he mostrado. Les mostraré un modelo más complejo, que se ve así. Es más complejo en el sentido de que tiene más parámetros asociados, y estos están asociados a una expresión más compleja. No voy a entrar en detalles sobre la expresión. Quiero centrarme en la mecánica del ajuste de este modelo. Porque lo que encontrarán es que si hacen clic en "Ir", falla. Quiero analizar algunas de las razones, algunos de los desafíos de construir estos modelos. Me dice que haga clic en "Ir" de nuevo. Haga clic en "Ir" de nuevo, y sigue fallando. Realmente no me ayuda.
¿Qué sucede? Se ha superado el número máximo de iteraciones. El máximo es 60, ¿qué significa esto? Significa que estamos usando un algoritmo de descenso de gradiente. Estoy sentado en una colina, bajando y quiero llegar abajo, pero solo puedo dar 60 pasos. No entiendo bien por qué estamos limitados a eso. Como computadoras modernas, no hay problema en dar más de 60 pasos. Fijemos el límite en 6000. Quiero restablecer estos parámetros. Simplemente los restablezco a los valores originales y hago clic en "Ir" de nuevo. Sigue fallando, pero aparece un mensaje de error diferente. El mensaje indica que el criterio de convergencia es demasiado estricto y que queremos relajarlo. El criterio de convergencia es un número muy pequeño. No creo que quiera 10 elevado a -15.
Quiero un número pequeño, pero creo que 10 elevado a menos 7 es pequeño. Intentemos esto. Volveré a mis parámetros iniciales y haré clic en "Ir". Finalmente, he convergido, así que pueden ver que a veces es mucho más trabajo con un modelo complejo. Ahora comparemos los dos. Tengo un error de suma de cuadrados de 128 o un error cuadrático medio de aproximadamente 2,5, frente a un error cuadrático medio de 2 y un error de suma de cuadrados de 91. El modelo de la derecha funciona mejor que el de la izquierda. Pero al menos podemos comparar diferentes modelos. Pero debemos ser cuidadosos al hacer esto porque este modelo de la izquierda todavía no es la mejor representación de ese modelo. Permítanme mostrarles algo más que podemos hacer.
Voy a reiniciar este análisis para el segundo modelo y no voy a pulsar el botón "Ir". Dije que se trata de un algoritmo de descenso de gradiente, así que bajamos una colina y hablamos de la cantidad de pasos que podemos dar, pero también depende de dónde se empiece. Si se empieza en una ubicación diferente, se termina caminando en una ubicación diferente. El punto de partida se basa en este valor. Lo que quiero hacer es explorar diferentes condiciones iniciales. JMP tiene una función muy útil que me permite realizar una búsqueda en cuadrícula para estas condiciones iniciales. Necesito definir esta cuadrícula, y no se me da muy bien escribir y hablar al mismo tiempo, así que voy a escribir. Puede que me oigan hablar, pero solo estoy murmurando para mí mismo, pero necesito configurar esto.
Será del 1 al 10 en pasos de 3. Este es el grande, del 1 al 100 000 en el paso 100 de esos. Del 0 al 10 y tengamos diez de esos. Muy bien, se acabó mi murmullo. Te estoy hablando de nuevo ahora. Tengo esto configurado. Si hago clic en Ir, JMP evaluará todas esas condiciones iniciales. Tengo 27 000 de ellas, echemos un vistazo. Bueno, no las miremos todas, pero ahí tienes, 27 000. Se toma para cualquier fila, tengo una combinación de condiciones iniciales para estos parámetros y se calcula la suma de cuadrados del error. Ahora simplemente ordenemos esto y ordenemos esto en orden ascendente. Ves que la mejor suma de cuadrados del error es 145. Todavía no se compara bien con esto. Pero recuerda, aún no hemos hecho el algoritmo. Esto solo está encontrando la condición inicial.
Estos son los parámetros con los que quiero empezar. Voy a copiarlos y, una vez que haya terminado con la tabla, la cerraré. Puedo pegarlos aquí. Esta es mi condición inicial. Ahora voy a hacer clic en "Ir". He convergido, y veamos cómo se ve. Verán, tenemos un error de suma de cuadrados de 1. Recuerden, la última vez era 128, y ahora ha bajado a 1. Se compara increíblemente favorablemente con 91. El error cuadrático medio es 0,2 frente a 2, es decir, 10 veces menor. Lo que he intentado ilustrar son algunos de los desafíos de ajustar estos modelos, pero hay una lección importante: para un modelo complejo, si no se realiza una búsqueda en cuadrícula de las condiciones iniciales, es muy probable que se termine con una solución subóptima.
Puedo evaluar los diferentes parámetros de distintos modelos y compararlos. Podría usar el error cuadrático medio, pero también quiero penalizar los modelos complejos para poder calcular, al menos en software, la estadística AIC, que es una estadística de comparación de modelos. Ahora voy a pasar al software, la aplicación JSL que facilita la creación y comparación de modelos. Ejecuto el software; se ve así. Lo primero que tengo que hacer es asignar un nuevo nombre al proyecto. Lo llamaré Berlín. Ya tengo un Berlín. Llamémoslo Berlín 2 y hagamos clic en Aceptar. Donde ven estos iconos, representan un flujo de trabajo. Bueno, primero, hablemos de la aplicación en general.
Piense en lo que hace JMP. JMP nos permite ajustar modelos, realizar análisis estadísticos y visualizar. Al escribir scripts JSL, todo ese tipo de funcionalidad es relativamente fácil porque JMP hace todo el trabajo pesado por nosotros. Además, esta aplicación busca proporcionar una idea de flujo de trabajo. Tenemos algunos pasos que realizar. Estos aún no se pueden realizar; están bloqueados. Estos dos están disponibles, y este es el paso recomendado. Proporcionamos un flujo de trabajo, una secuencia de tareas a realizar, pero también conservamos la información. Una vez configurado algo, no es necesario repetirlo. Si se ajustaron los modelos, no es necesario volver a ajustarlos.
Puedes volver a esto mañana, el mes que viene, el año que viene. Esa es la idea del proyecto. Persiste toda la información a lo largo del tiempo. Comencemos. El primer paso, el paso recomendado, es seleccionar un producto. En realidad, lo que estoy haciendo aquí es decir, ¿tengo un producto líquido o sólido? En la jerga, un producto líquido es un producto de molécula grande y una tableta sería un producto de molécula pequeña. Lo pienso de forma ligeramente diferente, lo pienso en términos de modelado. Un líquido es sensible al pH, y un líquido podría ser una vacuna, por ejemplo, será sensible al pH, mientras que una tableta será potencialmente sensible a la humedad. Voy a tomar una tableta. Ojalá no hubiera dicho que voy a tomar una tableta. Voy a empezar a reírme de eso.
Lo siguiente que quiero hacer es asignar datos, y necesito algunos datos. Esta es una tabla de datos. Tiene cuatro impurezas asociadas. Regresa a la aplicación. Puedo asignar estos datos y me pedirá que confirme si quiero usarlos. Sí, los quiero. Luego me dice que los ha copiado al proyecto y que no necesito mantener la tabla de datos abierta. Estos datos se almacenan como parte del proyecto, pero no tenemos que ver la tabla físicamente. Aún podemos hacer mapeo de columnas, así que puedo tomar estas cuatro impurezas. Estas son mis respuestas. Estos son los elementos a los que voy a ajustar los modelos. Para cada una de estas impurezas, ajustaré varios modelos y luego elegiré el mejor para cada uno.
Permítanme terminar el mapeo de columnas. Ahora, para cada una de esas respuestas puedo introducir especificaciones. Voy a poner 1%, es decir, 1%. Lo que estamos diciendo es que si el nivel de impureza es inferior al 1%, entonces tenemos un producto viable. Si observamos la evolución de la impureza a lo largo del tiempo, el punto en el que cruzamos el nivel del 1% es la vida útil efectiva de los productos. Ahora, el paso final es proporcionar opciones de modelo. Hay ocho modelos diferentes que podemos ajustar a estos datos, y vale la pena explicarlo. Si piensas en la evolución temporal de las impurezas, los aumentos con el tiempo podrían ocurrir de forma lineal, o la tasa de aumento podría ralentizarse o podría aumentar. Tenemos esta idea de modelos de desaceleración y aceleración.
Hay diferentes maneras de expresar esos modelos. Acabo de perder el ratón. Listo. Volvamos a las opciones de modelo. Estos son los ocho tipos de modelo. Estos modelos contienen expresiones o términos para la temperatura y la actividad del agua. La actividad del agua se puede expresar como humedad relativa o humedad absoluta. Terminamos con un total de 16 variantes de modelo diferentes. Para fines de demostración, solo usaré ocho variantes de modelo y analizaré solo las que involucran humedad relativa. Ya casi termino. Hay una cosa más. Los datos en sí mismos son las condiciones de almacenamiento bajo tensión. Tengo que proporcionar las condiciones de almacenamiento estándar: 25 grados centígrados, 65 % de humedad.
Eso completa las tareas para configurar el proyecto. Ahora puedo continuar y ajustar los modelos cinéticos. Por petición popular, puedo hacer un ajuste automático y simplemente hacer clic en Aceptar. Ajustará todos los modelos y realizará toda la selección de modelos. Pero quiero que realmente entiendan el desafío de la selección de modelos. Hacerlo automáticamente no les dará ninguna idea. Centrémonos en hacerlo individualmente para al menos uno de estos. Para cada una de las impurezas, vamos a repasar, o solo lo haré para la impureza uno, pero pasamos por el proceso de tres pasos para encontrar el modelo correcto. El primer paso es simplemente ajustar los modelos. Esto revisará y ajustará cada uno de estos modelos uno por uno. Cuando termine, mostrará un panel que es simplemente una confirmación de que estos modelos se han ajustado.
El último paso será elegir uno de esos ocho modelos. Sin embargo, conviene tener un paso intermedio donde creamos una lista de preseleccionados. El segundo paso es crear esa lista. El software facilita esto mediante un sistema de semáforo. Los modelos en la zona verde son los más probables. Los modelos en la zona amarilla son los menos probables, y los de la zona roja se pueden descartar. Podemos hacer una comprobación de validez. Si observamos el mejor modelo, es un modelo de desaceleración. Si las impurezas se desaceleran con el tiempo, no se aceleran. Tiene sentido que podamos descartar los modelos de aceleración.
El software no usa esa lógica, y quizás debería, quizás debería tener ese tipo de inteligencia. Simplemente usa estadísticas frías. Calcula una estadística AIC. Esta es una estadística de comparación de modelos que penaliza la complejidad del modelo. JMP la usa en muchos lugares diferentes. Es algo que se usa en todo JMP. De hecho, no se usa en la plataforma no lineal, pero podemos calcularla dentro del software. Me centraré solo en los dos modelos en la zona verde. Los eliminaré. Mi lista corta estará compuesta por estos dos modelos principales, y ahora puedo seleccionar mi modelo preferido, o al menos el software me dará más información para hacer la selección final.
Ahora me estoy centrando en estos dos modelos. Las estadísticas en sí mismas no me ayudan en esta etapa porque no puedo diferenciar bien entre los modelos en la zona verde. Si observamos algo como el R cuadrado o el error cuadrático medio, esos números son casi idénticos. Lo que puedo hacer es simplemente cerrarlos para no distraernos. Me concentro en algunos gráficos de diagnóstico. Puedo ver diferentes gráficos de diagnóstico para los dos modelos que he seleccionado. Una de las cosas que he intentado hacer es incorporar la funcionalidad de calidad de vida en el software. Una de las cosas que encuentro útil es poder ver ambos uno al lado del otro. Ahora tengo el primer modelo de esta lista. El mejor modelo, si se prefiere, está a la izquierda y el otro a la derecha.
Seamos claros sobre lo que estamos viendo: real versus predicho. Los puntos de datos reales versus el punto de datos predicho. Si tenemos un modelo perfecto, entonces todos mis datos estarán en esa línea roja de 45 grados. Esto les da una idea de qué tan bien los modelos están prediciendo los datos, pero también nos permite comparar los dos modelos. Espero que lo que les llame la atención aquí sea el hecho de que son totalmente iguales. Son muy similares. Cada vez que veo esto, pienso que he cometido un error en el software y que en realidad no les estoy mostrando los diferentes gráficos, pero son diferentes. Este punto de datos aquí está en la línea roja, y está fuera de la línea roja. Son gráficos diferentes, pero pueden ver cuán similares son. Este es el desafío de la selección de modelos. Está muy bien ilustrado aquí.
Probemos con un gráfico diferente. Observemos un gráfico de probabilidad normal de residuos. Esperamos que los residuos formen una línea recta. En este caso, el gráfico de la izquierda es definitivamente mejor que el del lado derecho. El gráfico de la izquierda también es el que tiene las mejores estadísticas. En este punto, pienso: "Toma el modelo con las mejores estadísticas, ¿verdad?". Probablemente no perderás tu trabajo si tomas el modelo con las mejores estadísticas y los mejores diagnósticos, así que está bien. Pero también necesito pensar en cómo voy a usar estos modelos. Puedo usar un perfilador de predicciones. Sabemos que las predicciones son las mismas, ya lo hemos visto. Estos perfiladores se verán iguales, o al menos se verán iguales en todo el rango de datos que tenemos. Pero no es así como usamos estos modelos.
Primero, permítanme explicar el perfilador de predicción, ya que probablemente esperan ver la temperatura y la humedad relativa. Estas se han delegado a listas desplegables. Nos centramos en la evolución temporal. Pero ¿qué quiero hacer? Quiero reducir la temperatura a las condiciones normales de almacenamiento: 25 grados centígrados y 65 % de humedad. Luego, quiero extender el componente temporal de estas condiciones. De nuevo, otra cuestión de calidad de vida. Puedo extrapolar estos gráficos. Ahora ven una diferencia drástica. Al extrapolar estos modelos, ambos describen una desaceleración, pero esta es mucho más pronunciada en el lado izquierdo.
Veamos las consecuencias de esto. Primero, tomemos el modelo del lado derecho. Este es el punto en el que el modelo cruza la línea. La línea representa el umbral de especificación en este punto. Pero ese no es el punto de interés. Cuando modelamos la vida útil, observamos el límite superior de confianza y dónde se cruza. Ese es el punto que nos interesa: un poco más de 300 días. En el lado izquierdo, es más bien un poco menos de 600 días. Ahora bien, esos números son realmente importantes y se calculan en el software; están aquí. Pero quería que entendieran de dónde provienen y cuán absolutamente importantes son en términos de selección de modelos. Porque a menudo encontramos que estas son las únicas estadísticas significativas que difieren entre los diferentes modelos. ¿Qué voy a hacer? Bueno, pensemos en por qué estamos haciendo el modelado.
No intento decirles cuál es la vida útil de este producto. Si quieren saberlo, pónganlo en un estante en una cámara con clima controlado durante dos años y vean qué sucede. Lo que intentamos hacer es una evaluación de riesgos para ver la posibilidad de que este producto falle antes. Y esto me indica que existe la posibilidad de que falle después de 300 días. Puede que no. El modelo podría ser correcto en el lado izquierdo. Podría tener una vida útil de 600 días. Pero quiero adoptar un enfoque de aversión al riesgo. Probablemente seleccionaré el segundo modelo y puedo explicar por qué. Puedo decir que estoy adoptando un enfoque basado en el riesgo con base en los modelos en la zona verde y me da algo de texto.
Si no está satisfecho con eso, podría decir que se basó en un juicio científico o algo más. Podría simplemente decir "me gusta". Pero podemos incluir algún tipo de explicación, o quizás preferimos tomar el modelo del lado izquierdo porque tiene las mejores estadísticas. En última instancia, podemos elegir. Pero creo que esta es la opción racional, una evaluación basada en el riesgo. Voy a tomar eso, y con eso he completado mi selección del modelo para esta impureza. Esta secuencia la podemos realizar para todas las impurezas, y si les muestro un resumen, pueden ver que hemos completado esos tres pasos (impureza 1). Puedo hacer lo mismo con las otras tres. Puedo hacerlo manualmente, o podría ajustar automáticamente esas tres.
Si hago esto, nos quedaremos aquí sentados mirando la pantalla durante unos minutos. En lugar de eso, déjenme mostrarles cómo puedo cambiar a un proyecto diferente. Elijo otro proyecto, y estos son los mismos datos, la única diferencia es que las cuatro impurezas se han ajustado automáticamente. Solo quiero que vean cómo se ve el resultado. Si hubieran hecho clic en el botón de ajuste automático, se les presentaría un resultado similar a este. Lo que les mostrará es que, en primer lugar, la Impureza 1 tiene un botón ámbar. Hay muchos sistemas de semáforo en el software. Todos los demás están en verde. ¿Qué me dice el ámbar? Bueno, esto me indica que hubo algún tipo de ambigüedad en la selección del modelo porque tenía esos dos modelos para elegir, mientras que para los demás no hay ambigüedad.
Con los demás, elegí el modelo con la estadística más baja, la mejor estadística. En cambio, en este caso, me basé en la duración de la brecha de CI. Se muestran estas duraciones. Este es el 311, el número que vimos antes. Si hago clic en el ícono, si lo coloco, me indicará que la estimación estaba entre 311 y 569. Si hago clic ahí, me mostrará el sistema de semáforos y me indicará que se eligió el segundo modelo porque tenía la estimación más desfavorable para este número. No siempre es así. En este caso, la vida útil es muy baja. Tenemos un ícono verde, que indica que tenemos un rango de estimaciones muy consistente. Tengo cuatro modelos en la zona verde, pero todos predicen prácticamente el mismo número. Por eso, podemos elegir el mejor modelo basándonos en las estadísticas.
Se toman diferentes decisiones según la consistencia del comportamiento de los modelos entre sí. Finalmente, hemos ajustado todos los modelos y seleccionado el modelo adecuado para cada una de estas impurezas. Se trata de impurezas para un solo producto, y podemos realizar un análisis. Por ejemplo, podríamos resumir esos modelos en un panel de control y examinar los diferentes modelos disponibles. Podemos probar diferentes condiciones de almacenamiento. Ese es un tipo de análisis. Otra opción es integrar este modelo cinético con un modelo de almacenamiento y examinar diferentes tipos de contenedores para el producto.
Permítanme resumir lo que he explicado. Si vuelvo, comenzamos con datos de un estudio de estabilidad acelerada, que somete al producto a estrés. El producto del que he estado hablando es un producto farmacéutico: comprimidos. Puedo modelar la evolución de las impurezas y construir estos modelos cinéticos. Hemos analizado la mecánica de cómo generamos estos modelos utilizando la plataforma no lineal y he intentado mostrarles algunos de los desafíos de usarla. Luego, he explicado cómo podemos usar la aplicación JSL para automatizar el ajuste del modelo y facilitar el proceso de selección. Pueden ir más allá y considerar también los productos de envasado. Con esto concluyo mi presentación de hoy. Muchas gracias.