我有关于网站点击量的月度数据,并想建立一个 SARIMA 模型来预测下个月的预期点击量。因为 SARIMA 模型需要处理固定数据,所以我对数据进行了转换并在 Python 中执行了 Augmented Dickey Fuller 测试,以便检测何时可以停止转换并开始将其输入模型(当p 值<0.05)。
由于数据是季节性的,我是否需要将 adfuller() 中的 maxlag 参数设置为 12,为什么/为什么不呢?
我在两个版本中都进行了 adfuller-test:
- 默认最大延迟
- 和 maxlag=12
当然,我收到不同的 p 值结果:
myTimeSeries.plot()
adfuller(myTimeSeries) # p=0.113872
adfuller(myTimeSeries, maxlag=12) # p=0.996884
myLog = numpy.log(myTimeSeries) #log-transfor
myLog.plot()
adfuller(myLog) # p=0.165395
adfuller(myLog, maxlag=12) # p=0.997394
myDiff = myLog.diff(1) #difference with lag 1
myDiff.plot()
myDiff = myDiff.dropna()
adfuller(myDiff) # p=0.003884
adfuller(myDiff, maxlag=12) # p=0.613816
mySeasonalDiff = myDiff.diff(12) #seasonal differencing with lag 12
mySeasonalDiff.plot()
mySeasonalDiff = mySeasonalDiff.dropna()
adfuller(mySeasonalDiff) # p=0.000000
adfuller(mySeasonalDiff, maxlag=12) # p=0.958532
看起来如果我必须设置 maxlag=12,我需要进一步转换我的数据,而如果我可以使用默认的 maxlag,我可以在获取日志和第一个差异后停止。所以我想知道,如何正确使用 ADF-Test。
谢谢你的帮助。