python之多元时间序列ARIMAX

其中,coef列显示每个特征的重量(即重要性)以及每个特征如何影响时间序列。 P>|z| 列通知我们每个特征重量的意义。 这里,每个重量的p值都低于或接近0.05 ,所以在我们的模型中保留所有权重是合理的。 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

import statsmodels.api as sm
from pylab import mpl

# 画图中文
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

data_df = pd.read_excel("先行期数划分.xlsx", encoding="ANSI", sheet_name="电量")

data_df.columns = ["时间", "电量"]

# 先行期即变量
data_df["变量"] = data_df["电量"]-10000
data_df.head()

data_df.index=data_df["时间"]

data_df[["电量"]].plot()

# 训练集、测试集
train_df = data_df.iloc[:-5,:]
test_df = data_df.iloc[-5:,:]

# 训练
modle = sm.tsa.statespace.SARIMAX(train_df["电量"], exog=train_df["变量"]).fit(disp=-1)
modle.summary()

# 预测5个月
modle.forecast(steps=5, exog=test_df[["变量"]])

Python实现多元时间序列模型主要依赖于以下几个库: 1. pandas:用于处理时间序列数据的常用库,提供了处理时间序列数据的各种工具和函数。 2. statsmodels:用于统计建模和时间序列分析的库,提供了各种统计模型的实现。 3. numpy:用于数值计算的库,提供了各种数值计算函数和工具。 4. matplotlib:用于绘图的库,提供了各种绘图函数和工具。 下面以ARIMA模型为例介绍如何使用Python实现多元时间序列模型。 1. 数据准备 首先需要准备好需要分析的时间序列数据,数据需要满足以下要求: 1. 数据为时间序列数据,即按照时间顺序排列的数据。 2. 数据需要是稳定的,即均值和方差不随时间变化。 3. 数据需要是平稳的,即时间序列数据的自相关系数和偏自相关系数不随时间变化。 2. 模型建立 建立ARIMA模型需要进行以下几个步骤: 1. 确定模型的阶数,包括AR、MA和差分阶数。 2. 使用数据拟合模型,得到模型的参数。 3. 使用模型预测未来的时间序列数据。 下面以ARIMA(1,1,1)模型为例介绍如何建立模型。 ```python import pandas as pd import numpy as np from statsmodels.tsa.arima_model import ARIMA import matplotlib.pyplot as plt # 读取数据 data = pd.read_csv('data.csv') # 拆分训练集和测试集 train_data = data[:100] test_data = data[100:] # 建立模型 model = ARIMA(train_data, order=(1,1,1)) result = model.fit(disp=-1) # 预测未来数据 forecast = result.forecast(len(test_data)) # 绘制预测结果图 plt.plot(test_data, label='actual') plt.plot(forecast[0], label='forecast') plt.legend() plt.show() ``` 3. 模型评估 建立模型后需要对模型进行评估,以确定模型的准确性和可靠性。常用的评估指标包括平均绝对误差(MAE)、均方根误差(RMSE)和平均绝对百分比误差(MAPE)等。 下面以MAE为例介绍如何评估模型。 ```python from sklearn.metrics import mean_absolute_error # 计算MAE mae = mean_absolute_error(test_data, forecast[0]) print('MAE:', mae) ``` 以上就是使用Python实现多元时间序列模型的基本流程,需要注意的是,不同的时间序列模型需要使用不同的库和函数来实现,具体实现方法需要根据具体的模型来确定。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值