在statsmodels中,对于SARIMAX或ARIMA模型,我想使用多个额外的外部变量(外生变量)。例如,我想使用收益时间序列的3期滞后AR和与天气温度时间序列相关的4期滞后AR以及另一个市场价格变量的3期滞后AR来预测时间t的收益。这似乎不可能?是否有任何示例或解释说明如何实现此功能?
首先,您必须将外生输入定义为一个数组类型结构,其维度为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模型。
希望这有所帮助。干杯。