series_decompose_forecast()

根据序列分解情况进行预测。

采用包含某个序列(动态数值数组)的表达式作为输入,并预测最后的尾随点的值。 有关详细信息,请参阅 series_decompose

语法

series_decompose_forecast(Series,Points, [ Seasonality,Trend,Seasonality_threshold ])

详细了解语法约定

参数

客户 类型​​ 必需 说明
系列 dynamic 数值的数组,通常是 make-seriesmake_list 运算符生成的输出。
int 指定要预测的序列末端的点数。 这些点将从学习或回归过程中排除。
季节性 int 控制周期性分析。 可能的值为:

- -1:使用 series_periods_detect 自动检测周期性。 这是默认值。
- Period:一个正整数,按箱数指定所需期间。例如,如果将序列按 1 - h 箱分箱,则一个每周期间为 168 箱。
- 0:无周期性,因此请跳过提取此组件的操作。
趋势 string 控制趋势分析。 可能的值为:

- avg:将趋势组件定义为 average(x)。 这是默认值。
- linefit:使用线性回归提取趋势组件。
- none:无趋势,因此请跳过提取此组件的操作。
Seasonality_threshold real 当 Seasonality 设置为 autodetect 时周期性分数的阈值。 默认分数阈值为 0.6。

有关详细信息,请参阅 series_periods_detect

返回

一个包含预测的序列的动态数组。

注意

  • 原始输入序列的动态数组应当包含许多要预测的点槽。 预测通常是通过使用 make-series 并在包含要预测的时间范围的范围内指定结束时间来完成的。
  • 应当启用周期性或趋势,否则该函数将是冗余的,只返回用零填充的序列。

示例

在下面的示例中,我们将以小时粒度生成包含四周的一个序列,它具有每周周期性和小幅上升趋势。 然后,我们使用 make-series 并向序列中添加另一个空周。 series_decompose_forecast 按周(24*7 个点)调用,自动检测周期性和趋势,并生成整个五周期间的预测。

let ts=range t from 1 to 24*7*4 step 1 // generate 4 weeks of hourly data
| extend Timestamp = datetime(2018-03-01 05:00) + 1h * t 
| extend y = 2*rand() + iff((t/24)%7>=5, 5.0, 15.0) - (((t%24)/10)*((t%24)/10)) + t/72.0 // generate a series with weekly seasonality and ongoing trend
| extend y=iff(t==150 or t==200 or t==780, y-8.0, y) // add some dip outliers
| extend y=iff(t==300 or t==400 or t==600, y+8.0, y) // add some spike outliers
| make-series y=max(y) on Timestamp from datetime(2018-03-01 05:00) to datetime(2018-03-01 05:00)+24*7*5h step 1h; // create a time series of 5 weeks (last week is empty)
ts 
| extend y_forcasted = series_decompose_forecast(y, 24*7)  // forecast a week forward
| render timechart 

Series decompose forecast.