[Day3] 经典时间序列预测方法盘点

第一篇记录了时间序列属性,将趋势、季节性等元素拆解、分别画出图表;
第二篇则介绍时间序列转换方法,透过缩放,让资料分布更趋於常态,让我们更好观察时序的类型。
从第三篇开始,我们会盘点时间序列预测方法,例如经典的统计模型:移动平均、ARIMA,再到最常见的机器学习回归模型、更适合处理多维特徵时间序列的递回神经网络等等。

我们将会介绍的统计模型有以下:

Autoregressive models (AR)

  • 公式:https://chart.googleapis.com/chart?cht=tx&chl=x_%7Bt%7D%20%3D%20b_%7B0%7D%20%2B%20b_%7B1%7Dx_%7Bt-1%7D%20%2B%20%5Cvarepsilon%20_%7Bt%7D

  • 逻辑:假设过去多个时间点 与 未来时间点的值呈线性关系,使用过去多个时间点的线性组合对未来时间点做预测。

Vector Autoregression model (VAR)

  • 公式: VAR_formula
  • 逻辑:向量自回归模型。从只能使用一个变量的 Autoregressive model 扩充成多变量,常於多变数时间序列。

Moving Average (MA)

Simple Moving Average

  • 公式:https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B(A_%7B1%7D%20%2B%20A_%7B2%7D%20%2B%20A_%7B3%7D%20%2B%20...%20%2B%20A_%7Bn%7D)%7D%7Bn%7D

  • 逻辑:
    移动平均会比整体平均更能反映现况。

Weighted Moving Average

  • 公式:https://chart.googleapis.com/chart?cht=tx&chl=(A_%7B1%7D%20*%20W_%7B1%7D%20%2B%20A_%7B2%7D%20*%20W_%7B2%7D%20%2B%20A_%7B3%7D%20*%20W_%7B3%7D%20%2B%20...%20%2B%20A_%7Bn%7D%20*%20W_%7Bn%7D)

  • 逻辑:
    简单移动平均法的延伸,可在公式中对不同时间点设定权重。

Exponential Smoothing (ES)

  • 公式:https://chart.googleapis.com/chart?cht=tx&chl=EMA_%7Bt%7D%20%3D%20%5Cbegin%7Bcases%7D%20x_%7B0%7D%20%26%20%5Ctext%7B%20if%20%7D%20t%3D0%20%5C%5C%20%20%5Calpha%20x_%7Bt%7D%20%2B%20(1-%20%5Calpha%20)EMA_%7Bt-1%7D%20%26%20%5Ctext%7B%20if%20%7D%20t%20%3E%200%20%5Cend%7Bcases%7D

  • 逻辑:
    对使用指数函数 (exponential function),越久以前的时间点,权重会呈指数衰减。

Autoregressive integrated moving average (ARIMA)

  • 公式: ARMA_formula

  • 逻辑:整合移动平均自回归模型,从 ARMA 演变而来,多了 I(d) 先计算 differencing 多次让时序平稳化後,使用自回归 (AR) 及移动平均 (MA) 的线性组合进行时序预测;其中的 d 是指 differencing 次数。

Holt's Model

Holt's Linear Trend Model

  • 公式:

    • 预测方程: https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%7By%7D_%7Bt%2Bh%7Ct%7D%20%3D%20l_%7Bt%7D%20%2B%20hb_%7Bt%7D
      • 计算「level」的方程: https://chart.googleapis.com/chart?cht=tx&chl=l_%7By%7D%20%3D%20%5Calpha%20y_%7Bt%7D%20%2B%20(1-%20%5Calpha%20)(l_%7Bt-1%7D%20%2B%20b_%7Bt-1%7D)
      • 计算「Trend」的方程: https://chart.googleapis.com/chart?cht=tx&chl=b_%7Bt%7D%20%3D%20%5Cbeta%20(l_%7Bt%7D%20-%20l_%7Bt-1%7D)%20%2B%20(1-%20%5Cbeta)b_%7Bt-1%7D
  • 逻辑:
    使用两个 ES 分别计算 Level & Trend,再做线性组合。

Holt-Winters model

  • 公式:

    • 预测方程 (Additive): https://chart.googleapis.com/chart?cht=tx&chl=%5Chat%7By%7D_%7Bt%2Bh%7Ct%7D%20%3D%20l_%7Bt%7D%2Bhb_%7Bt%7D%2Bs_%7Bt%2Bh-mk%7D
      • 计算「level」的方程: https://chart.googleapis.com/chart?cht=tx&chl=l_%7Bt%7D%20%3D%20%5Calpha%20(y_%7Bt%7D-s_%7Bt-m%7D)%20%2B%20(1%20-%20%5Calpha)(l_%7Bt-1%7D%20%2B%20b_%7Bt-1%7D)
      • 计算「Trend」的方程: https://chart.googleapis.com/chart?cht=tx&chl=b_%7Bt%7D%20%3D%20%5Cbeta(l_%7Bt%7D%20-%20l_%7Bt-1%7D)%2B(1-%20%5Cbeta)b_%7Bt-1%7D
      • 计算「Seasonality」的方程: https://chart.googleapis.com/chart?cht=tx&chl=s_%7Bt%7D%20%3D%20%5Cgamma%20(y_%7Bt%7D-l_%7Bt-1%7D-b_%7Bt-1%7D)%2B(1-%5Cgamma)s_%7Bt-m%7D
  • 逻辑:
    在 Holt's Linear Trend Model 的基础上,多加一个 ES 计算 Seasonality,并延续第一篇介绍过的类型,分为 Additive 和 Multiplicative。


<<:  [FGL] 再探资料库 - 使用 fgldbsch 工具

>>:  月费如何定价?免费试用会提高订阅率吗?

[LeetCode30] Day29 - 432. All O`one Data Structure

题目 实现一个资料结构,能支持下面4个操作: 执行每个操作,时间复杂度都要求为 O(1) Inc(s...

DAY16: 实作浏览器采取想访问的HTML

今天会结合上一篇的DAY15:HTTP GET请求的观念,并且加入一些不一样的东西,除了Nodejs...

Day6 Sideproject(作品集) from 0 to 1 -定义功能

今天来介绍我们是如何从自己需要和使用者的角度来定义功能 前面有说到我们想做一个一起做sideproj...

Material UI in React [ Day 16 ] Navigation Menu (下拉框)

Menu 这个套件应用的范围很广,之前讲解过的 Select 也是用这里的 MenuItem 来替换...

vue定义全域性变数

Global.vue 要共用的全域参数 <script> const _token = ...