Análisis de recurrencia en el estándar JMP 18Hola a todos
Soy un miembro nuevo de la comunidad. Me asignaron la tarea de realizar análisis de recurrencia en nuestros datos. Nunca usé JMP ni realicé ningún análisis de recurrencia. Así que, sin duda, traeré algunas preguntas sencillas.
Los datos que tenemos corresponden a la reparación de robots. Queremos ver el patrón de eventos de reparación de los bots, y me indicaron que usara el análisis de recurrencia (desconozco el motivo).
Tenemos alrededor de 15 000 robots. Utilicé las columnas «bot_id», «accumulated_transactions», «site», «cost», «bot_type» y «component». «Site» incluye las diferentes ubicaciones donde trabajan los robots. «cost» es el valor 0 y 1 (1 significa una reparación y 0 significa el último evento visto de los bots). «component» representa las diferentes partes en reparación. Queremos ver el efecto de los sitios, el bot_type y las partes en el MCF y el patrón de reparación. Utilizo principalmente el modelo Log Lineal NHPP.
Tengo algunas dudas con los datos. Tenemos alrededor de 1000 bots de préstamo que recorren todos los sitios. Si selecciono la columna "sitio" como función "Agrupación" en el análisis para ver el MCF de los diferentes sitios, ¿afecta esto al resultado? Entiendo que cada sitio considerará ahora al bot de préstamo como un bot independiente. ¿Debo excluir esos 1000 bots de préstamo si quiero "Agrupar" por "sitio"?
Los datos que recibí indican que el valor de "costo" fue 0 en el último evento para cada sitio y bot. Por lo tanto, si un bot funcionó en dos sitios, habrá dos valores 0 para este bot, cada uno como último evento por sitio. ¿Afecta esto la forma en que JMP contabiliza los bots activos al calcular el valor de MCF? Entiendo que un valor de costo 0 significa el fin del bot. Si un bot tiene varios valores 0, ¿cómo se gestiona esto?
Tengo otras preguntas pero quiero terminar ahora antes de que esto se vuelva demasiado largo.
Agradezco tu ayuda.
Análisis y modelado de datos básicosRe: Análisis de recurrencia en el estándar JMP 18Creo que su variable "sitio" se denomina "covariable temporal" o "estrés temporal" en la jerga estadística. Si desea incluir covariables temporales en su modelo de recurrencia, debe agregar una fila cada vez que cambie el nivel de una de ellas. En ese momento, el valor de la columna de coste se establece en cero. Por ejemplo, si el robot ID1 se movió de A a B, de B a C y de C a algún otro punto en los tiempos 1, 4 y 5, respectivamente, debe prepararse para la siguiente tabla.
bot_id sitio tiempo costo
1 A 1 0
1 B 4 0
1 C 5 0
Su variable "componente" parece ser lo que se denomina "riesgo competitivo" en la jerga estadística. El análisis de recurrencia de JMP no admite el riesgo de cometa. Solo puede realizar el siguiente análisis.
(1) Establezca el costo=1 independientemente de cualquier tipo de falla que ocurra.
(2) Establezca el costo en 1 solo cuando ocurra una falla específica.
La tabla de datos adjunta muestra un ejemplo de juguete para un solo robot. El costo se establece mediante el método 1) mencionado anteriormente. Ejecute el script de la tabla en la tabla de datos adjunta. El generador de perfiles muestra el número estimado de fallos acumulados si los robots funcionan siempre en un sitio específico (por ejemplo, "siempre funciona solo en el sitio A").
Me temo que no entiendo bien su situación. Pero espero que mi comentario anterior le ayude a analizarla.
Re: Análisis de recurrencia en el estándar JMP 18Gracias por la rápida respuesta. Entiendo que mencionas que no hay costo por cada cambio de sitio. Debería dar más detalles.
Creo que la preocupación ahora es cómo JMP gestiona el coste 0. Parece que JMP simplemente excluirá los bots antes de lo debido si el bot tiene un coste 0 al principio. Al haber menos bots considerados efectivos por JMP, el valor de MCF aumentará. A continuación, se muestra lo que veo: el superior muestra datos con un coste 0 por bot. El inferior muestra datos con varios costes 0 (uno por bot por sitio). El valor de MCF inferior es mayor porque JMP excluyó el bot con coste 0 demasiado pronto. Eso es lo que entiendo, aunque podría ser incorrecto.


