Predicción mediante análisis de recurrencia JMPHola a todos,
Intenté predecir las reparaciones y los costos futuros de nuestras máquinas usando el análisis de recurrencia de JMP, pero me encuentro con un problema de sobreestimación. Entrené un modelo (NHPP log-lineal) con datos históricos de los robots hasta hace 90 días y luego predije las reparaciones y los costos actuales. Básicamente, uso datos de hace 90 días para el modelado y la predicción, y valido los resultados con los datos actuales. Los resultados muestran una sobreestimación de aproximadamente el 30 %. También probé el modelo NHPP proporcional y obtuve una sobreestimación similar. El ajuste de los modelos me parece bueno. En cuanto a la predicción del total de reparaciones, el modelo funciona bien (con una sobreestimación inferior al 10 %). Solo la predicción de las reparaciones recientes no es precisa.
Mi pregunta es:
¿Existe alguna forma de reducir esta sobreestimación? Estoy considerando predecir eventos en un período de 45 días en lugar de 90 para tener una ventana de predicción más corta, pero me pregunto si existen otros enfoques que pueda probar.
Sé que existen otros modelos de predicción. Dado que ya he utilizado la recurrencia para estudiar las reparaciones y estoy familiarizado con ella, quiero sacarle el máximo provecho a este estudio.
Gracias.
Análisis y modelado de datos básicosRe: Predicción mediante análisis de recurrencia de JMP¿Sería posible publicar una versión anonimizada (Tablas > Anonimizar) o un subconjunto de sus datos con su análisis adjunto? Eso podría ayudarnos a sugerir alternativas.
Re: Predicción mediante análisis de recurrencia de JMPHola, esa es una buena sugerencia.
Explicaré lo que hice usando la siguiente captura de pantalla, que muestra datos de un bot. El conjunto de datos real contiene aproximadamente 15 000 bots. Por favor, no utilicen mis valores de ejemplo para ajustar el modelo; los valores predichos se basan en la fórmula acumulativa generada a partir de los 15 000 bots.
Las tres primeras columnas de la tabla de la izquierda incluyen datos de hace 90 días: ID del bot, Edad y Costo (1 significa reparación, 0 significa fin del estudio). Estas tres columnas se utilizaron para ajustar el modelo de Proceso de Poisson proporcional del Análisis de Recurrencia de JMP (existen 15 000 bots adicionales que no se muestran aquí; solo se utiliza un bot como ejemplo). Posteriormente, se obtuvo la fórmula acumulativa del modelo. La cuarta columna, Edad más 90 días (edad actual), se introdujo en esta fórmula para calcular la quinta columna: Reparaciones previstas en 90 días (predicción para el momento actual).
El valor 6,28 representa el total de reparaciones previstas para este robot a los 941 años. Por lo tanto, se prevé que las reparaciones de este robot en los últimos 90 días sean de 6,28 − 3 = 3,28 . Para calcular el total, sumo todas las reparaciones previstas para cada bot con la mayor antigüedad, obteniendo así la predicción total. Sumo todas las reparaciones reales (de hace 90 días) para cada bot, obteniendo el total de reparaciones reales. Finalmente, calculo la diferencia (el total de reparaciones previstas para los últimos 90 días) entre ambas sumas.
La tabla de la derecha (datos actuales) muestra que solo se realizaron 3 reparaciones en los últimos 941 días, igual que hace 90 días. Por lo tanto, el número real de reparaciones de este bot en los últimos 90 días es de 3 - 3 = 0. También calculé el número real de reparaciones de todos los bots en los últimos 90 días.
Al comparar ambas cifras, observo sistemáticamente una sobreestimación. Por ejemplo, para los 15 000 bots, el número de reparaciones reales en los últimos 90 días es 6.996 , mientras que las reparaciones previstas para los mismos robots son 9.306 — un Sobreestimación del 33,0% . He probado con varios intervalos de tiempo y siempre obtengo una sobreestimación de alrededor del 30%.
Me preocupa haber hecho algo mal.
¿Qué opinas? Gracias.
También adjunto datos simulados por si alguien quiere experimentar con ellos.
Los datos constan de tres columnas: ID de la máquina, costo (donde 1 indica reparación y 0 fin del estudio) y antigüedad. La pregunta es cómo predecir las reparaciones durante los próximos 90 días utilizando estos datos. Gracias.
Re: Predicción mediante análisis de recurrencia de JMPSegún la forma de tus datos reales y los parámetros del modelo que selecciones, puedes obtener modelos muy diferentes. Tus datos simulados presentan una anomalía al final que también puede alterar las predicciones. Con los datos proporcionados, obtengo modelos muy diferentes dependiendo de si incluyo o no la variable Edad². ¿Qué tan bien se ajusta tu modelo a tus datos?

Re: Predicción mediante análisis de recurrencia de JMPLa anomalía del final se debe únicamente a dos máquinas en riesgo, y esas dos máquinas son las más antiguas.
Simplemente utilizo el modelo PP proporcional sin escala ni efecto de forma, y la figura se ve así:

Hay dos cosas que no entiendo:
¿Por qué seleccionas la edad como Efecto de Escala y Efectos de Forma? No se genera ninguna curva al hacerlo. ¿A qué se debe esto? ¿Dónde está la curva de ajuste?
¿Por qué intentas con edad^2?
Gracias.
Re: Predicción mediante análisis de recurrencia de JMPNo estoy seguro de la gravedad de este problema, pero para los modelos de recurrencia, los datos del sistema deben estar en orden cronológico, ya que JMP no los reordena automáticamente. Sin embargo, esto sí afectará al modelo. En los datos de muestra, hay dos ID de máquina que no estaban en orden. Si esto no es algo que observes en tus datos, puedes ignorarlo.

El análisis de recurrencia se utiliza cuando los datos constituyen un sistema reparable. Un sistema reparable no significa que pueda repararse, sino cuál es su estado tras la reparación. Después del evento, ¿los bots se consideran exactamente iguales que justo antes del evento? ¿O se consideran como nuevos? Si el bot está como nuevo, se trata de un sistema irreparable, ya que, en esencia, se trata de un elemento completamente nuevo.
Esto es importante porque, si tus datos corresponden a un sistema reparable, se modelan como un sistema exponencial y los eventos deberían ocurrir con mayor frecuencia a lo largo del tiempo. Si tus datos no corresponden a un sistema reparable y tratas de usar el Análisis de Recurrencia, este a menudo sobreestimará tus pronósticos, ya que asume que la situación seguirá empeorando. Un sistema no reparable debería alcanzar una cantidad constante de reparaciones a lo largo del tiempo, que generalmente será mucho menor que la del sistema exponencial.
Si los bots están "como nuevos", podría tener más sentido modelar cada evento de forma independiente (es decir, la edad no es acumulativa) y utilizar la plataforma de Distribución de Vida.
Re: Predicción mediante análisis de recurrencia de JMPHola,
Gracias por su explicación.
Probé con ejemplos con y sin orden cronológico. Parece que el análisis de recurrencia de JMP automatiza esto con el orden correcto.
Nuestro sistema es reparable y se asume que su rendimiento es el mismo que antes de la reparación. Por lo tanto, los bots se desgastan con el tiempo. Esta es la razón por la que elegimos el análisis de recurrencia. Creo que encontramos la razón de la sobreestimación. No restamos el tiempo durante el cual los bots estuvieron en reparación, lo que generó un sesgo de inmortalidad (un término técnico que acabo de aprender). Voy a excluir el tiempo de reparación para ver si se repite la sobreestimación.
Gracias por sus sugerencias.