四、向量自回归模型(VAR)

1. 原理

VAR 模型用于建模多个时间序列变量之间的相互依赖关系。与 ARMA 模型只对单一时间序列进行建模不同,VAR 模型能够处理多变量时间序列,捕捉它们之间的动态关系。

2. 核心公式

十大时间序列模型最强总结(四)向量自回归模型(VAR)_大模型

推导

十大时间序列模型最强总结(四)向量自回归模型(VAR)_ai_02

3. 优缺点

1)优点

  • 能够处理多个时间序列变量,适合多变量时间序列数据的分析。
  • 能捕捉变量之间的动态相互关系。

2)缺点

  • 模型复杂度高,参数量大,尤其是当变量数目和滞后阶数都很大时。
  • 对数据的要求较高,尤其是数据量需要足够大以保证模型稳定性。
4. 适用场景

VAR 模型适用于多个经济、金融或社会时间序列变量的建模与预测,如宏观经济指标(GDP、通货膨胀率、失业率)之间的关系分析。

5. 核心案例代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.api import VAR

# 生成示例数据:多变量时间序列
np.random.seed(42)
dates = pd.date_range('2024-01-01', periods=100)
data1 = np.cumsum(np.random.randn(100)) + 50
data2 = np.cumsum(np.random.randn(100)) + 30
data = pd.DataFrame({'Variable1': data1, 'Variable2': data2}, index=dates)

# 拟合VAR模型 (p=2)
model = VAR(data)
var_result = model.fit(2)

# 预测未来10个时间点
forecast = var_result.forecast(data.values[-2:], steps=10)
forecast_index = pd.date_range(dates[-1] + pd.DateOffset(days=1), periods=10)
forecast_df = pd.DataFrame(forecast, index=forecast_index, columns=data.columns)

# 可视化
plt.figure(figsize=(14, 7))
plt.plot(data.index, data['Variable1'], label='Variable1 (Observed)', color='blue')
plt.plot(data.index, data['Variable2'], label='Variable2 (Observed)', color='green')
plt.plot(forecast_df.index, forecast_df['Variable1'], label='Variable1 (Forecast)', color='orange', linestyle='--')
plt.plot(forecast_df.index, forecast_df['Variable2'], label='Variable2 (Forecast)', color='red', linestyle='--')
plt.title('VAR Model Forecast')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.grid(True)
plt.show()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.

图中展示了两个时间序列变量的观测数据(蓝色和绿色)以及未来 10 天的预测值(橙色和红色虚线)。VAR 模型能有效捕捉两个变量之间的动态关系。