1.一种水环境监测数据中异常值的检测和修复方法,其特征在于,包括以下步骤:
(1)利用滑动窗口对水环境监测数据进行短期环比来检测异常值;
(2)将水环境监测数据进行动态分割划分为各个子序列;
(3)针对异常值所在子序列,分别计算和其他子序列的相似性并选取相似性最大的子序列;
(4)根据最相似子序列中相应位置数据的变化趋势修复所述异常值;
所述步骤(2)中将水环境监测数据进行动态分割划分为各个子序列具体为:基于最大距离阈值 对序列进行动态划分,首先设置一个标志变量flag,flag值为1代表子序列处于上升状态、值为‑1代表处于下降状态、值为0代表处于稳定状态;根据数据序列的初始走势给flag赋初值;然后对每个监测数据vi做如下操作,计算与前一个数据的差分值ei=vi‑vi‑1,并计算子序列到目前为止的最大距离,当最大距离不超过阈值 时,如果ei与flag的符号相反则将flag设为0,当最大距离大于阈值 时,则根据flag及ei的值判断子序列曲线的总体走势和变动情况,从而划分保存子序列,最后为划分下一个子序列进行初始化操作;
所述步骤(3)中计算和其他子序列的相似性的形状距离计算公式如式(1)所示:
其中,V1,V2为两个时间序列,M1x,M2x分别为时间序列V1,V2第x个点的模式,取值范围为{‑3,‑2,‑1,0,1,2,3},分别代表{加速下降,水平下降,减速下降,不变,减速上升,水平上升,加速上升}六个模式;A1x,A2x分别为时间序列V1,V2第x个点的振幅改变量,即Ax=vx+1‑vx;
由式(1)可知,形状距离值越小,则两个时间序列的相似性越大,因此取D(Vi,Vj)的倒数作为子序列的相似度,如式(2)所示;对于子序列规模不一致的情况,可以采用滚动的方式将短序列分别与长序列中各个等长片段进行相似性计算,并将得到的最大相似度作为两个子序列的最终相似度;
sim(Vi,Vj)=1/D(Vi,Vj) (2)。
2.根据权利要求1所述的水环境监测数据中异常值的检测和修复方法,其特征在于,所述步骤(1)中检测异常值的方法具体为:对时间序列V上的每个监测值vi,与k‑最近邻居窗口大小逐一计算差值,并记录差值超过阈值ε的点数量countnum,当所有比较结束后,根据countnum值是否大于τ,检验vi是否为异常值,如果vi是异常值则将其位置记录下来;其中V为水环境监测数据V=(v1,v2,…,vn),其中点vi为ti时刻对应的监测值,1≤i≤n,表示点vi的k‑最近邻居窗口,若在 中存在 或者 则判定vi为异常值,其中ε为差值阈
值,τ为数量阈值。
3.根据权利要求1所述的水环境监测数据中异常值的检测和修复方法,其特征在于,所述步骤(4)中异常值的修复方法为:根据最相似子序列Vj中对应值的变化趋势,对异常值vi进行修复,即vi=vi‑1+(vj‑vj‑1)。