为什么我的时间序列用seasonal_decompose()可以看到明显的seasonal,但是用adfuller()时,结果是平稳的

Why my time series use seasonal_decompose() can see clear seasonal, but when apply it with adfuller(), the result shows it is stationary

我肉眼认为存在季节性时间序列,当我使用 adfuller() 时,结果显示该序列基于 p 值是固定的。

我也用它应用了 seasonal_decompose() 。结果跟我预想的差不多

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

what the series look like

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

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 decompose

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

但是当使用 adfuller()

from statsmodels.tsa.stattools import adfuller
 
result = adfuller(tb3['percent'], autolag='AIC')

p 值小于 0.05,这意味着该序列是平稳的。 谁能告诉我为什么会这样?我该如何解决?

因为我想使用SARIMA模型预测未来值,而使用ARIMA模型预测的未来值总是一个常数。

Augmented 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 的季节性滞后,因此该模型将非常缓慢且占用大量内存。

已作为 statsmodels 0.12.0rc0 发布的下一版本的 statsmodels 添加了对时间序列模型中确定性过程的初步支持,这可能会简化此类序列的建模。特别是,使用低阶傅里叶确定性序列会很诱人。下面是一个示例笔记本。

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