以美国 GDP 和通货膨胀数据为例:
1. 数据集
下载数据我们需要从 FRED 数据库下载美国 GDP 和通货膨胀数据,并将它们存储在 CSV 文件中。可以在 FRED 网站(https://fred.stlouisfed.org/)搜索并下载需要的数据。在这里,并且将它们命名为 ‘gdp.csv’ 和 ‘inflation.csv’。
网站为:
https://fred.stlouisfed.org/
- 在搜索栏中输入 ‘GDP’ 并按下回车键,在结果列表中选择 ‘Gross Domestic Product’。
- 在搜索栏中输入 ‘CPIAUCSL’ 并按下回车键,在结果列表中选择 ‘Consumer Price Index for All
Urban Consumers: All Items in U.S. City Average’.
注意数据保存为csv格式:
2. 合并数据集
需要使用 pandas 读取这些 CSV 文件并合并它们。以下是示例代码:
import pandas as pd
# 读取 GDP 和通货膨胀数据
gdp = pd.read_csv('./data/gdp.csv', index_col = 'DATE', parse_dates = True)
inflation = pd.read_csv('./data/inflation.csv', index_col = 'DATE', parse_dates = True)
# 合并数据
data = pd.concat([gdp, inflation], axis=1, join='inner')
data.columns = ['GDP', 'Inflation']
在这里,我们使用 pd.read_csv() 方法读取 GDP 和通货膨胀数据。
我们将它们存储在 gdp 和 inflation 变量中,并使用 pd.concat() 方法将它们合并为一个数据框。
我们还使用 join=‘inner’ 参数来确保只包括同一时间段中的数据,并使用 data.columns 属性为列指定新的名称。
3. 模型使用
接下来,需要使用 VAR() 方法创建 VAR 模型对象。以下是示例代码:
from statsmodels.tsa.api import VAR
model = VAR(data)
在这里,我们使用 Statsmodels 库的 VAR() 方法来创建 VAR 模型对象。我们将合并的数据传递给 VAR() 方法。
然后,我们需要使用 fit() 方法拟合 VAR 模型。以下是示例代码:
results = model.fit(maxlags=2, ic='aic')
results.summary()
在这里,我们使用 fit() 方法拟合 VAR 模型,并指定最大滞后阶数为 2。我们还使用 ic=‘aic’ 参数选择 AIC 准则进行模型选择。最后,我们使用 summary() 方法输出模型参数。
4. 预测
最后,我们可以使用 forecast() 方法进行预测,并使用 plot() 方法将预测结果可视化。以下是示例代码:
import matplotlib.pyplot as plt
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
lag_order = results.k_ar
forecast_input = data.values[-lag_order:]
forecast = results.forecast(forecast_input, steps=12*3)
# 将预测结果可视化
forecast_index = pd.date_range(data.index[-1], periods=12*3, freq='M')
forecast_df = pd.DataFrame(forecast, index=forecast_index, columns=['GDP', 'Inflation'])
data.plot(figsize=(12, 6), legend=True)
forecast_df.plot(figsize=(12, 6), legend=True)
plt.xlabel('Time')
plt.ylabel('percent')
plt.show()
在这里,我们使用 forecast() 方法预测未来三年(36个月)的 GDP 和通货膨胀。然后,我们使用 plot() 方法将实际数据和预测结果可视化。