
[英]Python Statsmodels: Using SARIMAX with exogenous regressors to get predicted mean and confidence intervals
[英]Manually creating confidence intervals for the mean response using statsmodels SARIMAX
我使用 python 中的 statsmodels 库创建了一个时间序列 SARIMAX model。
目前,我们正在遵循以下管道:
我们的总体目标是每周只训练一次 model。 这意味着我们希望从训练 model 之日起生成超过 1 步的预测。 由于我们将进行每个预测,在收集了前一天的实际数据之后,我们希望使用 SARIMAX 的参数来产生预测。 这一步相当简单,您只需要使用系数并将它们乘以滞后分量的第一级差即可。
但是,我正在努力为我的预测重新创建置信区间,是否有人对 statsmodels 用于创建这些的数学或我应该使用的数学有任何想法?
在此先感谢,詹姆斯
可能最简单的做法是让 Statsmodels 为您计算它们,但使用经过训练的参数和新数据集。 这是一个例子:
首先,训练model(你的第1步)并保存参数,以便以后使用
# 1. Train the model
mod = sm.tsa.SARIMAX(endog_train, order=(p, d, q))
res = mod.fit()
# Save the parameters for use later
res.params.to_csv('trained_params.csv')
然后使用更新的数据集创建一个新的 model,但不是重新训练参数(这将使用fit
方法),而是将旧参数应用于新数据(使用smooth
方法)。
# 2. Use the saved parameters with a new dataset
mod = sm.tsa.SARIMAX(endog_updated, order=(p, d, q))
params = pd.read_csv('trained_params.csv', index_col=[0])['0']
res = mod.smooth(params)
# Produce forecasts and 95% confidence intervals
fcast = res.get_forecast(steps=5, alpha=0.05)
print(fcast.summary_frame())
对于我使用的数据,这将打印:
realgdp mean mean_se mean_ci_lower mean_ci_upper
2009Q4 1.682724 3.717418 -5.603282 8.968729
2010Q1 1.031580 4.360360 -7.514567 9.577728
2010Q2 0.632402 4.578709 -8.341702 9.606506
2010Q3 0.387689 4.658123 -8.742065 9.517443
2010Q4 0.237670 4.687621 -8.949899 9.425239
您可以根据需要多次执行此操作,然后在需要重新训练 model 时,只需将 go 重新训练到上面的 #1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.