2015-05-26 7 views
0

Извинения, если это простой вопрос/ошибка, но когда я пытаюсь предсказать временные ряды, используя statsmodels.tsa AR, предсказания разворачиваются очень быстро мимо данных, которые у меня есть. Это не зависит от порядка модели или длины данных, используемых для соответствия модели AR.Авторегрессионная модель предсказания распадается на плоскую линию

Что я делаю неправильно?

from statsmodels.tsa.ar_model import AR 
section1 = data[0:800]-np.mean(data[0:800]) 
plt.plot(section1) 

enter image description here

x = AR(section1) 
y = x.fit(5) 
z = y.predict(10,1500) 
plt.plot(z) 

enter image description here

+0

Знаете ли вы, как модель регрессии пытается подогнать ваши данные? Данные в вашем прогнозе из диапазона 0-800 выглядят так, как будто они взяты прямо из вашего учебного набора. –

+0

Да, я думаю, что первый 800 - это тренировочный набор - В док-строке Ar fit() «Возвращается в пробах и вне выборки». Я хотел, чтобы выборка продолжалась до 800 и не сходилась к среднему значению, – Jonathan

ответ

3

Там нет ничего плохого. Это поведение стационарного процесса ARMA, где прогнозы сходятся к среднему.

Если у вас есть фиксированная сезонность, вы можете разделить временные ряды на сезонную задержку, то есть использовать SARIMA, и предсказание будет сходиться к фиксированной сезонной структуре.

Если у вас есть объясняющие переменные, то предсказание стационарного ARMAX будет сходиться к среднему значению, определяемому переменными X.

+0

Ладно, спасибо. Так что, возможно, я использую AR-модель с неправильной идеей? Я считал, что подходит 2 модели к 2 различным временным рядам и получаю набор коэффициентов AR для каждой модели. Затем я хотел бы взять третий временный ряд и вычислить вероятность того, что данные в нем будут генерироваться каждым из двух наборов коэффициентов AR. Затем я мог бы классифицировать третий временной ряд как более «похожий» на первую или вторую модель, основанную на вероятности. Однако, как тест «глазного яблока», я хотел иметь возможность генерировать «поддельные» данные из каждой модели AR, чтобы увидеть, как они выбирают временные ряды, которые я выбирал. – Jonathan

+0

Прошу прощения, я не совсем понял, что вы отвечаете. - следовательно, окольный ответ, содержащий то, что я хочу. – Jonathan

+0

Если вы хотите имитировать данные из процесса ARMA, вам нужен шум или удары, чтобы «отскочить» по временному ряду. Для этого есть функция generate_arma_sample в statsmodels.tsa. – user333700