0
点赞
收藏
分享

微信扫一扫

​Python 中的经典时间序列预测模型总结【07~09】

腊梅5朵 2022-04-13 阅读 49
经验分享

54507 向量自回归 (VAR)

向量自回归(VAR)方法使用 AR 模型模拟每个时间序列中的下一步。AR 是多个并行时间序列的推广,例如,多变量时间序列。

该模型的符号涉及指定  模型的阶数作为 VAR 函数的参数,例如 。

定义

VAR 模型描述了一组  个变量(称为内生变量)随时间的演变。每个时间段都有编号,

一般而言, 阶 VAR 是指包含最后  个时间段的滞后的 VAR 模型。 阶VAR模型表示为""。一个  阶 VAR 模型写为

 表示变量在  个时间段之前的值,称为  的"第  个滞后" 。变量  是常数的  向量,用作模型的截距。 是时不变() 矩阵,而  是误差项的  向量。误差项必须满足三个条件:

  1.  每个误差项的均值为零。

  2.  误差项的同期协方差矩阵是一个  正半定矩阵,表示为 。

  3.  对于任何非零 ,跨时间没有相关性。特别是,在单个误差项中没有序列相关性。

更多内容可参见维基百科上的向量自回归[6]

Python代码

# VAR example
from statsmodels.tsa.vector_ar.var_model import VAR
from random import random
# contrived dataset with dependency
data = list()
for i in range(100):
    v1 = i + random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
# fit model
model = VAR(data)
model_fit = model.fit()
# make prediction
yhat = model_fit.forecast(model_fit.y, steps=1)

08 向量自回归移动平均值(VARMA)

向量自回归移动平均(VARMA)方法使用 ARMA 模型对每个时间序列中的下一步进行建模。这是 ARMA 对多个并行时间序列的推广,例如多变量时间序列。

该模型的表示法涉及将  和  模型的顺序指定为 VARMA 函数的参数,例如, 。VARMA 模型也可用于开发 VAR 或 VMA 模型。

Python代码

# VARMA example
from statsmodels.tsa.statespace.varmax import VARMAX
from random import random
# contrived dataset with dependency
data = list()
for i in range(100):
    v1 = random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
# fit model
model = VARMAX(data, order=(1, 1))
model_fit = model.fit(disp=False)
# make prediction
yhat = model_fit.forecast()

09 具有外源回归量的向量自回归移动平均值(VARMAX)

带有外生回归量的向量自回归移动平均 (VARMAX) 是 VARMA 模型的扩展,它还包括外生变量的建模。它是 ARMAX 方法的多元版本。

外生变量也称为协变量,可以被认为是并行输入序列,它们在与原始序列相同的时间步长中进行观察。主要系列被称为内源数据,以将其与外源序列进行对比。外生变量的观察值在每个时间步直接包含在模型中,并且不以与主要内生序列相同的方式建模(例如作为 AR、MA 等过程)。

VARMAX 方法还可用于对具有外生变量的包含模型进行建模,例如 VARX 和 VMAX。

Python代码

# VARMAX example
from statsmodels.tsa.statespace.varmax import VARMAX
from random import random
# contrived dataset with dependency
data = list()
for i in range(100):
    v1 = random()
    v2 = v1 + random()
    row = [v1, v2]
    data.append(row)
data_exog = [x + random() for x in range(100)]
# fit model
model = VARMAX(data, exog=data_exog, order=(1, 1))
model_fit = model.fit(disp=False)
# make prediction
data_exog2 = [[100]]
yhat = model_fit.forecast(exog=data_exog2)

举报

相关推荐

时间序列预测 —— TCN模型

0 条评论