带有外生变量的 SARIMAX 滚动窗口
Posted
技术标签:
【中文标题】带有外生变量的 SARIMAX 滚动窗口【英文标题】:SARIMAX Rolling Window with exogen Variables 【发布时间】:2022-01-18 04:06:03 【问题描述】:目前我正在尝试使用外部变量在 python 中构建 SARIMAX 模型。 不幸的是,我收到此错误:“无法使用灵活类型执行减少”
# Function for Rolling Forecast with Sarima
def rolling_forecast(traindata,test_data, Modell_order = None , Sarima_order = None, eliminate_0 = True, exogen= None, exogen_test=None):
history = [x for x in traindata]
history_exogen = [x for x in exogen]
predictions = list()
for t in range(len(test_data)):
Sarima_Modell_same = SARIMAX(history,order = Modell_order ,seasonal_order= Sarima_order, exog=history_exogen)
model_fit = Sarima_Modell_same.fit()
output = model_fit.forecast(steps = 1,exog=history_exogen)
yhat = output[0]
obs = test_data[t]
obs_ex = exogen_test[t]
predictions.append(yhat)
history.append(obs)
history_exogen.append(obs_ex)
#print('predicted=%f, expected=%f' % (yhat, obs))
series_predicted = pd.Series(predictions, dtype='float64')
series_predicted.index = test_data.index
if eliminate_0 is True:
# Eliminate 0 values --> (for differenced Time Series not applyable because of negativ values)
series_predicted = series_predicted.apply(lambda x : x if x > 0 else 0)
test_data.plot()
series_predicted.plot(color = 'red')
else:
test_data.plot()
series_predicted.plot(color = 'red')
#print(sqrt(mean_squared_error(test_data, series_predicted)))
Is there any way to do this?
【问题讨论】:
欢迎来到 Stack Overflow。这可能是您练习调试技能的好时机。以下三个参考资料为调试代码提供了极好的建议。 How to debug small programs、Six Debugging Techniques for Python Programmers 或 Ultimate Guide to Python Debugging 我已经使用 SARIMA 实现了单变量预测,但使用 SARIMAX 模型我不知道如何修复它。 【参考方案1】:关于多变量部分的更多信息。如果没有 exogen 变量,它可以工作,但如果我尝试包含它,则会出现错误。 将不胜感激。
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于带有外生变量的 SARIMAX 滚动窗口的主要内容,如果未能解决你的问题,请参考以下文章