2.5 波动幅度

 

波动幅度是描述原值波动大小的衍生序列。

通俗的讲,一段时间内最大值与最小值之差就可以作为波动幅度W

wi=ma-mi

其中mamiX[-l]i内的最大值和最小值。

但这么做会有隐患,当X中有特别大或特别小的值时,wi会持续一段时间(长度为l),受异常值影响很大。所以考虑将异常值去掉后,把正常数据的最大值、最小值以及当前值做差后的结果作为波动幅度W

时间序列X的波动幅度序列W

wi=max(mu-md,mu-xi, xi-md)

mu=max(Norm(X[-l]i))

md= min(Norm(X[-l]i))

其中mumd分别是X[-l]i中正常数据的最大值和最小值,Norm(…)是之前介绍的异常发现方法(箱线图法、正态统计法、距离法),返回所有的正常数据。

SPL例程:


A B C
1 =data=file(“1Ddata.csv”).import@tci().to(100) /时间序列X
2 =l=5 /区间l
3

=data.((if(#<=l,null,(xi=~,s=~[-l:-1],norm=func(A5,s,1.5),

ma=max(norm),mi=min(norm),max(ma-xi,xi-mi,ma-mi)))))

/波动幅度W,箱线图法中的四分位距倍数为1.5
4 /箱线图法,返回正常数据,参数:序列,四分位距倍数
5 func
6
=A5.median(:4)
7
=B6(1) /Q1
8
=B6(3) /Q3
9
=B8-B7 /IQR
10
=B7-B9*B5 /td
11
=B8+B9*B5 /tu
12
=A5.select(~>=B10&&~<=B11) /正常值

A3格中计算波动幅度序列W

A5代码块是箱线图发现异常法,返回所有正常数据,这里也可以换成其他的发现异常方法,比如正态统计法、距离法。

计算结果示例:

..

图中横轴是序列索引,左纵轴是原值X的取值,右纵轴是波动幅度W的取值。图例中X是原值,W是波动幅度。(前5个时刻没有波动幅度,图中只画了后95个时刻的波动幅度)

根据最大值和最小值算出的波动幅度只考虑原值本上的波动,没有考虑原值的趋势,比如当原值整体呈下降趋势时,波动的幅度会很大。所以波动幅度还可以考虑主线后再计算。

原值与主线对位相减后的序列称为波动序列,记为Wv,取Wv [-(l+1)]i+1内绝对值最大的前一半数的均值作为波动幅度wi

时间序列X的波动幅度序列W

Wv=XM

tophi=top(-n\2,|Wv [-(l+1)]i+1|)

wi=avg(tophi)

其中|Wv [-(l+1)]i+1|是指Wv [-(l+1)]i+1的数都取绝对值tophixi对应的|Wv [-(l+1)]i+1|中最大的前一半数。

SPL例程:


A B C
1 =data=file(“1Ddata.csv”).import@tci().to(100) /时间序列X
2 =l=5 /区间l
3 =fit_main(A1,10) /主线Mk=10
4 =A1--A3 /波动序列Wv
5 =A4.(if(#<=l,null,(s=~[-l:0],s.top(-(l+1)\2,abs(~)).avg()))) /波动幅度

A3格中是最小二乘法算出的主线(也可以用移动平均的方法算主线)

A5格中计算波动幅度序列W

计算结果示例:

..

图中横轴是序列索引,左纵轴是原值X的取值,右纵轴是波动幅度W的取值。图例中X是原值,W是波动幅度。(前5个时刻没有波动幅度,图中只画了后95个时刻的波动幅度)