データ内の「エルボ」を見つけるための数式を探していますこんにちは、JMPの皆さん
(通常の JMP 18.0.1 では、サンプルデータが添付されています)
私はいくつかのデータを分析しており、その中で、データが「屈曲」または変曲する時間 (x ポイント) を見つける必要があります。データには最初の小さなピークがあり、この作業を手動で行っています。ただし、これは時間がかかるため、自動化したいと考えています。何百ものテストでこれを実行すると、さまざまなピーク時間/量とさまざまな「平坦」時間を持つ、以下のようなグラフが返されるからです。「平坦」時間は通常、非常に平坦ではなく、非常に徐々に減少します。添付のグラフの画像 (例/ダミー データ) で、見つけたいスポット/領域を確認できます。
私に何ができるかについて、どんな助言でも本当に助かります。フラグ列を設定するのがこれを見つける良い方法だと思いますが、フラグを機能させるために使用できる JSL または数式がわかりません。
これを解決する上で何か助けがあれば助かります、ありがとうございます!

自動化とスクリプト基本的なデータ分析とモデリングデータの探索と視覚化ウィンドウズRe: データ内の「エルボ」を見つけるための数式を探しています私は、次の 10 個のデータ ポイントがすべて前のデータ ポイントよりも大きいデータ ポイントとして肘を見つけるアプローチをとりました。これは完全に作り出されたアルゴリズムです。しかし、肘を識別するための可能な方法であるように見えます。


これは私が「エルボー」と名付けた列に作成した数式です。
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: データ内の「エルボ」を見つけるための数式を探していますさて、この解決策ははるかに複雑です。
ピーク曲線に関数を当てはめて、2 次導関数を計算したと想像してみてください。

グラフで見ると分かりやすくなります。図の最初のトレースは、元のデータ、フィッティングのモデル、フィッティングの 1 次導関数と 2 次導関数です。分かりにくいかもしれませんが、2 次導関数の最大値 (青い線) は、最初の線 (三角形のマーカー) のエルボの中央にあります。
JSL を使ってそこに到達した方法は次のとおりです。(注: 最初の列の名前を変更しました)
このスクリプトでは、曲線の適合とともにすべての計算を JMP で整理します。
Names Default To Here( 1 );
dt=Open( "$Examples/Example for Elbow.jmp" );
obj=dt <<FIT curve=""></FIT>
<P>最後のステップでは、「エルボー」行が赤い三角形のマーカーに変わります。ただし、選択した行をテーブルにサブセット化して、他のすべてのフィットとともにテーブルに追加することも同様に簡単です。何百ものテーブルでこれを試したわけではありませんが、ループに入れて多数のデータ テーブルを反復処理すると、かなり速く実行されると思います。</P>Re: データ内の「エルボ」を見つけるための数式を探していますSpectris アドインをご覧になってみてください。これを使用すると、プライマリ ピークとセカンダリ ピーク (おそらくショルダーの原因) の両方をフィッティングできます。
https://community.jmp.com/t5/JMP-Add-Ins/Spectris-Graphical-spectral-data-processing/ta-p/650521
M
Re: データ内の「エルボ」を見つけるための数式を探していますこんにちは、バイロン。
ありがとうございます! 平滑化された関数で 2 次導関数を試してみましたが、うまくいかないようです。しかし、skew 正規関数はまだ試していません。試してみて、何が見つかるか見てみましょう! また、グラフの「エルボ」ポイントを非常にうまく見つけることができる「Kneedle」アルゴリズムをスクリプトに組み込む方法も考えています。
ありがとう!
ロシェル