Je recherche une formule pour trouver le « coude » dans mes donnéesSalut les amis de JMP,
(Sur JMP 18.0.1 standard, exemples de données ci-joints)
J'analyse certaines données pour lesquelles je dois trouver le moment (point x) auquel mes données ont un « coude » ou une inflexion. J'ai un mini-pic initial dans mes données et j'ai fait ce travail manuellement. Cependant, c'est lent et j'aimerais l'automatiser, car je vais le faire pour des centaines de tests qui renvoient des graphiques similaires à ceux ci-dessous, avec des temps/montants de pic variables et des temps « plats » variables. Les temps « plats » ne sont généralement pas très plats, mais plutôt en diminution très progressive. Vous pouvez voir dans l'image ci-jointe du graphique (exemple/données fictives) quel point/zone je voudrais trouver.
Toute aide sur ce que je pourrais faire serait vraiment utile. Je pense que la configuration d'une colonne d'indicateurs serait un bon moyen de trouver cela, mais je ne suis pas sûr du JSL ou de la formule que je peux utiliser pour faire fonctionner l'indicateur.
Toute aide pour comprendre cela serait formidable, merci !

Automatisation et scriptsAnalyse et modélisation de données de baseExploration et visualisation des donnéesles fenêtresRe : Je recherche une formule pour trouver le « coude » dans mes donnéesJ'ai cherché à trouver le coude comme point de données, où les 10 points de données suivants sont tous supérieurs au point de données précédent. Il s'agit absolument d'un algorithme inventé. Mais il semble que cela puisse être un moyen possible d'identifier le coude.


Voici la formule que j'ai créée pour la colonne que j'ai nommée Elbow
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 : Je recherche une formule pour trouver le « coude » dans mes donnéesOk, donc cette solution est bien plus compliquée.
Imaginez si vous ajustiez une fonction à la courbe de pointe, puis calculiez la seconde dérivée ?

C'est plus facile à voir graphiquement. Dans la figure, la première trace correspond aux données d'origine, un modèle d'ajustement, les première et seconde dérivées de l'ajustement. Ce n'est peut-être pas facile à voir, mais le maximum de la seconde dérivée (ligne bleue) correspond au milieu du coude sur la première ligne (marqueur triangulaire).
Voici comment j'en suis arrivé là avec JSL. (Remarque : j'ai changé le nom de la première colonne)
Dans ce script, je laisse JMP trier tous les calculs ainsi que l'ajustement de la courbe.
Names Default To Here( 1 );
dt=Open( "$Examples/Example for Elbow.jmp" );
obj=dt <<FIT curve=""></FIT>
<P>La dernière étape transforme la ligne « coude » en un marqueur triangulaire rouge. Mais vous pouvez tout aussi bien sous-ensembleer la ligne sélectionnée dans un tableau et l'ajouter à un tableau avec tous vos autres ajustements. Je n'ai pas essayé cela avec des centaines de tables, mais je pense que cela s'exécuterait assez rapidement si vous le mettiez dans une boucle pour parcourir un grand nombre de tables de données.</P>Re : Je recherche une formule pour trouver le « coude » dans mes donnéesVous devriez jeter un œil au module complémentaire Spectris. Il peut être utilisé pour ajuster à la fois le pic principal et le pic secondaire (c'est probablement ce qui est à l'origine de cet épaulement).
https://community.jmp.com/t5/JMP-Add-Ins/Spectris-Graphical-spectral-data-processing/ta-p/650521
M
Re : Je recherche une formule pour trouver le « coude » dans mes donnéesSalut Byron,
Merci pour celui-ci ! J'ai essayé la 2e dérivée sur une fonction lissée, et cela ne semble pas fonctionner. Mais je n'ai pas essayé la fonction normale oblique. Je vais essayer et voir ce que cela me donne ! Je cherche également à trouver un moyen d'écrire maintenant l'algorithme « Kneedle », qui est quelque chose que j'ai trouvé et qui trouve très bien le point « coude » dans les graphiques.
Merci!
Rochelle