5

我正在尝试开始在 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)

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

编辑:我在这里报告了这个问题。

4

1 回答 1

4

例如,它在添加一些噪音后起作用

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

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

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

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

于 2015-01-22T20:31:59.687 回答