如何基于生成参数用SARIMA获最优预测及代码错误排查
SARIMA参数遍历代码错误修复
错误根源
- 未正确调用模型拟合方法:代码中
results = mod.fit仅赋值了fit方法的引用,而非执行拟合操作,导致results是函数对象,没有aic属性,触发AttributeError。 - 缺失季节性参数配置:创建SARIMAX实例时未传入
seasonal_order参数,无法实现你需要的季节性参数组合(如(0,0,1)X(0,0,1,12)这类带周期的结构)。
修正后的完整代码
for param in pdq: for param_seasonal in seasonal_pdq: try: mod = sm.tsa.statespace.SARIMAX( y_to_train, order=param, seasonal_order=param_seasonal, enforce_invertibility=False ) results = mod.fit() # 调用fit方法,添加括号执行拟合 print(f'SARIMA{param}x{param_seasonal} - AIC:{results.aic}') except Exception as ex: print(ex) continue
关键说明
- 修正后代码会遍历所有非季节性(
pdq)与季节性(seasonal_pdq)参数组合,输出每个组合的AIC值,可依据AIC值越小模型拟合效果越优的原则选择最优参数。 - 需保证
pdq为包含(p,d,q)元组的列表,seasonal_pdq为包含(P,D,Q,s)元组的列表(其中s是周期,你的示例中为12)。
内容的提问来源于stack exchange,提问作者Mukhtar_Dev
相关产品推荐
相关产品推荐

