季节性ARIMA模型参数组合生成异常问题求助
修复季节性ARIMA参数组合生成错误
问题场景
处理含趋势和/或季节性成分的时间序列数据集,已划分训练集与测试集并完成性能分析,使用ARIMA模型处理序列相关性时,生成参数矩阵的代码得到不符合预期的参数组合。
原代码如下:
import itertools # 原代码遗漏必要导入 warnings.filterwarnings("ignore") # 指定忽略警告信息 p = d = q = range(0,2) seasonal_period =12 pdq = list (itertools.product(p,d,q)) seasonal_pdq = [(x[0], x[1], x[2], seasonal_period) for x in list (itertools.product(p,d,p))] print ("Example of parameter combination for seasonal Arima model") print ("ARIMA: {} X {} ".format(pdq[1], seasonal_pdq[1])) print ("ARIMA: {} X {} ".format(pdq[2], seasonal_pdq[2])) print ("ARIMA: {} X {} ".format(pdq[2], seasonal_pdq[3])) print ("ARIMA: {} X {} ".format(pdq[2], seasonal_pdq[4]))
错误原因
生成季节性参数seasonal_pdq时,误用了itertools.product(p,d,p)——季节性ARIMA的参数格式为(P,D,Q,s),其中第三个参数Q是季节性移动平均阶数,应对应变量q而非p。原代码中第三个参数用p,导致季节性部分的Q参数始终和P取相同值,不符合参数组合的预期逻辑。
修正后的代码
import itertools import warnings warnings.filterwarnings("ignore") # 指定忽略警告信息 p = d = q = range(0,2) seasonal_period =12 pdq = list(itertools.product(p, d, q)) # 修正:将第三个参数改为q,对应季节性ARIMA的Q阶数 seasonal_pdq = [(x[0], x[1], x[2], seasonal_period) for x in itertools.product(p, d, q)] print("Example of parameter combination for seasonal Arima model") print("ARIMA: {} X {} ".format(pdq[1], seasonal_pdq[1])) print("ARIMA: {} X {} ".format(pdq[2], seasonal_pdq[2])) print("ARIMA: {} X {} ".format(pdq[2], seasonal_pdq[3])) print("ARIMA: {} X {} ".format(pdq[2], seasonal_pdq[4]))
修正后的输出示例
Example of parameter combination for seasonal Arima model ARIMA: (0, 0, 1) X (0, 0, 1, 12) ARIMA: (0, 1, 0) X (0, 1, 0, 12) ARIMA: (0, 1, 0) X (0, 1, 1, 12) ARIMA: (0, 1, 0) X (1, 0, 0, 12)
此时生成的参数组合完全符合ARIMA(p,d,q) X (P,D,Q,s)的规范,每个参数位置的取值均为预期的0或1的全排列组合。
内容的提问来源于stack exchange,提问作者Mukhtar_Dev
相关产品推荐
相关产品推荐

