【问题标题】:Forecasting with SARIMAX, unexpected results使用 SARIMAX 进行预测,结果出乎意料
【发布时间】:2022-01-27 12:03:53
【问题描述】:

我正在尝试使用 SARIMAX 模型进行 36 步预测。首先,我通过 sqrt 消除异方差性,并通过线性模型消除趋势。模型的拟合值与系列相似,但是当我尝试预测结果时有点偏离。我不知道我是否搞砸了一些参数或什么。这是我的代码:

#remove heterocedasticity
datos_sqrt=np.sqrt(train)
#remove trend
X = np.array(range(0,len(datos_sqrt)))
X = np.reshape(X, (len(X), 1))
y = datos_sqrt.values
model = LinearRegression()
model.fit(X, datos_sqrt)
trend = model.predict(X)
train_sqrt_trend = datos_sqrt-trend
#fit model
model = SARIMAX(train_sqrt_trend,order = (1, 2, 0),seasonal_order = (2,2,0,12),
                enforce_stationarity=False,
                enforce_invertibility=False)
results = model.fit()
fitted_values = pd.DataFrame(results.fittedvalues)
#forecast
forecast = results.forecast(steps = 36)
fig, ax = plt.subplots(1, 1, figsize=(15, 5))
plt.plot(fitted_values,label='Fitted')
plt.plot(forecast,label='forecast')
plt.legend(loc='best')

【问题讨论】:

    标签: python time-series statsmodels


    【解决方案1】:

    您指定了一个积分模型(并且阶数大于 1),该模型不适合此过程,并且总是会导致预测出现趋势。

    order 参数应该是一个元组(p, d, q),其中p 是自回归顺序,d 是积分顺序,q 是移动平均顺序。也许您打算使用order=(1, 0, 2)

    同样,也许您打算使用seasonal_order=(2, 0, 2, 12)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2021-11-29
      • 2018-01-06
      • 2016-09-03
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      相关资源
      最近更新 更多