【问题标题】:How do I input multiple exogenous variables into a SARIMAX model in statsmodel?如何在 statsmodel 中将多个外生变量输入到 SARIMAX 模型中?
【发布时间】:2017-10-27 23:17:36
【问题描述】:

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

【问题讨论】:

    标签: machine-learning time-series


    【解决方案1】:

    首先,您必须将外生输入定义为具有维度 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 模型。

    希望对您有所帮助。干杯。

    【讨论】:

    • 谢谢!是的,确实很有帮助。会试试这个!
    • 对于需要的参数数量及其名称检查model.params_complete
    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2021-09-20
    • 2022-01-12
    相关资源
    最近更新 更多