-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVAR Model.py
More file actions
48 lines (36 loc) · 1.35 KB
/
VAR Model.py
File metadata and controls
48 lines (36 loc) · 1.35 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import pandas as pd
from statsmodels.tsa.api import VAR
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import rcParams
# 读取数据
file_path = 'VAR模型训练集.xlsx'
df = pd.read_excel(file_path, header=0)
# 提取变量数据,排除第一列的销售日期和第一行的品类编码
data_vars = df.iloc[1:, 1:].reset_index(drop=True) # 去除第一行,并重置索引
# 将数据类型转换为浮点数
data_vars = data_vars.astype(float)
# 设置滞后阶数
lag_order = 6
# 创建 VAR 模型并拟合
model = VAR(data_vars)
fitted_model = model.fit(lag_order)
# 获取模型参数
params = fitted_model.params
# 将模型参数保存为 Excel 文件
params_file_path = 'VAR模型参数.xlsx'
params.to_excel(params_file_path)
rcParams['font.sans-serif'] = ['SimHei'] # 中文字体
rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示成方块的问题
# 绘制热力图
plt.figure(figsize=(12, 8))
sns.heatmap(params, annot=False, cmap='coolwarm', fmt='.2f', linewidths=0.5)
# 添加标题和标签
plt.title('VAR模型参数热力图', fontsize=16)
plt.xlabel('估计量', fontsize=12)
plt.ylabel('参数', fontsize=12)
# 保存热力图为文件
heatmap_file_path = 'VAR模型参数热力图.png'
plt.savefig(heatmap_file_path, dpi=300)
# 显示热力图
plt.show()