Buscando una fórmula para encontrar el "codo" en mis datosHola amigos de JMP,
(Sobre la versión JMP 18.0.1 normal, se adjuntan datos de ejemplo)
Estoy analizando algunos datos en los que necesito encontrar el momento (punto x) en el que mis datos tienen un "codo" o inflexión. Tengo un minipico inicial en mis datos y he estado haciendo este trabajo manualmente. Sin embargo, esto es lento y me gustaría automatizarlo, ya que lo haré para cientos de pruebas que devuelven gráficos similares al siguiente, con diferentes tiempos/cantidades de pico y diferentes tiempos "planos". Los tiempos "planos" generalmente no son muy planos, sino que disminuyen muy gradualmente. Puede ver en la imagen adjunta del gráfico (datos de ejemplo/ficticios) qué punto/área me gustaría encontrar.
Cualquier ayuda sobre lo que puedo hacer sería muy útil. Creo que configurar una columna de indicadores sería una buena forma de encontrarlo, pero no estoy seguro del JSL o la fórmula que puedo usar para que funcione el indicador.
Cualquier ayuda para resolver esto sería genial, ¡gracias!

Automatización y scriptingAnálisis y modelado de datos básicosExploración y visualización de datosVentanasRe: Buscando una fórmula para encontrar el "codo" en mis datosMe propuse encontrar el codo como punto de datos, donde los siguientes 10 puntos de datos son todos mayores que el punto de datos anterior. Este es un algoritmo totalmente inventado, pero parece que podría ser una forma posible de identificar el codo.


Aquí está la fórmula que creé para la columna que llamé Codo
As Constant(
flag = 0;
lookAhead = 10;
);
val = .;
If( flag == 0 & Row() < N Rows( Current Data Table() ) - lookAhead,
If(
Min(
:Counts[Index( Row() + 1, Row() + lookAhead + 1 )] - :Counts[
Index( Row(), Row() + lookAhead )]
) > 0,
val = (flag = 1)
)
);
val;
Re: Buscando una fórmula para encontrar el "codo" en mis datosBueno, entonces esta solución es mucho más complicada.
Imagínese si ajustara una función a la curva de pico y luego calculara la segunda derivada.

Es más fácil verlo gráficamente. En la figura, el primer trazo son los datos originales, un modelo para un ajuste, la primera y la segunda derivada del ajuste. Puede que no sea fácil de ver, pero el máximo de la segunda derivada (línea azul) es el centro del codo en la primera línea (marcador triangular).
Así es como lo logré con JSL. (Nota: cambié el nombre de la primera columna)
En este script dejo que JMP resuelva todo el cálculo junto con el ajuste de la curva.
Names Default To Here( 1 );
dt=Open( "$Examples/Example for Elbow.jmp" );
obj=dt <<FIT curve=""></FIT>
<P>El último paso convierte la fila "codo" en un marcador de triángulo rojo. Pero también podrías crear un subconjunto de la fila seleccionada en una tabla y agregarla a una tabla con todos los demás ajustes. No probé esto con cientos de tablas, pero creo que se ejecutaría bastante rápido si lo pusieras en un bucle para iterar a través de muchas tablas de datos.</P>Re: Buscando una fórmula para encontrar el "codo" en mis datosPuede echar un vistazo al complemento Spectris. Se puede utilizar para ajustar tanto el pico principal como el secundario (probablemente lo que está causando ese hombro).
https://community.jmp.com/t5/JMP-Add-Ins/Spectris-Graphical-spectral-data-processing/ta-p/650521
M
Re: Buscando una fórmula para encontrar el "codo" en mis datosHola Byron,
¡Gracias por esto! Probé la segunda derivada en una función suavizada y no pareció funcionar. Pero no probé la función normal sesgada. ¡Lo intentaré y veré qué me funciona! También estoy buscando una manera de incluir ahora el algoritmo "Kneedle", que es algo que descubrí que encuentra el punto "codo" en los gráficos muy bien.
¡Gracias!
Rochelle