Le hice la misma pregunta a ChatGPT y esta es la respuesta. Consideré que debería tener un coste cero por bot para el último evento visto. Dime qué opinas.
Opción A: Simple y robusta (recomendada primero)
Mantener una fila por evento (Costo=1) with the Site value active at that event, y una fila final de costo=0 por bot at the bot’s last observed transaction.
This approach uses the event rows to carry the time-varying Site value. It’s simple, avoids multiple right-censor rows per bot, and JMP will correctly use the Site value that was in effect at each event.
Cuándo usarlo: más común; suficiente si solo necesita la covariable en los momentos del evento (lo que suele ser el caso).
Ventajas: fácil, evita que JMP malinterprete múltiples 0.
Desventajas: no modela explícitamente intervalos sin eventos donde la covariable cambió, pero eso rara vez es necesario para la estimación de NHPP.
Forma de los datos
Cada fila es:
-
Fila de eventos: BotID, AccumulatedTransactions (event time), Cost = 1, Site = site_at_event
-
Fila de censura final (una por bot): BotID, AccumulatedTransactions (last observed), Cost = 0, Site =
<LAST site="" or="" na=""></LAST>
Cómo utiliza esto JMP
-
When you add Site como una columna que afecta la Escala/Forma, JMP uses the Site value on each event row to estimate how Site shifts the log-rate and/or shape. Because each event row carries the site at that time, you have effectively encoded a time-varying covariate.
Re: Análisis de recurrencia en el estándar JMP 18Gracias por tu respuesta.
En esta respuesta, me gustaría explicar cuándo se necesitan las filas con Costo=0.
Hay dos tipos de situaciones en las que necesitamos las filas con Costo=0. Una es para representar la última vez que se observó cada robot. La otra es para representar el cambio de covariables que varían con el tiempo.
Si se observó hasta "t" y el robot no falló en el último tiempo observado "t", se debe incluir la última fila con Costo=0. Esta situación se denomina "censura derecha" en la jerga estadística. En el análisis recurrente, la censura derecha suele deberse a que podemos repetir cada robot, por lo que no podemos observar su "muerte real" ni su "muerte completa". Por ejemplo, si la última vez que se observó el robot ID001 fue en 100, y el robot no falló en t=100, se debe incluir la siguiente fila.
ID t Cost
001 ... ...
001 ... ...
001 100 0
Esta fila es necesaria para notificar a JMP que este robot estaba vivo hasta cuándo.
Si observó hasta "t" y el robot falló en ese momento "t", no necesita incluir la última fila con Costo=0. En su lugar, debe incluir la última fila con Costo=1. Por ejemplo, si la última vez que observó el robot ID001 fue el año 100 y el robot falló en t=100, debe incluir la siguiente fila con Costo=1.
ID t Cost
001 ... ...
001 ... ...
001 100 1
Las filas con Costo=0 también son necesarias para representar el cambio de covariables. Por ejemplo, si la covariable X cambia de A a B en el tiempo=50, se necesita la siguiente fila con Costo=0.
ID t X Cost
001 ... ... ...
001 50 A 0
001 ... B ...
Esta fila es necesaria para notificar a JMP el cambio de covariables. Como escribí en la respuesta anterior, este tipo de covariables se denominan "covariables variables en el tiempo".
El gráfico MCF se ve afectado por si se incluye o no la última fila observada con coste = 0. El gráfico MCF no se ve afectado por si se incluye o no la fila con coste = 0 para covariables que varían con el tiempo. Sin embargo, los resultados del modelo de ajuste se ven afectados por ambos tipos de filas con coste = 0.
¿Es esta la respuesta que esperabas? Si no, me gustaría que respondieras de nuevo.
Re: Análisis de recurrencia en el estándar JMP 18@Caozheng0115 -san,
CORRECCIÓN PARA MI PRIMERA RESPUESTA
Su variable "componente" parece ser lo que se denomina "riesgo competitivo" en la jerga estadística. El análisis de recurrencia de JMP no admite el riesgo de cometa. Solo puede realizar el siguiente análisis.
(1) Establezca el costo=1 independientemente de cualquier tipo de falla que ocurra.
(2) Establezca el costo en 1 solo cuando ocurra una falla específica.
Si utiliza la columna "Causa" en el cuadro de diálogo de inicio, puede realizar el análisis en (2) mediante la plataforma de Análisis de Recurrencia. La tabla de datos adjunta muestra un ejemplo.
Re: Análisis de recurrencia en el estándar JMP 18
Hola, gracias por su rápida respuesta. ¿Podría explicar por qué la opción 2 no es la 1? En sus datos de ejemplo, parece que ambas opciones (una columna para el costo y una para el costo individual de dos causas) funcionan y generan los mismos resultados. Si quiero mostrar una causa en la figura 1 y la otra en la figura 2, necesito crear nuevas columnas para el costo de cada causa para que los resultados sean consistentes. ¿Es eso lo que sugiere? ¿Qué tal una situación similar para la agrupación? Por ejemplo, si agrupo por sitio, ¿hay alguna manera de mostrar el resultado de un solo sitio y una figura que sea la misma que para los resultados generados a partir de datos que incluyen varios sitios?
Revisé los datos de muestra que me enviaste. Parece que usas la moda como causa y el sitio como efecto de escala en el primer análisis guardado. El modelo que usaste es NHPP proporcional. ¿Hay alguna razón para elegir el modelo? Entiendo que el modelo NHPP proporcional asume una curva de CFM de referencia común para todas las causas, que se amplía o reduce mediante factores multiplicativos. En mi caso, no se asume que las diferentes causas-efecto sean proporcionales, por lo que usé el modelo logarítmico lineal. Dime si ese es el modelo que debería usar.
Tengo dificultades para comprender la curva de ajuste generada. ¿La curva de ajuste roja corresponde a Fallo 1? La curva de ajuste está muy alejada de la curva MCF roja. ¿Por qué ocurre esto? Hay dos curvas de ajuste azules. ¿Cuál es la curva de ajuste de Fallo 2? ¿Por qué se generan dos curvas de ajuste? ¿Qué es la curva de ajuste verde?
O las curvas de ajuste son para sitios diferentes. Pero la roja solo tiene una curva en lugar de dos. No entiendo por qué.
Gracias.

