R

從平滑數據中查找 R 中的拐點

  • November 19, 2013

我有一些數據可以平滑使用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 的觀點,即您應該研究變化點分析,有時也稱為分段回歸。

引用自:https://stats.stackexchange.com/questions/76959

comments powered by Disqus