【问题标题】:Autoregressive model using statsmodels in Python在 Python 中使用 statsmodels 的自回归模型
【发布时间】:2015-01-22 17:02:23
【问题描述】:

我正在尝试开始在 statsmodels 中使用 AR 模型。但是,我似乎做错了什么。考虑下面这个失败的例子:

from statsmodels.tsa.ar_model import AR
import numpy as np

signal = np.ones(20)
ar_mod = AR(signal)
ar_res = ar_mod.fit(4)

ar_res.predict(4, 60)

我认为这应该只是继续由一个组成的(微不足道的)时间序列。但是,在这种情况下,它似乎返回的参数不够。 len(ar_res.params) 等于 4,而它应该是 5。在以下示例中它有效:

signal = np.ones(20)
signal[range(0, 20, 2)] = -1
ar_mod = AR(signal)
ar_res = ar_mod.fit(4)

ar_res.predict(4, 60)

我感觉这可能是一个错误,但我不确定,因为我没有使用该软件包的经验。也许有更多经验的人可以帮助我...

编辑:我已经报告了这个问题here

【问题讨论】:

  • 您为预测函数提供的两个参数是什么?

标签: python statsmodels autoregressive-models


【解决方案1】:

比如加一点噪点就可以了

signal = np.ones(20) + 1e-6 * np.random.randn(20)

我的猜测是,由于与信号完全共线性,所以没有正确添加常数。

您应该打开一个问题以更好地处理这种极端情况。 https://github.com/statsmodels/statsmodels/issues 我的猜测也是这种情况下没有识别参数,所以可能没有什么好的解决方案。

(未识别的参数意味着几个参数组合可以产生完全相同的拟合,但我认为在这种情况下它们都应该产生相同的预测。)

【讨论】:

  • 感谢您的回答...我将打开一个问题。有趣的是,这不仅发生在信号只包含 1 的情况下。我开始将向量开头的那些更改为零。事实证明,只要零的数量超过三个,拟合就会开始工作。奇怪的行为......让我们看看专家怎么说。
猜你喜欢
  • 1970-01-01
  • 2014-12-22
  • 2022-07-15
  • 2017-08-17
  • 2016-09-07
  • 1970-01-01
  • 2013-05-15
  • 2015-11-05
  • 2016-05-05
相关资源
最近更新 更多