Авторегрессия — это модель временных рядов, которая использует наблюдения из предыдущих временных шагов в качестве входных данных для уравнения регрессии, чтобы предсказать значение на следующем временном шаге.
Мы начинаем с той же модели, что и в предыдущем учебнике.
import pandas as pdfrom neuralprophet import NeuralProphet, set_log_level# Отключение сообщений журнала, кроме случаев ошибокset_log_level("ERROR")# Загрузка набора данных из CSV-файла с помощью pandasdf = pd.read_csv("https://github.com/ourownstory/neuralprophet-data/raw/main/kaggle-energy/datasets/tutorial01.csv")# Модель и прогнозированиеm =NeuralProphet( n_changepoints=10, yearly_seasonality=True, weekly_seasonality=True, daily_seasonality=True,)m.set_plotting_backend("plotly-static")metrics = m.fit(df)forecast = m.predict(df)m.plot(forecast)
Чтобы лучше понять, в чем заключается оставшееся несоответствие между нашей моделью и реальными данными, мы можем посмотреть на остатки. Остатки представляют собой разницу между прогнозом модели и реальными данными. Если модель идеальна, остатки должны быть равны нулю.
Давайте изучим, какое значение авторегрессии будет хорошим. Создайте график автокорреляции.
from statsmodels.graphics.tsaplots import plot_acfplt =plot_acf(df_residuals["residuals"], lags=50)
Теперь мы добавляем авторегрессию в нашу модель с параметром n_lags
# Модель и прогнозированиеm =NeuralProphet(# Отключение точек изменения тренда n_changepoints=10,# Отключение компонентов сезонности yearly_seasonality=True, weekly_seasonality=True, daily_seasonality=True,# Добавление авторегрессии n_lags=10,)m.set_plotting_backend("matplotlib")# Использование matplotlib из-за #1235metrics = m.fit(df)forecast = m.predict(df)m.plot(forecast)
Как мы видим, модель прогнозирования с авторегрессией значительно лучше подходит к данным, чем базовая модель. Не стесняйтесь исследовать, как различное количество лагов n_lags влияет на модель.