【发布时间】: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