如何在statsmodel中将多个外生变量输入SARIMAX模型?

9
在statsmodels中,对于SARIMAX或ARIMA模型,我想使用多个额外的外部变量(外生变量)。例如,我想使用收益时间序列的3期滞后AR和与天气温度时间序列相关的4期滞后AR以及另一个市场价格变量的3期滞后AR来预测时间t的收益。这似乎不可能?是否有任何示例或解释说明如何实现此功能?
1个回答

12

首先,您必须将外生输入定义为一个数组类型结构,其维度为nobsxk,其中nobs是您内生观察值的数量(即假设您拥有一系列时间序列,则为时间序列的长度),k是您额外的外生变量的数量。假设您使用ndarray来实现这个目的,您可以从以下内容开始:

exog = np.empty([nobs, k])

然后,填充用于描述外生变量的值。接下来,按照以下示例定义模型:

model = sm.tsa.SARIMAX(endog=series, exog=exog, order=order, seasonal_order=seasonal_order).fit(start_params=[0, 0, 0, 0, 0, 1])

其中series是您的原始时间序列,exog是外生输入,order是(p,d,q)元组,seasonal_order是(P,D,Q,s)元组。您应该注意到我在这种情况下发现对成功构建sarimax模型至关重要的start_params列表。

当我没有使用任何外生输入时,(p,d,q) = (1,0,0)和(P,D,Q,s) = (1,0,0,37)时,start_params列表为start_params = [0, 0, 0, 1]。

当我添加了3个新的外生输入时,我将start_params列表设置为start_params = [0, 0, 0, 0, 1, 1],如果您注意到,它有2个额外的元素。

我想(我不确定也没有彻底检查),如果您在模型中添加了k个外生输入,则必须在start_params列表中添加k-1个附加元素才能成功构建sarimax模型。

希望这有所帮助。干杯。


1
谢谢!是的,确实很有帮助。我会试试这个! - SriK
请检查 model.params_complete 获取所需参数的数量和名称。 - aless80

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接