为什么我的时间序列使用seasonal_saverse()可以看到明显的季节性,但当使用adfuller()时,结果显示



我认为,在我的肉眼看来,有一些季节性的时间序列,当我使用adfuller((时,结果显示该序列基于p值是静止的。

我还应用了seasonal_saverse((。结果与我预期的非常接近

tb3['percent'].plot(figsize=(18,8))

这个系列看起来像

需要注意的一点是,我的数据是每分钟收集一次的。

tb3.index.freq = 'T'
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(tb3['percent'].values,freq=24*60, model='additive')
result.plot();

ETS分解的结果如下图所示

ETS分解

我们可以看到明显的季节性,这与我预期的相同

但是当使用adfuller((时

from statsmodels.tsa.stattools import adfuller

result = adfuller(tb3['percent'], autolag='AIC')

p值小于0.05,这意味着这个序列是静止的。有人能告诉我为什么会发生这种事吗?我该怎么修?

因为我想使用SARIMA模型来预测未来的值,而使用ARIMA模型总是预测未来的恒定值。

增强Dickey-Fuller检验检验回归中的系数

y_t - y_{t-1} = <deterministic terms> + c y_{t-1} + <lagged differences>

等于1。它通常不具有对抗季节性确定性项的能力,因此您不拒绝使用adfuller也就不足为奇了。

您可以使用固定的SARIMA模型,例如

SARIMAX(y, order=(p,0,q), seasonal_order=(ps, 0, qs, 24*60))

根据需要设置AR、MA、季节性AR和季节性MA订单。

这个模型将非常缓慢和内存密集,因为你有24小时的微小数据,因此季节性滞后1440。

统计模型的下一个版本已发布为统计模型0.12.0rc0,它增加了对时间序列模型中确定性过程的初始支持,这可能会简化对这类序列的建模。特别地,使用低阶傅立叶确定性序列将是诱人的。下面是一个示例笔记本。

https://www.statsmodels.org/devel/examples/notebooks/generated/deterministics.html

最新更新