Авторегрессионная модель с использованием statsmodels в Python

Я пытаюсь начать использовать модели AR в statsmodels. Тем не менее, я, кажется, делаю что-то не так. Рассмотрим следующий пример, который не работает:

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)

У меня такое чувство, что это может быть ошибкой, но я не уверен, так как у меня нет опыта использования пакета. Может быть, кто-то с большим опытом может помочь мне...

РЕДАКТИРОВАТЬ: я сообщил о проблеме здесь.

1 ответ

Решение

Это работает после добавления немного шума, например

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

Я предполагаю, что константа не добавлена ​​должным образом из-за идеальной коллинеарности с сигналом.

Вы должны открыть вопрос, чтобы лучше справиться с этим угловым делом. https://github.com/statsmodels/statsmodels/issues Я также полагаю, что в этом случае параметры не определены, поэтому хорошего решения может и не быть.

(Неопознанные параметры означают, что несколько комбинаций параметров могут давать абсолютно одинаковое соответствие, но я думаю, что в этом случае все они должны давать одинаковые прогнозы.)

Другие вопросы по тегам