Авторегрессионная модель с использованием 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 Я также полагаю, что в этом случае параметры не определены, поэтому хорошего решения может и не быть.
(Неопознанные параметры означают, что несколько комбинаций параметров могут давать абсолютно одинаковое соответствие, но я думаю, что в этом случае все они должны давать одинаковые прогнозы.)