1

我正在使用 AirPassengers 数据集来预测时间序列。对于我使用的模型,我选择使用 auto_arima 来预测预测值。但是,auto_arima 选择的顺序似乎无法拟合模型。生成相应的图表。

预测的

我该怎么做才能更好地适应?

我的代码给那些想尝试的人:

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

from pmdarima import auto_arima

df = pd.read_csv("https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv")
df = df.rename(columns={"#Passengers":"Passengers"})
df.Month = pd.to_datetime(df.Month)
df.set_index('Month',inplace=True)

train,test=df[:-24],df[-24:]

model = auto_arima(train,trace=True,error_action='ignore', suppress_warnings=True)
model.fit(train)

forecast = model.predict(n_periods=24)
forecast = pd.DataFrame(forecast,index = test.index,columns=['Prediction'])

plt.plot(train, label='Train')
plt.plot(test, label='Valid')
plt.plot(forecast, label='Prediction')
plt.show()

from sklearn.metrics import mean_squared_error
print(mean_squared_error(test['Passengers'],forecast['Prediction']))

感谢您的阅读。任何建议表示赞赏。

4

2 回答 2

0

问题是我没有指定m,在这种情况下,我将m的值指定为12,表示它是一个月循环,每个数据行是一个月。我就是这么理解的。资源

随意评论,我不完全确定,因为我是使用 ARIMA 的新手。

代码:

model = auto_arima(train,m=12,trace=True,error_action='ignore', suppress_warnings=True)

只需加上m=12,表示数据为月度数据。

结果: 我想要的是

于 2020-05-19T04:31:46.263 回答
0

这个系列不是静止的,没有多少微分(注意变化的幅度不断增加)会使它如此。但是,首先通过获取日志来转换数据应该会做得更好(实验表明它确实做得更好,但不是我所说的好)。设置季节性(正如我在 m=12 的评论中建议的那样,并记录日志会产生:在此处输入图像描述这基本上是完美的。

于 2020-05-19T04:37:22.660 回答