Автокорреляция (последовательная корреляция) – сила взаимосвязи Наблюдений (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
© Лена Капаца. Все права защищены.