Re: Análisis de recurrencia en el estándar JMP 18Muchas gracias. Está muy claro. Me salvaste la vida.
Tengo una pregunta adicional sobre esto. Si quiero comparar el efecto de los sitios, ¿debería indicar el sitio como rol de agrupación, efecto de escala o efecto de forma? Quiero mostrar el MCF de cada sitio, su curva de ajuste y también la estimación de los parámetros ( γ y δ) .
Vi dos opciones:
1. No incluya el sitio como agrupación, sino que llénelo como efectores de escala y forma. De esta manera, puedo comparar los parámetros del modelo (NHPP logarítmico lineal) entre diferentes sitios. Sin embargo, con este método solo se genera una curva MCF para el total.
2. Incluir el sitio como Agrupación y rellenarlos también como efectores de escala y forma (no sé si puedo hacerlo). De esta forma, se generará un MCF para cada sitio, una curva de ajuste para cada uno, así como parámetros del modelo para comparar el efecto entre ellos. El problema que encontré con este método es que la Agrupación generará un modelo individual para cada sitio (podría estar equivocado), y no es una buena manera de comparar los efectos del sitio utilizando diferentes modelos.
¿Qué debo hacer? ¿Debería generar una curva individual en la Opción 2 y usar la tabla de resultados para la estimación de parámetros con la Opción 1? En ese caso, las curvas que muestre no coincidirán exactamente con la tabla de parámetros.
Muchas gracias.
Re: Análisis de recurrencia en el estándar JMP 18Gracias de nuevo por tu respuesta.
Aunque me temo que no entiendo bien tu situación, creo que la opción (1) debe ser correcta.
Según tengo entendido, creo que su variable Sitio es una covariable que varía en el tiempo.
Si es así, NO debe establecer la variable Sitio como la columna Agrupación.
Si configura el SITIO en la siguiente tabla,...
IDENTIFICACIÓN DEL SITIO HORA
1 1 15
1 2 31
1 1 49
1 2 57
1 1 102
... entonces, JMP reconoce que hay dos identificaciones.
IDENTIFICACIÓN DEL SITIO HORA
1-1 1 15
2-1 2 31
1-1 1 49
2-1 2 57
1-1 1 102
Entonces, (si no entiendo mal su situación y si su variable Sitio es una covariable que varía en el tiempo) NO debe incluir la variable Sitio para la columna Agrupación.
Hay una nota adicional.
Las estimaciones no paramétricas del gráfico MCF, que es el primer gráfico que se ve antes de ajustar el modelo, no consideran la covariable variable en el tiempo. Además, la curva estimada por el modelo muestra la curva cuando todas las covariables variables en el tiempo se fijan a cada valor del sitio. Por lo tanto, no podemos usar el gráfico MCF para comprobar si el modelo se ajusta correctamente si este tiene covariables variables en el tiempo.
El siguiente script muestra un ejemplo sencillo de juguete. En estos datos simulados, los parámetros de escala (theta) y forma (beta) cambian después de los primeros 30 puntos de tiempo. La variable "Sitio" muestra el cambio, y este "Sitio" es la covariante variable en el tiempo. Para simplificar, utilizo el Proceso de Poisson de Potencia No Homogénea.
La covariable que varía en el tiempo, Sitio, no debe incluirse en la columna Agrupación.
Names Default To Here(1);
Random Reset(111111);
n = 30;
nid = 100;
data = J(2*n*nid, 4, .);
b1 = 3;
theta1 = 5;
b2 = 8;
theta2 = 8;
k = 0;
For( id = 1, id <= nid, id++,
x = 0;
For( i = 1, i <= n - 1, i++,
x = (x ^ b1 + Random Exp() * theta1 ^ b1) ^ (1 / b1);
k++;
data[k, 1] = id;
data[k, 2] = 1;
data[k, 3] = x;
data[k, 4] = 1;
);
k++;
data[k, 1] = id;
data[k, 2] = 1;
data[k, 3] = x;
data[k, 4] = 0;
For( i = 1, i <= n - 1, i++,
x = (x ^ b2 + Random Exp() * theta2 ^ b2) ^ (1 / b2);
k++;
data[k, 1] = id;
data[k, 2] = 2;
data[k, 3] = x;
data[k, 4] = 1;
);
k++;
data[k, 1] = id;
data[k, 2] = 2;
data[k, 3] = x;
data[k, 4] = 0;
);
dt = As Table(data,<
<COLUMN names=""></COLUMN>
<DIV>
</DIV>
<DIV>En este sencillo ejemplo de juguete, el modelo real está ajustado. Por lo tanto, el ajuste del modelo es excelente. Sin embargo, el gráfico MCF no puede mostrar la bondad del ajuste.</DIV> <P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yusuke_ono_0-1754960081412.png" style="width: 400px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><SPAN class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><span class="lia-inline-image-display-wrapper" image-alt="yusuke_ono_0-1754960081412.png" style="width: 390px;"><img src="https://us.v-cdn.net/6038925/uploads/images/80136i9723A629E7469671/yusuke_ono_0-1754960081412.png" role="button" title="yusuke_ono_0-1754960081412.png" alt="yusuke_ono_0-1754960081412.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P> <BR />
<DIV>En resumen, no incluya covariables que varíen en el tiempo en la columna Agrupación y no utilice el gráfico MCF para comprobar la bondad del ajuste si su modelo tiene covariables que varían en el tiempo.</DIV>
<DIV>
</DIV> <BR />
Re: Análisis de recurrencia en el estándar JMP 18Hola,
Gracias por tu respuesta, es muy útil. No recibí el correo electrónico de la comunidad JMP para recordarme que revisara tu respuesta. Disculpa la demora en responder.
NO utilizaré el sitio como rol de AGRUPACIÓN.
He realizado el análisis y presentado algunos de los resultados. Mi gerente está satisfecho. Muchas gracias.
El siguiente paso es ver el COSTO (dinero real) en el MCF para ver el dinero promedio por reparación de bot.
Así que planeo poner el importe en lugar del 1 (que indica la reparación) en la columna de costos. El 0 se mantendrá como estado de censura indicado.
¿Es esa la forma correcta de calcular el costo promedio por reparación de un bot? A continuación, se muestra un ejemplo de datos con el costo real en la columna "Costo".
Estoy usando el estándar JMP 18.
Gracias.

Re: Análisis de recurrencia en el estándar JMP 18Gracias de nuevo por tu respuesta, @Caozheng0115 -san
Puede especificar cualquier coste positivo. En las estimaciones no paramétricas, se calculan los costes acumulados. En las estimaciones paramétricas, los costes se utilizan como ponderaciones de la función de logaritmo de verosimilitud.(Si desea conocer los detalles matemáticos, me gustaría explicarlo más, así que por favor responda así).
Me temo que malinterpreté su situación y que no expliqué bien el efecto variable en el tiempo. En su último ejemplo, la columna "Sitio" no indica "efecto variable en el tiempo".Los efectos "variables en el tiempo" son efectos cuyos valores cambian con cada ID. En los siguientes datos, la columna "Sitio" es un efecto variable en el tiempo.

También me temo que no entiendo bien la diferencia entre robots. Asumí que todos los robots tienen la misma versión, tipo y grado, así que no configuré el "ID" como efecto de agrupación ni como efecto de modelo. (Por ejemplo, si ID=001, ID=002 e ID=003 son C-3PO, R2-D2 y BB-8 en Star Wars, respectivamente, estos tres robots son de tipos completamente diferentes. Por lo tanto, creo que deberíamos configurar la columna ID como columna de agrupación e incluirla también como efecto de modelo).
En tu último ejemplo, el "Sitio" se confunde completamente con el "ID". Por lo tanto, no podemos separar el efecto del Sitio del ID. (Por ejemplo, C-3PO solo funcionaba en un desierto, R2-D2 solo cerca del mar y BB-8 solo dentro de un edificio confortable; no podemos separar el efecto del ID del efecto del lugar).
Aunque aún no entiendo bien su situación, a continuación se presenta un ejemplo de análisis para su último ejemplo. Calculo los costos acumulados no paramétricos para cada ID=001 y 002 por separado, incluyendo la columna de ID a Agrupación. Excluyo los datos de ID=003 de mi análisis porque solo hay un fallo. Ajusto el modelo de proceso paramétrico loglineal de Poisson para cada ID. Con base en este modelo, el costo acumulado en el tiempo=300 para ID=001 se estima en 13300,37, y el de 002 en el tiempo=300, en 550,007.


Adjunto la tabla de datos, de tu último ejemplo, que utilicé para el análisis anterior.
Re: Análisis de recurrencia en el estándar JMP 18Hola, gracias por tu rápida respuesta. No me malinterpretaste, y de hecho existen dos tipos de bots. Yo uso el tipo de bot en el efecto de AGRUPACIÓN si quiero ver el efecto de cada tipo de bot. Mi último ejemplo es simple, sin el sitio como covariable temporal, solo para simplificar el ejemplo. No me malinterpretaste y entiendo tu preocupación.
En cuanto al peso de la función de verosimilitud, creo tener una idea de cómo funciona. Usar los costos como ponderadores significa que los eventos más costosos tienen mayor peso al configurar el modelo ajustado, no solo en el total acumulado. Ahora no me centraré en las matemáticas y usaré el peso en el rol del costo. ¡Saludos!
Re: Análisis de recurrencia en el estándar JMP 18Gracias de nuevo por tu respuesta, @Caozheng0115 -san.
Me alegra oírlo. Si tienes más preguntas sobre el análisis recurrencial, me gustaría que las hicieras de nuevo o respondieras a este hilo.
Re: Análisis de recurrencia en el estándar JMP 18Hola,
Espero que estés bien.
Probé los valores en dólares en la columna de costos. Dado que el costo es como la escala/ponderación de los eventos de reparación, se desplazó la curva, pero no se observó nada inesperado.
Otra tarea es predecir las reparaciones y los costos futuros. ¿Cree que la recurrencia en JMP es una buena manera de realizar predicciones? He estado usando el modelo loglineal NHPP, pero he observado que la curva ajustada converge rápidamente y probablemente generará predicciones incorrectas.
Supongo que puedo usar el modelo NHPP proporcional. Simplemente siento que no tengo muchas opciones y la predicción con el análisis de recurrencia no parece precisa.
¿Existen otros análisis que me permitan hacer la predicción?
Gracias.
Re: Análisis de recurrencia en el estándar JMP 18Querido Cao Zheng-
Acabo de ver este hilo. Hay recursos de aprendizaje muy buenos disponibles en el sitio web de JMP. Para información sobre confiabilidad general, consulte Learn JMP - Comunidad de usuarios de JMP . Para análisis de sistemas reparables, mi colega Jerry Fish impartió un seminario web excelente. Puede encontrarlo en este enlace: Análisis de confiabilidad para sistemas reparables .
¡Espero que esto ayude!
mejor,
Charlie
Re: Análisis de recurrencia en el estándar JMP 18Hola-
Añadiendo algo a la publicación de Charlie:
Un montón de excelentes recursos en Learn JMP
Consulte este enlace https://community.jmp.com/t5/Aprenda-JMP-Events/Análisis-de-la-confiabilidad-para-sistemas-no-reparables/ec-p/810009#M452
También esta serie que incluye varios segmentos sobre Recurrencia https://community.jmp.com/t5/Deeper-Dives/A-Deeper-Dive-into-Reliability-Analysis-for-Repairable-Systems/ta-p/738833
Re: Análisis de recurrencia en el estándar JMP 18Hola, yusuke_ono.
Espero que estés bien. Pensé en algo de tu respuesta:
'Si observó hasta "t", y si el robot falló en ese momento "t", no necesita incluir la última fila con costo = 0. En su lugar, debe incluir la última fila con costo = 1.
Mi pregunta es: ¿qué pasa si los bots fallan antes del tiempo "t" y se eliminan? ¿Deberían incluirse?
En mi caso, por ejemplo, un bot falló en la transacción 100 (uso transacción en lugar de tiempo) y no se pudo solucionar, y eso ocurrió antes de mi observación. Supongo que rellenaré con un 1 en la transacción 100 para este bot. No se rellenará con un 0, ya que este bot no se puede solucionar. ¿Correcto? Actualmente no incluimos ningún bot que haya fallado y no se haya solucionado antes de la observación. Avísenme si debo incluir esos bots. Gracias.