1.5 极值

 

箱线图法、正态统计法、距离法都是用X[-k]i的全部数据学习tu、td,计算复杂多相对高,尤其是距离法,计算复杂度是O(n2)。tu、td是数据中除异常点外的最大和最小值,我们可以用较大的一部分数据计算tu,较小的一部分数据计算td,这样就可以大大降低计算复杂度。

数学上极值这样定义:若函数f(x)在x0的一个邻域D有定义,且对D的所有点,都有f(x)<f(x0),则称f(x0)是函数f(x0)的一个极大值。同理,若对D的所有点,都有f(x)>f(x0),则称f(x0)是函数f(x)的一个极小值。

时间序列的极值可以类似描述,时间序列X中,若xi大于它之前1个区间的所有值且不小于之后1个区间的所有值,就称xi是极大值。同理,如果xi小于它之前1个区间的所有值且不大于之后1个区间的所有值,就称xi是极小值

极大值刚好是数据中较大的一部分,可以用来算tu,极小值是较小的一部分,可以用来算td。计算的方法是一样的,区别是原来用X[-k]i算tu、td。现在用X[-k]i中的极大值算tu,X[-k]i中的极小值算td。

极值的计算很简单:

令

Z=X[-k]i

极大值序列Mav

Mav=[zj, zj>max(Z[-l]j)&&zj≥max(Z[-l]j)]

极小值序列Miv

Miv=[zj, zj<min(Z[-l]j)&&zj≤=min(Z[-l]j)]

其中l是计算极值的区间长度。

还有一点需要注意,当Z是单调增、单调减或者常数的曲线时,极大值和极小值可能不存在或数量很少,无法描述整体数据的情况,此时不适合用极值来计算tu、td。

SPL例程


A

B

1

=data=file(B1).import@tci().to(100)


2

1

/l

3

=A1.len()


4

=A1.select(#>A2&&#<=A3-A2&&~>~[-A2,-1].max()&&~>=~[1,A2].max())

/极大值序列Mav

5

=A1.select(#>A2&&#<=A3-A2&&~<~[-A2,-1].min()&&~<=~[1,A2].min())

/极小值序列Miv

计算结果示例:

极大值(图中的加粗点)

..

极小值(图中的加粗点)

..