【发布时间】:2017-10-27 23:17:36
【问题描述】:
在 statsmodels 中,对于 SARIMAX 或 ARIMA 模型,我想使用多个额外的外部变量(外生变量)。例如。我想使用滞后 3 的 AR 预测产量时间序列和滞后 4 的 AR 与天气温度时间序列和另一个市场价格变量的滞后 3 的 AR 来预测时间 t 的产量。这似乎不可能?关于如何做到这一点的任何示例或解释?
【问题讨论】:
标签: machine-learning time-series
在 statsmodels 中,对于 SARIMAX 或 ARIMA 模型,我想使用多个额外的外部变量(外生变量)。例如。我想使用滞后 3 的 AR 预测产量时间序列和滞后 4 的 AR 与天气温度时间序列和另一个市场价格变量的滞后 3 的 AR 来预测时间 t 的产量。这似乎不可能?关于如何做到这一点的任何示例或解释?
【问题讨论】:
标签: machine-learning time-series
首先,您必须将外生输入定义为具有维度 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) 元组。您应该注意 start_params 列表,我认为这对于在我的案例中成功构建 sarimax 模型至关重要。
当我没有使用任何外生输入时,start_params 列表是 start_params = [0, 0, 0, 1] for (p,d,q) = (1,0,0) 和 (P,D,Q,s) = (1,0,0,37)。
当我添加 3 个新的外部输入时,我将 start_params 列表设置为 start_params = [0, 0, 0, 0, 1, 1],如果您注意到它还有 2 个附加元素。 p>
我想(我不确定也没有彻底检查过)如果你在你的模型中添加 k 个外生输入,你必须添加 k - 1 个额外的元素在您的 start_params 列表中,以便成功构建 sarimax 模型。
希望对您有所帮助。干杯。
【讨论】: