Я рекомендую установить эти 3 пакета, прежде чем мы начнем:
1.1 Что такое временной ряд?
Давайте посмотрим на пример временных рядов с использованием реальных данных. В этом наборе данных представлены средние аномалии глобальной температуры в градусах Цельсия в месяц с января 1950 года по декабрь 2016 года.
Посмотрим, как выглядят эти данные.
## Mean
## 1 -0.30
## 2 -0.26
## 3 -0.06
## 4 -0.21
## 5 -0.12
Мы должны преобразовать данные в объект временного ряда. Теперь мы знаем, что это данные за месяц и что они начались в январе 1950 года и закончились в декабре 2016 года. Поэтому мы должны преобразовать их в объект временного ряда, используя функцию ts() в R. Она принимает следующие аргументы.
- start = время начала временного ряда;
- end = время окончания временного ряда;
- frequency = количество наблюдений в единицу времени.
- Для ежемесячных данных частота будет 12.
- Для квартальных данных частота будет 4.
- Для двухгодичных данных частота будет 2.
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1950 -0.30 -0.26 -0.06 -0.21 -0.12 -0.06 -0.09 -0.18 -0.10 -0.20 -0.35 -0.20
## 1951 -0.35 -0.44 -0.19 -0.10 -0.02 -0.05 0.00 0.05 0.07 0.06 0.00 0.15
## 1952 0.16 0.12 -0.10 0.02 -0.05 -0.04 0.05 0.07 0.08 -0.04 -0.17 -0.02
Как мы видим, данные теперь представляют собой объект временного ряда с 804 наблюдениями, где каждое наблюдение представляет месяц с 1950 по 2016 год.
Как бы этот объект выглядел на графике?
Существует несколько способов построения графиков временных рядов в R, в том числе с помощью базовой функции R plot(); однако мы будем использовать функцию autoplot() из пакета forecast.
autoplot(temp.ts, colour = "dodgerblue4") +
ggtitle("Average Global Temperature Anomalies Per Month 1950-2016") +
ylab("Average Temperature Difference (Celsius)") +
theme_classic()
Что мы можем увидеть на этом графике?
Что ж, первое, что вы можете заметить, это то, что средняя мировая температура резко выросла примерно с 1970 года! Она также постепенно увеличивалась с 1950 по 1970 год. Она также сильно колеблется на всем отрезке времени. Можно сделать вывод, что за последние 66 лет температура повысилась! Но как вы можете определить изменившееся событие в этом временном ряду? Что значит быстрое блуждание? Что вы называете восходящим движением?
1.2 Компоненты временных рядов
Из чего состоит временной ряд?
Не вдаваясь в излишние обозначения, простая аддитивная декомпозированная модель будет выглядеть так:
xt = mt + st + et
где:
mt - трендовая составляющая;
st - сезонная составляющая;
et - ошибка или случайный белый шум.
Проще говоря, компоненты модели временных рядов определяются как:
- тренд - возрастающие или убывающие значения в ряду;
- сезонность - повторяющиеся кратковременные циклы в ряду;
- случайный белый шум - случайные изменения в ряду.
Чтобы визуализировать их в R, вы можете использовать базовую функцию R, decopose(), чтобы построить графики для всех трех этих компонентов. Однако я решил создавать свои собственные графики с помощью ggplot2.
Тренд
Как выглядит график тренда для этого временного ряда глобальной температуры?
Как видим, наблюдается сильный восходящий тренд. Это означает, что с 1950 года температура постепенно повышается! Что, если линия тренда идет вниз? Тогда вы сделаете вывод, что температура снижается. Что, если он останется постоянным? Тогда можно сделать вывод, что тренда нет!
Сезонность
Как выглядит график сезонной составляющей для этого временного ряда глобальной температуры?
На графике сезонности вы ищете общую краткосрочную закономерность. Сезонность может быть вызвана многими вещами в зависимости от набора данных. Трудно сказать, присутствует ли сезонность в этом временном ряду из-за быстрых колебаний. Обычно сезонность более очевидна. Пример сезонности - продажи авиакомпаний. Многие часто летают летом и зимой на отдых. Таким образом, в этом конкретном временном ряду каждые 6 месяцев будут наблюдаться высокие всплески.
Случайный белый шум
Как выглядит график случайного белого шума для этого временного ряда глобальной температуры?
Выглядит довольно случайно, правда? Потому что это так! Этот график иллюстрирует изменение временного ряда. Это необъяснимая вариация, которая получается исключительно случайно. Этот термин аналогичен термину ошибки в регрессионной модели.
1.3 Стационарность
Стационарность - одна из важнейших характеристик временного ряда. Что означает стационарность временного ряда? Она определяется наличием постоянного среднего и дисперсии по временному ряду. Временные ряды должны быть стационарными, чтобы делать на их базе хорошие прогнозы. Мы можем проверить, является ли временной ряд стационарным, посмотрев на функцию автокорреляции (ACF). Что такое автокорреляция? Автокорреляция в основном измеряет корреляцию между наблюдениями как функцию временного интервала между ними.
Давайте посмотрим на график ACF временного ряда глобальной температуры, используя функцию acf() в R.
Что это значит?
Если бы ряд был стационарным, мы бы увидели практически каждую линию в пределах синих доверительных интервалов. Однако мы видим, что все всплески выходят за эти рамки. Этот медленный спад означает, что во временном ряду есть тренд, но нет сезонности!
Вот несколько распространенных графиков ACF, которые вы можете увидеть:
- Тренд и сезонность - требует длительного времени спада и также похож на график синуса.
- Тренд, но без сезонности - затухает очень медленно, и всплески выходят за пределы синих доверительных интервалов.
- Сезонность, но нет тренда - быстро затухает и выглядит как график синуса.
- Стационарность - все линии в пределах синих доверительных интервалов, кроме первого всплеска.
Если временной ряд имеет тренд или сезонность, то он не является стационарным. Значит, для прогнозирования он не годится. Что мы можем сделать, чтобы это исправить? Мы можем создавать новые модели для представления временных рядов и делать их стационарными. Мы рассмотрим это в следующей главе.
Оригинал: Time Series for Beginners
Комментариев нет:
Отправить комментарий