Автокорреляция (Autocorrelation) - Лена Капаца
Автокорреляция (Autocorrelation) by Лена Капаца Oct. 24, 2021 Основы

Автокорреляция (последовательная корреляция) – сила взаимосвязи Наблюдений (Observation) во Временном ряду (Time Series). Коррелограммы – графики автокорреляции и частичной автокорреляции, широко используются при анализе и прогнозировании временных рядов.

Пример. Используем Датасет (Dataset) минимальных суточных температур за 10 лет (1981–1990) в г. Мельбурн, Австралия. Единицы измерения – градусы Цельсия, всего 3650 наблюдений. Для начала импортируем необходимые библиотеки:

from google.colab import auth, files
import gspread
from oauth2client.client import GoogleCredentials

import pandas as pd
from pandas import read_csv

from matplotlib import pyplot
from pandas import read_csv
from statsmodels.graphics.tsaplots import plot_acf
from statsmodels.graphics.tsaplots import plot_pacf

Получим токен Google Cloud SDK, чтобы использовать Google-таблицу:

auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())

Загрузим набор данных:

weather = gc.open_by_url('https://docs.google.com/spreadsheets/d/1f4_ZvnFOhDnAS8gipVfZ0IPFfLMQwf_pDUPSYh-54MI/edit#gid=0')
sheet = weather.sheet1
df = pd.DataFrame(sheet.get_all_records())
df.head()

Визуализируем данные, чтобы увидеть сезонные колебания:

df.plot()
pyplot.show()
График набора данных минимальных суточных температур

Температуры в данном случае – серия Pandas, и создается линейный график временного ряда.

Корреляция и автокорреляция

Статистическая корреляция отображает силу взаимосвязи между двумя переменными.

Мы можем предположить, что распределение каждой переменной соответствует распределению Гаусса (кривая колокола). В этом случае мы можем использовать Коэффициент корреляции Пирсона (Pearson Correlation Coefficient), чтобы суммировать корреляцию между переменными.

Коэффициент корреляции Пирсона – это число от -1 до 1, которое описывает отрицательную или положительную корреляцию соответственно. Нулевое значение указывает на отсутствие корреляции.

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

График автокорреляции временного ряда (AutoCorrelation Function – ACF) иногда называют коррелограммой. Давайте построим такой с помощью функции plot_acf() библиотеки statsmodels:

plot_acf(df['Temp'])
pyplot.show()
Коррелограмма датасета минимальных суточных температур

При исполнении кода ячейки создается двухмерный график, демонстрирующий корреляцию между двумя временными рядами – исходным и сдвинутым на один день назад. Мы ограничили количество значений по оси x до 35, чтобы улучшить читаемость графика.

Поскольку температурная разница между 1 и 2-м июля, очевидно, небольшая, то и корреляция будет стремиться к единице (второй столбец графика слева). Но когда мы исследуем разницу температур между 1 июля и 4 августа (35 дней разницы – крайний столбец слева), коэффициент корреляции очевидно будет меньше.

Если вы хотите ознакомиться с пошаговой последовательностью построения графика автокорреляции, посмотрите обучающее видео от Brandon Rohrer.

Пошаговая процедура построения коррелограммы

Доверительные интервалы изображены в виде полупрозрачного голубого конуса. По умолчанию установлен доверительный интервал 95%. Если голубая точка каждого из 35 коэффициентов лежит за пределами этой фигуры, то является статистически значимой единицей.

Частичная автокорреляция

Частичная автокорреляция (Partial Autocorrelation – PACF) – это сводка отношений между наблюдением во временном ряду с наблюдениями на предыдущих временных шагах с удаленными взаимосвязями промежуточных наблюдений. Частичная автокорреляция при лаге k возникает после устранения влияния любых корреляций с более короткими лагами.

Автокорреляция для наблюдения и наблюдения на предыдущем временном шаге состоит как из прямой корреляции, так и из косвенной корреляции. Эти косвенные корреляции являются линейной функцией корреляция наблюдения с наблюдениями на промежуточных временных шагах.

Именно эти косвенные корреляции пытается устранить функция частичной автокорреляции. Построим такой график для нашего температурного датасета:

plot_pacf(df['Temp'], lags=50)
pyplot.show()

При выполнении примера создается двухмерный график частичной автокорреляции для первых 50 лагов:

График частичной автокорреляции датасета минимальных суточных температур

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

Автор оригинальной статьи: Jason Brownlee

© Лена Капаца. Все права защищены.