R
從平滑數據中查找 R 中的拐點
我有一些數據可以平滑使用
loess
。我想找到平滑線的拐點。這可能嗎?我敢肯定,有人已經提出了一種奇特的方法來解決這個問題……我的意思是……畢竟,它是 R!我可以更改我使用的平滑功能。我只是用過
loess
,因為那是我過去使用過的。但是任何平滑功能都可以。我確實意識到拐點將取決於我使用的平滑函數。我沒關係。我想開始使用任何可以幫助吐出拐點的平滑功能。這是我使用的代碼:
x = seq(1,15) y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9) plot(x,y,type="l",ylim=c(3,10)) lo <- loess(y~x) xl <- seq(min(x),max(x), (max(x) - min(x))/1000) out = predict(lo,xl) lines(xl, out, col='red', lwd=2)
從使用 R 查找平滑曲線中的拐點的角度來看,您只需找到平滑 y 值中 y 的變化切換符號的那些位置。
infl <- c(FALSE, diff(diff(out)>0)!=0)
然後,您可以在出現這些拐點的圖形中添加點。
points(xl[infl ], out[infl ], col="blue")
從找到具有統計意義的拐點的角度來看,我同意 @nico 的觀點,即您應該研究變化點分析,有時也稱為分段回歸。