【问题标题】:Get better fit on test data using Auto_Arima使用 Auto_Arima 更好地拟合测试数据
【发布时间】:2020-05-19 04:12:30
【问题描述】:

我正在使用 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']))

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

【问题讨论】:

  • 您是否尝试过明确设置季节性参数D(这里大概是12)?
  • @IgorRivin 在你提到之后我做了。看起来仍然没有任何变化。但是,我明确指出 m 为 12,并且有很大的改进。
  • @IgorRivin 我已经回答了我自己的问题,但还有办法更好地适应它吗?

标签: python arima pmdarima


【解决方案1】:

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

【讨论】:

  • auto_arima 不考虑非平稳性并自动为其找到最佳值吗?来源:analyticsvidhya.com/blog/2018/08/…
  • 不,它只能使 SARIMA 模型适合您提供的数据。它不会首先转换数据。如果某些差异数据是固定的,它将成功,但对于此数据,没有多少差异(或季节性)会使它成为固定的。
  • 是的,我试过了。感谢您抽出宝贵时间@Igor Rivin
  • @cswannabe 欢迎您。我不得不说这个 auto_arima 有点令人失望(你必须手动设置季节性参数并且需要很长时间都不是很好)。
【解决方案2】:

问题是我没有指定m,在这个例子中,我将m的值赋值为12,表示它是一个月循环,每个数据行是一个月。我就是这么理解的。 source

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

代码:

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

只要加上m=12,表示数据是月度的。

结果:

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 2013-03-07
    • 2019-04-12
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 2017-06-20
    相关资源
    最近更新 更多