尋找一個公式來找到我的數據中的“肘部”嗨,JMP 朋友們,
(在常規 JMP 18.0.1 上,附有範例資料)
我正在分析一些數據,其中我需要找到我的數據出現「肘部」或拐點的時間(x點)。我的數據中有一個最初的小峰值,並且一直手動完成這項工作。然而,這很慢,我想將其自動化,因為我將針對數百個測試執行此操作,這些測試返回類似於下面的圖表,具有不同的峰值時間/數量和不同的「平坦」時間。 「平坦」時間通常不是非常平坦,而是逐漸減少。您可以在所附圖表影像(範例/虛擬資料)中看到我想找到的地點/區域。
對我能做的任何幫助都會非常有幫助。我認為設定標誌列是找到此內容的好方法,但不確定可以用來使標誌發揮作用的 JSL 或公式。
任何解決這個問題的幫助都會很棒,謝謝!

自動化和腳本編寫基礎資料分析與建模數據探索和視覺化視窗回覆:尋找一個公式來尋找我的數據中的“肘部”我試圖找到肘部作為數據點,其中接下來的 10 個數據點都大於前一個數據點。這絕對是一個編造的演算法。但看起來這可能是識別肘部的一種可能方法。


這是我為名為 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;
回覆:尋找一個公式來尋找我的數據中的“肘部”好吧,這個解決方案要複雜得多。
想像一下,如果您將函數擬合到峰值曲線,然後計算二階導數?

以圖形方式更容易查看。圖中,第一條跡線是原始資料、擬合模型、擬合的一階導數和二階導數。可能不容易看到,但二階導數(藍線)的最大值是第一條線(三角形標記)上手肘的中間。
以下是我如何透過 JSL 實現這一目標。 (註:我更改了第一列的名稱)
在此腳本中,我讓 JMP 整理所有微積分以及曲線擬合。
Names Default To Here( 1 );
dt=Open( "$Examples/Example for Elbow.jmp" );
obj=dt <<FIT curve=""></FIT>
<P>最後一步將「手肘」行變成紅色三角形標記。但是您可以輕鬆地將所選行子集到表中,並將其新增至包含所有其他適合項目的表中。我沒有對數百個表進行嘗試,但我認為如果將其放入循環中以迭代大量數據表,它會執行得相當快。</P>回覆:尋找一個公式來尋找我的數據中的“肘部”您可能會看一下 Spectris 插件。它可用於擬合主峰和次峰(可能是導致該肩峰的原因。
https://community.jmp.com/t5/JMP-Add-Ins/Spectris-Graphical-spectral-data-processing/ta-p/650521
M
回覆:尋找一個公式來尋找我的數據中的“肘部”嗨拜倫,
感謝這個!我已經嘗試過平滑函數的二階導數,但它似乎不起作用。但我還沒有嘗試過傾斜正常功能。我會嘗試一下,看看對我來說有什麼好處!我還在考慮找出一種現在在“Kneedle”演算法中編寫腳本的方法,我發現這種演算法可以很好地找到圖形中的“肘部”點。
謝謝!
羅謝爾