在 statsmodels 中,对于 SARIMAX 或 ARIMA 模型,我想使用多个额外的外部变量(外生变量)。例如。我想使用滞后 3 的 AR 预测 yield 时间序列,使用滞后 4 的 AR 和天气温度时间序列以及滞后 3 的 AR 的另一个市场价格变量来预测时间 t 的 yield 。这似乎不可能?关于如何做到这一点的任何示例或解释?

最佳答案

首先,您必须将外生输入定义为具有维度 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 外源输入,排序 (p,d,q) 元组和 season_order a (P,D,Q,s) 元组。您应该注意 start_params 列表,我发现在我的案例中,它对于成功构建 sarimax 模型至关重要。

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

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

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

希望能帮助到你。干杯。

关于machine-learning - 如何将多个外生变量输入到 statsmodel 中的 SARIMAX 模型中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44212127/

10-12 21:14