Cerco una formula per trovare il "gomito" nei miei datiCiao amici di JMP,
(Nella versione standard di JMP 18.0.1, dati di esempio allegati)
Sto analizzando alcuni dati in cui ho bisogno di trovare il momento (punto x) in cui i miei dati hanno un "gomito" o un'inflessione. Ho un mini-picco iniziale nei miei dati e ho svolto questo lavoro manualmente. Tuttavia, è lento e vorrei automatizzarlo, poiché lo farò per centinaia di test che restituiscono grafici simili a quelli sottostanti, con tempi/quantità di picco variabili e tempi "piatti" variabili. I tempi "piatti" in genere non sono molto piatti, ma piuttosto diminuiscono molto gradualmente. Puoi vedere nell'immagine allegata del grafico (dati di esempio/fittizi) quale punto/area vorrei trovare.
Qualsiasi aiuto su cosa potrei fare sarebbe davvero utile. Penso che impostare una colonna flag sarebbe un buon modo per trovarlo, ma non sono sicuro del JSL o della formula che posso usare per far funzionare il flag.
Ogni aiuto per capirlo sarebbe fantastico, grazie!

Automazione e scriptingAnalisi e modellazione dei dati di baseEsplorazione e visualizzazione dei datifinestreRe: Cerco una formula per trovare il "gomito" nei miei datiHo pensato di trovare il gomito come punto dati, dove i successivi 10 punti dati sono tutti maggiori del punto dati precedente. Questo è assolutamente un algoritmo inventato. Ma sembra che potrebbe essere un modo possibile per identificare il gomito.


Ecco la formula che ho creato per la colonna che ho chiamato Gomito
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: Cerco una formula per trovare il "gomito" nei miei datiOk, questa soluzione è molto, MOLTO più complicata.
Immagina di adattare una funzione alla curva di picco e poi di calcolare la derivata seconda?

È più facile da vedere graficamente. Nella figura, la prima traccia è il dato originale, un modello per un fit, la prima e la seconda derivata del fit. Potrebbe non essere facile da vedere, ma il massimo della seconda derivata (linea blu) è il centro del gomito sulla prima linea (indicatore del triangolo).
Ecco come ci sono arrivato con JSL. (Nota: ho cambiato il nome della prima colonna)
In questo script ho lasciato che JMP risolvesse tutti i calcoli insieme all'adattamento della curva.
Names Default To Here( 1 );
dt=Open( "$Examples/Example for Elbow.jmp" );
obj=dt <<FIT curve=""></FIT>
<P>L'ultimo passaggio trasforma la riga "elbow" in un marcatore triangolare rosso. Ma potresti facilmente sottoporre la riga selezionata a una tabella e aggiungerla a una tabella con tutti gli altri adattamenti. Non ho provato con centinaia di tabelle, ma penso che verrebbe eseguito abbastanza rapidamente se lo inserissi in un ciclo per scorrere un sacco di tabelle di dati.</P>Re: Cerco una formula per trovare il "gomito" nei miei datiPotresti dare un'occhiata allo Spectris Add-in. Può essere utilizzato per adattare sia il picco primario che quello secondario (probabilmente ciò che causa quella spalla.
https://community.jmp.com/t5/JMP-Add-Ins/Spectris-Graphical-spectral-data-processing/ta-p/650521
M
Re: Cerco una formula per trovare il "gomito" nei miei datiCiao Byron,
Grazie per questo! Ho provato la seconda derivata su una funzione levigata, e non sembrava funzionare. Ma non ho provato la funzione skew normal. Ci proverò e vedrò cosa cattura per me! Sto anche cercando di capire un modo per scrivere ora nell'algoritmo 'Kneedle', che è qualcosa che ho scoperto che trova il punto 'gomito' nei grafici molto bene.
Grazie!
Rochelle