【问题标题】:Getting error while estimating ARIMA models using python (for d>2)使用 python 估计 ARIMA 模型时出错(对于 d>2)
【发布时间】:2020-09-26 10:51:23
【问题描述】:

我正在尝试使用 Python 拟合 ARIMA 模型。它有两列。第一个日期和第二个确认的订单。以下是数据文件中的前几行(2020 年 3 月 14 日至 2020 年 4 月 14 日已确认订单的每日数据):

只要差异数 (d) 为 2 或更少,我的代码就可以正常工作。当 d>2 时,我得到一个错误“ raise ValueError("d > 2 is not supported")。

这是我正在使用的代码:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.arima_model import ARIMA
from pandas.plotting import register_matplotlib_converters
from pandas import read_csv
from pandas import DatetimeIndex
from datetime import datetime
register_matplotlib_converters()

df = pd.read_csv('order.csv',parse_dates = ['date'], index_col = ['date'])
df.info()

#Declare that data are collected on daily basis
df.index.freq = 'd'

#ARIMA
model = ARIMA(df,order=[1,4,1], freq='D')
model_fit = model.fit(disp=0)
print(model_fit.summary())

还附上了错误的屏幕截图以获取详细信息。任何有关解决此问题的帮助将不胜感激。提前致谢。

【问题讨论】:

  • 这意味着编写 ARIMA 代码的人决定不实现 d > 2 的代码。
  • 谢谢@Han-KwangNienhuys。你确定吗?我不认为python的模块会有这么大的差距。
  • raise ValueError("d > 2 ...") 这行是 ARIMA 代码的作者放在那里的。另请注意,statsmodels 不是 Python 的一部分;相反,它是一个用 Python 编写的包。
  • 谢谢你,@Han-KwangNienhuys
  • 您可以使用sm.tsa.SARIMAX 表示 d > 2。但是,d > 2 意味着爆炸性行为,并且很少有时间序列可以这样很好地建模。

标签: python statsmodels arima


【解决方案1】:

也许 d>2 是不允许的,这意味着我们最好的选择是从简单的开始,检查一次积分是否具有平稳性。 如果是这样,我们可以拟合一个简单的 ARIMA 模型并检查残差值的 ACF,以更好地了解要使用的差分顺序。 还有一个缺点,如果我们积分超过两次 (d>2),我们会丢失 n 个观察值,每次积分一个。 ARIMA 建模中最常见的错误之一是“过度差分”序列并最终添加额外的 AR 或 MA 项来撤销预测的损害,因此作者(我假设)决定提出这个例外。

【讨论】:

  • 示例:ADF 统计:-2.464240 p 值:0.124419 0-假设非平稳 0.12 > 0.05 -> 不显着,因此我们不能拒绝 0-假设,因此我们的时间序列是非平稳的并且我们必须对其进行差分以使其静止。对其进行差分的目的是使时间序列平稳。
猜你喜欢
  • 1970-01-01
  • 2020-09-27
  • 2017-02-14
  • 2015-08-15
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多