有沒有辦法找到這個最小值(如圖所示)並排除其左側的數據。

我不知道。 我認為它一半是科學,一半是藝術,尤其是樣條線。 我認為,如果您嘗試在不目視檢查結果的情況下實現程式碼自動化,您將需要在程式碼中添加一些健全性檢查。 如果您的過程有可能在開始時產生額外的振盪,那麼這顯然會失敗。 或更多的數據,或更少的數據,或在範圍內不同的密集/稀疏等可能會改變結果。
有人可能會建議特定於流程或行業的其他模型。 他們需要有關數據的更多資訊。
嗨克雷格,
這看起來棒極了。 我會在其他數據表上嘗試並檢查。
如果我必須對相似數據的多個數據表進行自動分析,有沒有辦法找到合適的 lambda 值?
謝謝。
您最初的問題似乎是關於樣條線,適合雜訊數據,並找到該樣條線的第一個最小值。 對於範例數據,這似乎有效:
dt = Open( "Z:/Minima_JMP.jmp" );
dt << sort( by( x ), replacetable( 1 ) );
obj = dt << Bivariate(
Y( :Y ),
X( :X ),
Fit Spline( 26.8534445, {Line Color( {66, 112, 221} )} ),
Automatic Recalc( 1 ),
SendToReport( Dispatch( {}, "Bivar Plot", FrameBox, {Frame Size( 1653, 240 )} ) )
);
obj << (Curve["Smoothing Spline Fit, lambda=26.8534445"] << Save Predicteds);
For( irow = 2, irow < N Rows( dt ), irow += 1,
If( dt:Spline Predictor for Y[irow] > dt:Spline Predictor for Y[irow - 1],
Write( Eval Insert( "the inflection upward trend begins around row ^irow^" ) );
// choose one of these...
dt << selectrows( 1 :: irow );
// dt<<DELETEROWS>= N Rows( dt ),
Write( "not found?" )
);</DELETEROWS>
The selected points in the graph are also selected rows in the data table; press delete in the table. Or, choose the <<deleterows statement.The selected points in the graph are also selected rows in the data table; press delete in the table. Or, choose the <<deleterows statement.圖中選定的點也是資料表中選定的行;按表中的刪除。 或者,選擇 <
在日誌中:拐點上升趨勢從第 231 行開始
這是在按 X 升序對錶進行排序之後的結果。
透過調整樣條線的張力 (lambda=...),您將得到不同的答案。 確保在重新運行腳本之前刪除預測列,或關閉表而不保存。
如果資料的實際形狀與您的範例不匹配,這個想法就會被打破;如果一開始就已經呈現上升趨勢,等等。
這可能不是執行您需要的操作的正確方法;我認為你必須解釋數據來自什麼樣的過程以及為什麼你想在數據中找到這一點,以便讓其他人添加一些想法。
嗨克雷格,
感謝您的答覆。 我已附上該圖的資料表(Minima_Jmp)以及 X 和 Y 欄位。
以下是我的回覆:
1]數據真的那麼流暢嗎? 或數據有噪音?
答:數據有雜訊 - 如下圖 2 所示
2]你只需要比前一行大的第一行嗎?
答:這個問題對我來說不是很清楚 - 我會找到第一個最小值點並排除其左側的所有數據
3] 是否有產生數據的方程式?
並且:不,這個數據沒有方程式 - 也許我們可以擬合一個方程式來描述曲線,但這只是一個近似值


我不是回答這個問題的合適人選,但可能需要更多資訊來了解什麼樣的答案適合:
數據真的那麼流暢嗎? 或數據有噪音?
您只需要比前一行大的第一行嗎?
是否有生成數據的方程式?