[英]ARIMA modeling on time-series dataframe python
我正在尝试使用 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/
这个链接说当 test-statistic 大于临界值时,这意味着数据是平稳的; 另一方面,另一个链接说反之亦然。 我对此感到困惑,我还提到了 otexts.org,它说我们应该根据 p 值进行检查。 请建议我如何解释 ADF 测试给出的结果?
此外,当我尝试在数据集上应用 ARIMA 模型时:
from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(df.y, order=(0,1,0))
model_fit = model.fit()
我的数据框将日期时间列作为索引,而 y 列具有浮点值。 当我在这个数据框上应用模型时。 我收到此类错误:
索引错误:列表索引超出范围。
当我尝试使用以下方法打印模型摘要时,会出现此错误:
print(model_fit.summary())
请帮我解决一下这个。 这样我才能更好地了解ARIMA。
ARIMA(自回归综合移动平均)时间序列的交叉验证: K 折交叉验证不适用于时间序列。 相反,使用回测技术,如前行和滚动窗口。
自回归的 K 折交叉验证:虽然交叉验证(通常)对时间序列 (ARIMA) 模型无效,但 K 折适用于自回归,只要所考虑的模型存在不相关的错误,并且您已经使用Ljung Box Test ,用于时间序列用例中的 XAI(可解释人工智能)。
有一些 Python 统计库可以使用这些方法,这里有两个: Python Stats Tests和Python 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])
至于解释 ARIMA 模型,我只能参考你
https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average
关于您在调用model_fit.summary()
时收到的问题,我认为这是因为order=(0,1,0)
。 模型没有p
或q
参数来仅估计常数差异。
如果您运行以下代码,您可以看到常数差异只是差异值的平均值:
#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)
,摘要将打印得很好,但这当然是一个不同的模型,并且对随机过程如何演变做出不同的假设时间。
当使用 ADf stat 为您的模型生成 ARIMA 模型摘要时,您应该注意 ADF 检验、临界值和 p 值以帮助您获得洞察力。
当您的临界值小于您的 ADF 统计数据时,您最有可能拥有非平稳系列,即您的系列显示季节性或某种趋势。 然后接下来要注意的是您的 p 值; 如果它小于值 0.05,那么您的系列无疑是平稳的,否则它是季节性的。
至于你的 IndexError ,我觉得这是因为你没有为你的模型提供滞后值,你的模型基于从残差图和 acf 图中获得的观察结果。 或者您可以尝试使用 (1,0,0) 或 (1,1,0) 的简单模型。 希望有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.