识别“模糊”的局部极值,忽略低于某些公差的极值。

时间:2018-06-29 18:52:12

标签: r math time-series

我有一个时间序列的数据,我想在其中找到局部极值,但是我想删除一些在一定公差范围内的极值,因为我的数据很嘈杂。在下面的示例中,我想识别所有幅度大于0.1的极值。所以我想提取两个蓝点,而忽略绿点。我该怎么办?

我的数据对于黄土或其他平滑剂来说太大了,无论如何,这些方法只能估算出极值的位置。我对该方法是否将端点标识为极值无关。

example <- data.frame(x=1:20,
     y=c(3,2.5,2,2.1,1.5,1,1.2,1.4,2,2.6,2.7,3,2.9,3.1,2.8,2.9,2.7,1.6,1,.8),
     is.extremum=c(F,F,T,T,F,T,F,F,F,F,F,T,T,T,T,T,F,F,F,F),
     #Below is the vector that I'd like to determine algorithmically. 
     is.fuzzy.extremum=c(F,F,F,F,F,T,F,F,F,F,F,F,F,T,F,F,F,F,F,F))

#Red = not extremum, green=false extrema, blue=desired extrema
plot(example$y~example$x, pch=16, col=example$is.extremum+example$is.fuzzy.extremum+2)

#Getting is.extremum is easy...
which(abs(diff(sign(diff(example$y))))==2)+1

enter image description here

0 个答案:

没有答案