54507 向量自回归 (VAR)
向量自回归(VAR)方法使用 AR 模型模拟每个时间序列中的下一步。AR 是多个并行时间序列的推广,例如,多变量时间序列。
该模型的符号涉及指定 模型的阶数作为 VAR 函数的参数,例如 。
定义
VAR 模型描述了一组 个变量(称为内生变量)随时间的演变。每个时间段都有编号,
一般而言, 阶 VAR 是指包含最后 个时间段的滞后的 VAR 模型。 阶VAR模型表示为""。一个 阶 VAR 模型写为
表示变量在 个时间段之前的值,称为 的"第 个滞后" 。变量 是常数的 向量,用作模型的截距。 是时不变() 矩阵,而 是误差项的 向量。误差项必须满足三个条件:
-
每个误差项的均值为零。
-
误差项的同期协方差矩阵是一个 正半定矩阵,表示为 。
-
对于任何非零 ,跨时间没有相关性。特别是,在单个误差项中没有序列相关性。
更多内容可参见维基百科上的向量自回归[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)