我正在尝试构建 SARIMA(季节性自回归综合移动平均线)模型,用于根据五年的数据预测 PM10 浓度。但是,当我将季节性参数 m 设置为 365 时,我的代码似乎无法运行。
有人可以解释一下为什么我的代码没有以 m=365 运行并提出一个潜在的解决方案吗?
提前致谢!
# Here's a snippet of my code:
## Split the dataset into train and test sets
`train_size = int(len(Alipur_df) * 0.8) # 80% train, 20% test`
`train, test = Alipur_df[:train_size], Alipur_df[train_size:]`
## Convert train DataFrame to a numpy array
`train_values = train['Alipur'].values`
`test_values = test['Alipur'].values`
## Use auto_arima to find the best parameters for SARIMA
`auto_model = auto_arima(train['Alipur'], seasonal=True, stationary=True, m= 365, trac
SARIMA(和指数平滑)具有众所周知的“长”季节性问题,如 Rob Hyndman 的博客post中所述:
[...]非常高阶的季节性差异没有多大意义 - 对于每日数据,它涉及将今天发生的情况与一年前发生的情况进行比较,并且不存在季节性模式平滑的限制。
处理“长”季节性的普遍接受的方法是使用具有 ARIMA 误差的傅立叶项回归,或使用专门的状态空间模型,如 BATS/TBATS - 请参阅上面链接的博客文章。
根据 Rob Hyndman 的博客文章 “长季节周期预测”,长季节周期的季节性 ARIMA(p,d,q)(P,D,Q) 模型很难估计:
函数允许季节性周期高达$m=350$,但实际上,只要季节性周期超过约$200$,通常就会耗尽内存。arima()
这可能是您的代码无法运行的原因。
与Stephan Kolassa的答案相反,我的理解是这与季节差分的顺序$D$无关,因为问题不仅存在于$D>1$,而且当时也存在$D=0$。同时,季节周期较短且 $D>1$ 的季节性 ARIMA 模型不受此问题的影响。因此,我认为对季节性差异的关注是转移注意力的。
关于推荐的替代方案,我同意 Stephan Kolassa 的回答中建议的方案。