4

我正在尝试使用 ARIMA 模型进行预测。我是新手。我试图绘制我的数据集(每小时数据)的seasonal_decompose(),下面是情节吗?

在此处输入图像描述

我想了解这些情节,简要说明会有所帮助。我看到最初没有趋势,一段时间后有上升趋势。我不确定我说的对不对?我想了解如何正确阅读这些图表。请给一些好的描述。

当我尝试应用 Dickey-Fuller 测试来检查我的数据是否是静止的并且我需要进一步的差异时,我得到了以下结果:

Test Statistic                   -4.117543
p-value                           0.000906
Lags Used                       30.000000
Number of Observations Used    4289.000000
Critical Value (1%)              -3.431876
Critical Value (5%)              -2.862214
Critical Value (10%)             -2.567129

我指的是2个链接来理解这一点: http ://www.seanabu.com/2016/03/22/time-series-seasonal-ARIMA-model-in-python/

这个链接说当检验统计量大于临界值时,这意味着数据是平稳的;另一方面,另一个链接反之亦然。我对此感到困惑,我也提到了 otexts.org,它说我们应该根据 p 值进行检查。请建议我如何解释 ADF 测试给出的结果?

另外,当我尝试在数据集上应用 ARIMA 模型时:

from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(df.y, order=(0,1,0))
model_fit = model.fit()

我的数据框有 datetime 列作为索引,y 列有浮点值。当我在这个数据框上应用模型时。我收到这种错误:

IndexError:列表索引超出范围。

当我尝试使用以下方法打印模型摘要时出现此错误:

print(model_fit.summary())

请帮我解决一下这个。以便我更好地了解 ARIMA。

4

3 回答 3

11

ARIMA(自回归综合移动平均)时间序列的交叉验证: K 折交叉验证不适用于时间序列。相反,请使用回溯测试技术,例如向前走滚动窗口

自回归的 K 折交叉验证:虽然交叉验证(通常)对时间序列 (ARIMA) 模型无效,但只要考虑的模型具有不相关的错误,并且您已经使用Ljung Box Test,用于时间序列用例中的 XAI(可解释人工智能)。

有一些 Python 统计库可以使用这些方法,这里有两个:Python Stats TestsPython StatsModels

要获得值的差异,您可以简单地使用Python 3.6+ PEP 487 Descriptors强制执行 int8 ,您可以在其中强制执行始终返回 int8 的类型列表,以加快计算速度(list : list -> list of ints)

list_a = [1,2,3]
list_b = [2,3]
print(set(list_a).difference(set(list_b)))
`answer is` set([1])
于 2019-01-03T21:02:28.943 回答
0

至于解释 ARIMA 模型,我只能参考你

https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average

关于您打电话时收到的问题model_fit.summary(),我认为这是因为order=(0,1,0)。该模型没有pq参数可以仅估计恒定差异。

如果您运行以下代码,您可以看到恒定差异只是差异值的平均值:

#differences in forecasted values
pd.Series(model_fit.forecast(steps=10)[0]).diff(1)

#results
#0              NaN
#1    107904.396563
#2    107904.396563
#3    107904.396563
#4    107904.396563

#mean of the original time series differenced once
model_fit.model.endog.mean()
#107904.3965625

当您将其更改为order=(0,1,1)order=(1,1,0)摘要将打印得很好时,但这当然是一个不同的模型,并且对随机过程如何随时间演变做出不同的假设。

于 2018-04-30T14:22:10.507 回答
0

在使用 ADf stat 为您的模型生成 ARIMA 模型摘要时,您应该注意 ADF 检验、临界值和 p 值,以帮助您获得洞察力。

当您的临界值小于您的 ADF 统计数据时,您最有可能拥有一个非平稳序列,即您的序列显示出季节性或某种趋势。然后下一个要注意的是你的 p 值;如果它小于值 0.05,那么您的系列无疑是静止的,否则它是季节性的。

至于你的 IndexError ,我觉得这是因为你没有为你的模型提供滞后值,你的模型是基于从你的残差图和 acf 图获得的观察结果工作的。或者您可以尝试使用 (1,0,0) 或 (1,1,0) 的简单模型。希望有帮助!

于 2020-06-20T14:21:34.957 回答