变点检测函数

变点检测函数一般用于对时序数据中的变点进行检测。

变点检测函数支持对如下两种变点形态进行检测:

  • 指定时间段内的某些统计特性发生了变化。

  • 序列数据中存在较为明显的断层。

函数列表

函数

说明

ts_cp_detect

寻找时序序列中具有不同统计特性的区间,区间端点即为变点。

ts_breakout_detect

寻找时序序列中,某统计量发生陡升或陡降的点。

ts_cp_detect

函数格式:

  • 若您无法确定窗口大小,可以使用如下格式的函数,该函数调用的算法默认会使用长度为10的窗口进行检测。

    select ts_cp_detect(x, y, samplePeriod)
  • 若您需要根据业务曲线进行效果调试,可以使用如下格式的函数,通过设置参数minSize进行效果调试。

    select ts_cp_detect(x, y, minSize) 

参数说明如下:

参数

说明

取值

x

时间列,从小到大排列。

格式为Unixtime时间戳,单位为秒。

y

数值列,对应某时刻的数据。

-

minSize

最小连续区间长度。

最小值为3,最大值不超过当前输入数据长度的1/10。

示例:

  • 查询分析

    * | select ts_cp_detect(stamp, value, 3) from (select '("__time__" - ("__time__" % 10))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp) 
  • 输出结果输出结果

显示项如下:

显示项

说明

横轴

unixtime

数据的时间戳,单位为秒,例如1537071480。

纵轴

src

滤波前的数据,例如1956092.7647745228。

prob

该点为变点的概率,取值范围为0~1。

ts_breakout_detect

函数格式:

select ts_breakout_detect(x, y, winSize) 

参数说明如下:

参数

说明

取值

x

时间列,从小到大排列。

格式为Unixtime时间戳,单位为秒。

y

数值列,对应某时刻的数据。

-

winSize

最小连续区间长度。

最小值为3,最大值不超过当前输入数据长度的1/10。

示例:

  • 查询分析

    * | select ts_breakout_detect(stamp, value, 3) from (select '("__time__" - ("__time__" % 10))' as stamp, avg(v) as value from log GROUP BY stamp order by stamp) 
  • 输出结果输出结果

显示项如下:

显示项

说明

横轴

unixtime

数据的时间戳,单位为秒,例如1537071480。

纵轴

src

滤波前的数据,例如1956092.7647745228。

prob

该点为变点的概率,取值范围为0~1。