statsmodels 笔记:自回归模型 AutoReg
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了statsmodels 笔记:自回归模型 AutoReg相关的知识,希望对你有一定的参考价值。
1 基本用法
class statsmodels.tsa.ar_model.AutoReg(
endog,
lags,
trend='c',
seasonal=False,
exog=None,
hold_back=None,
period=None,
missing='none',
*,
deterministic=None
)
2 参数说明
endog | 一维序列,需要自回归的因变量 |
lags | 包含一个整数或滞后指数列表。 例如,[1,4]只包含滞后1和4,而4则包含滞后1、2、3和4。 None排除所有AR滞后,且行为一致为0。 |
3 举例说明
3.1 训练模型
import pandas as pd
import numpy as np
from statsmodels.tsa.ar_model import AutoReg
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error as MSE
df = pd.read_csv('https://raw.githubusercontent.com/jbrownlee/Datasets/master/daily-min-temperatures.csv',
index_col=0, parse_dates=True)
x = df.values
lag=[1,3,7]
#滞后集,表示当前时刻的时序信号会受到多少过去时刻时序信号的影响。
train, test = x[:-max(lag)], x[-max(lag):]
# 把模型数据分为train和test,分别用来训练模型和对比模型预测结果
model_fit = AutoReg(
train,
lag,
old_names=False).fit()
#训练模型
print(model_fit.params)
#[1.3344155 0.61595801 0.10489587 0.15938696]
'''
从前往后分别是:
偏差,
一个时间片之前数据的影响,
3个时间片之前数据的影响,
7个时间片之前数据的影响
(和lag顺序一致)
'''
3.2 测试模型
history = train[-max(lag):]
history = np.hstack(history).tolist()
print(history)
#[17.2, 14.7, 15.4, 13.1, 13.2, 13.9, 10.0]
test = np.hstack(test).tolist()
print(test)
#test = np.hstack(test).tolist()
#[12.9, 14.6, 14.0, 13.6, 13.5, 15.7, 13.0]
redictions = []
for t in range(len(test)):
#逐时间片地预测
late = history[-max(lag):]
#本轮时间片所能看到的过去的时序信号
yhat = params[0]
#params[0]是偏移量
for i in range(len(lag)):
yhat += params[i+1] * late[max(lag)-lag[i]]
#参数乘以对应的过去时序信号
predictions.append(yhat)
obs = test[t]
history.append(obs)
#当前的test信号也作为我们已经看过的过去信号
print(np.mean((np.array(test) - np.array(predictions))**2))
#1.5267307279954954
# 得到mean_squared_error, MSE
plt.plot(test)
plt.plot(predictions, color='r')
plt.show()
以上是关于statsmodels 笔记:自回归模型 AutoReg的主要内容,如果未能解决你的问题,请参考以下文章
时间序列分析ARMA模型原理及Python statsmodels实践(上)
时间序列分析ARMA模型原理及Python statsmodels实践(上)
时间序列分析ARMA模型原理及Python statsmodels实践(上)