На этой странице

Понятия временных рядов

Бывают данные, которые представляют собой не выборку отдельных случаев, а многократные измерения одного и того же объекта: дневная выручка магазина, давление пациента на каждом приёме, месячный уровень безработицы в стране. Строки здесь упорядочены, и сам порядок содержит информацию: этот месяц похож на прошлый, а декабрь — на прошлогодний декабрь. Обычная статистика, считая строки независимыми, как раз это и отбрасывает. Ниже разобраны идеи, на которых построен модуль анализа временных рядов, в том порядке, в каком они встречаются в нём. Сначала — что такое ряд и его лаги, чем тренд отличается от сезонности и что такое сезонный период, какой ряд называют стационарным и как получить его дифференцированием, что делать, если размах колебаний растёт вместе с уровнем, и что считать выбросом, когда важны соседние значения. Затем — идеи, на которых держатся методы анализа: как читать графики АКФ и ЧАКФ, что такое декомпозиция и силы её компонент, почему у критериев стационарности противоположные нулевые гипотезы, как работают скользящее среднее и экспоненциальное сглаживание, как записывается модель ARIMA, как корректно измерить точность прогноза, что показывает периодограмма и что такое структурный разрыв. Модуль просит указать переменную времени (столбец, задающий порядок строк), один или несколько рядов для анализа и, если нужно, группирующую переменную, которая делит строки на отдельные ряды. В данных кафе столбца времени нет, поэтому числа на этой странице получены на ряде, с которого начинается любой учебник по временным рядам. Это месячное число пассажиров международных авиалиний в тысячах с января 1949 по декабрь 1960 года (144 месяца), опубликованное Боксом и Дженкинсом в 1970 году и входящее в R под именем AirPassengers. Чтобы воспроизвести расчёты, данные из таблицы ниже вводят в табличный редактор двумя столбцами: month с первым днём каждого месяца (1949-01-01, 1949-02-01, …) и passengers с числом пассажиров. Файл сохраняют в формате CSV и загружают в модуль, указав month как переменную времени, а passengers как ряд. Частота 12 определяется по месячному шагу автоматически. Остальные параметры везде оставлены по умолчанию, и любое число на странице можно воспроизвести.

Год Янв Фев Мар Апр Май Июн Июл Авг Сен Окт Ноя Дек
1949 112 118 132 129 121 135 148 148 136 119 104 118
1950 115 126 141 135 125 149 170 170 158 133 114 140
1951 145 150 178 163 172 178 199 199 184 162 146 166
1952 171 180 193 181 183 218 230 242 209 191 172 194
1953 196 196 236 235 229 243 264 272 237 211 180 201
1954 204 188 235 227 234 264 302 293 259 229 203 229
1955 242 233 267 269 270 315 364 347 312 274 237 278
1956 284 277 317 313 318 374 413 405 355 306 271 306
1957 315 301 356 348 355 422 465 467 404 347 305 336
1958 340 318 362 348 363 435 491 505 404 359 310 337
1959 360 342 406 396 420 472 548 559 463 407 362 405
1960 417 391 419 461 472 535 622 606 508 461 390 432

Ряд начинается со 112 тысяч пассажиров в январе 1949 года и заканчивается 432 тысячами в декабре 1960-го. Минимум приходится на ноябрь 1949 года (104), максимум — на июль 1960-го (622). В каждой строке таблицы виден летний подъём, а в каждом столбце значения растут из года в год.

Ряд и его лаги

Временной ряд — одна переменная, измеренная в последовательные моменты времени, по одному значению на момент и в порядке их следования. Главное свойство ряда — взаимная зависимость значений: куда ряд двинется дальше, определяется тем, где он находится сейчас. Обычные методы считают каждую строку новым независимым наблюдением и потому, применённые к ряду, переоценивают объём содержащейся в нём информации. Регрессия по ряду даёт слишком малые p-значения и принимает за тренд медленный дрейф. Методы анализа временных рядов не отбрасывают зависимость, а моделируют её. Они описывают, как значение связано с предыдущими, а по этой связи объясняют ряд и строят его продолжение. Таблица авиапассажиров — один ряд из 144 месячных значений. Модуль считает отдельным рядом каждый выбранный столбец, а группирующая переменная делит столбец на ряды по группам.

Автокорреляция на лаге — корреляция ряда с его собственной копией, сдвинутой назад на некоторое число шагов, которое называют лагом. Автокорреляция на лаге 1 сопоставляет каждый месяц с предыдущим, на лаге 12 — с тем же месяцем год назад. Это та же автокорреляция (зависимость соседних значений в упорядоченных данных), только вычисленная по очереди для каждого лага. У ряда авиапассажиров автокорреляция на лаге 1 равна 0.95 (месяц почти повторяет предыдущий), а на лаге 12 — 0.76: так проявляется годовой цикл. Значение на лаге 1, близкое к 1, означает, что ряд меняется медленно и плавно. Всплеск на лаге 12 в месячных данных указывает на годовой цикл. Значения около нуля на всех лагах означают, что ряд — шум и моделировать в нём нечего. Эти числа можно найти на графике автокорреляции в карточке разведочного анализа: он охватывает все лаги по меньшей мере до двух сезонных периодов.

Тренд, сезонный паттерн и сезонный период

Тренд — медленное изменение уровня ряда за весь период наблюдений, то есть то, что осталось бы, если усреднить краткосрочные колебания и повторяющиеся циклы. Ряд авиапассажиров растёт на всём своём протяжении: в 1949 году в среднем 127 тысяч пассажиров в месяц, в 1960-м — 476, почти вчетверо больше, и среднее за год ни разу не опускается ниже предыдущего. Тренд лучше всего виден на графике, и большинству методов его нужно задать явно. Модель, предполагающая постоянный уровень, будет всё время отставать от ряда с трендом, а прямая, проведённая через ряд с циклом, примет цикл за разброс.

Сезонный паттерн — колебание, которое повторяется через фиксированный интервал (летний пик поездок, спад офисного трафика в выходные, декабрьский всплеск розничных продаж), так что значение в определённой точке цикла можно предсказать по той же точке предыдущих циклов. В каждой строке таблицы авиапассажиров максимум приходится на июль или август, а минимум — на ноябрь или февраль. Размах колебаний растёт вместе с уровнем: в 1949 году июль превышает среднее за год на 21 тысячу, в 1960-м уже на 146 тысяч. Именно этим аддитивная сезонность (колебания постоянной величины) отличается от мультипликативной (колебания, составляющие постоянную долю уровня). Из-за такого роста ряду может понадобиться преобразование Бокса — Кокса, прежде чем к нему подойдёт аддитивная модель. Колебания, которые повторяются, но не через фиксированный интервал (деловые циклы, эпидемии), называют циклическими, а не сезонными, и сезонные методы их не улавливают.

Сезонный период (в модуле он называется частотой) — число наблюдений в одном цикле сезонности, а вовсе не частота в герцах. У месячных данных с годовым циклом период равен 12, у квартальных с годовым — 4, у дневных с недельным — 7, у часовых с суточным — 24. Это число нужно любому сезонному методу: по нему метод определяет, что такое «тот же сезон». Модуль определяет его по шагу переменной времени (строки с интервалом в месяц дают 12) и позволяет задать другое значение вручную. Неверный период — самая частая причина, по которой верный метод даёт неверный ответ. При периоде 1 никакую сезонную модель подогнать нельзя, а при периоде, которого в данных нет, сезонные члены подгоняются к шуму. Месяцы в таблице авиапассажиров отстоят друг от друга на 28–31 день, и модуль распознаёт в них месячные данные с периодом 12. Предварительная проверка ищет период ещё и по спектру самого ряда, без учёта дат, и тоже находит 12.

Стационарность и дифференцирование

Стационарность — свойство ряда, статистические характеристики которого одинаковы на всём его протяжении: среднее и разброс постоянны, а автокорреляция зависит только от расстояния между двумя значениями (лага), но не от того, в каком месте ряда они находятся. На этом предположении построена большая часть теории моделей ARMA, графиков автокорреляции и критериев единичного корня. Ряд с трендом или сезонностью нестационарен, поскольку его среднее меняется. Ряд авиапассажиров нарушает все три условия. Его среднее за год растёт со 127 до 476, стандартное отклонение за год — с 14 до 78, а из-за годового цикла автокорреляция зависит не только от лага, но и от сезона. Стационарный ряд из такого получают дифференцированием. Предварительная проверка модуля сообщает, сколько раз его нужно применить, а карточка разведочного анализа затем проверяет результат критериями стационарности. Как понимать их результаты, объяснено в руководстве к модулю.

Дифференцирование заменяет каждое значение его изменением по сравнению с предыдущим, yt−yt−1 (этот месяц минус прошлый), и служит стандартным способом убрать тренд. У ряда, который равномерно растёт, разности колеблются около постоянной величины, а разности блуждающего ряда перестают блуждать. Число таких шагов — это d модели ARIMA. Рекомендованное d (ndiffs) в предварительной проверке — число шагов, которое советуют критерии приложения. Для ряда авиапассажиров оно равно 1. Месячные изменения (их 143) в среднем равны +2.2 тысячи пассажиров со стандартным отклонением 34, а их автокорреляция на лаге 1 падает с 0.95 у исходного ряда до 0.30: плавного подъёма больше нет. Модель, которая не видела уровня ряда, не может отменить дифференцирование. Поэтому модуль никогда не дифференцирует ряд перед экспоненциальным сглаживанием или тэта-методом, а ARIMA выполняет дифференцирование в ходе собственной подгонки.

Сезонное дифференцирование заменяет каждое значение его изменением по сравнению с той же точкой предыдущего цикла, yt−yt−m, где m — сезонный период (этот июль минус прошлый июль). Оно убирает сезонность так же, как обычное дифференцирование убирает тренд. Число сезонных разностей — это D сезонной модели ARIMA. Рекомендацию приложения показывает Рекомендованное D (nsdiffs) в предварительной проверке. Для ряда авиапассажиров оно равно 1: у обычных разностей этого ряда автокорреляция на лаге 12 всё ещё равна 0.83. Годовой цикл сохраняется после первой разности, и нужна ещё сезонная. Потребность в обеих разностях, обычной и сезонной, сделала ряд авиапассажиров классическим примером, а модель для дважды продифференцированного ряда так и называют: модель авиаперевозок.

Дисперсия, растущая с уровнем

Преобразование Бокса — Кокса — семейство степенных преобразований y(λ)=(yλ−1)/λ, где при λ = 0 берётся натуральный логарифм. Его применяют к ряду, колебания которого растут вместе с уровнем, чтобы к преобразованному ряду подошла аддитивная модель. При λ = 1 ряд остаётся прежним, λ = 0.5 даёт квадратный корень, λ = 0 — логарифм, а метод Герреро подбирает λ, при котором разброс внутри цикла меньше всего зависит от среднего этого цикла. Ряд авиапассажиров — хрестоматийный пример. Стандартное отклонение за год растёт у него с 14 в 1949 году до 78 в 1960-м, в 5.7 раза, а в логарифмической шкале эти значения равны 0.11 и 0.16, то есть различаются всего в 1.4 раза. Модуль автоматически оценивает для исходного ряда λ = −0.29: это преобразование чуть сильнее логарифма, поскольку и в логарифмической шкале годовой разброс немного растёт. Преобразованию нужен строго положительный ряд: для нуля и отрицательных значений оно не определено. Ряд, пересекающий ноль, сначала приходится сдвинуть, и модуль сообщает, если пропустил преобразование по этой причине. Подогнанные значения и прогнозы переводятся обратно в исходную шкалу, так что логарифмов числа пассажиров читатель не увидит.

Выбросы в ряде

Выброс во временном ряде — значение, которое выделяется на фоне того, что предсказывают соседние значения и сезон, а не на фоне общего распределения ряда. Июль 1960 года с 622 тысячами — максимум ряда авиапассажиров, но не выброс, а июль с 400 тысячами в том же году был бы выбросом. При поиске выбросов модуль подгоняет робастный тренд и сезонность и отмечает остатки, отстоящие от квартилей больше чем на три межквартильных размаха. Общие правила для выбросов, которые сравнивают значение со всем распределением, отметили бы здесь не те точки. Поиск надёжен ровно настолько, насколько хороша подгонка, с которой сравниваются значения. На ряде авиапассажиров он отмечает семь летних пиков: июль 1949, 1950 и 1951 годов, август 1958 и 1959 годов, июль и август 1960 года. Их размах растёт вместе с уровнем, аддитивная сезонность за ним не успевает, и самые высокие пики оказываются заметно выше подгонки. Это настоящие максимумы, а не ошибки. Предварительная проверка перечисляет их, чтобы решение о замене оставалось за исследователем.

Чтение графиков автокорреляции

Автокорреляционная функция (АКФ) — автокорреляция на лаге, вычисленная для всех лагов начиная с 1 и изображённая столбчатой диаграммой, коррелограммой. На диаграмме проведена пунктирная полоса ±1.96/√n: в её пределах оставались бы столбцы, будь ряд чистым шумом. Столбец, выходящий за полосу, — корреляция, которую при такой длине ряда можно считать реальной. Смотрят на общую форму, а не на отдельные столбцы. Столбцы, медленно убывающие к нулю, означают, что в ряде преобладает тренд или ряд блуждает без постоянного уровня, то есть нестационарен. Столбцы, которые снова поднимаются на сезонном лаге и кратных ему, указывают на сезонность. У ряда авиапассажиров все 24 столбца далеко выходят за полосу ±0.16: АКФ падает с 0.95 на лаге 1 до 0.66 на лаге 8, снова поднимается до 0.76 на лаге 12 и на лаге 24 всё ещё равна 0.53. Это медленное затухание, характерное для тренда, с наложенным на него годовым циклом. Если АКФ резко обрывается после лага q (несколько больших столбцов, а за ними почти нули), ряду подходит модель скользящего среднего порядка q.

Частная автокорреляционная функция (ЧАКФ) — корреляция ряда с его значением k шагов назад после исключения влияния промежуточных значений, то есть вклад лага k сверх того, что уже объяснили более короткие лаги. На лаге 1 ЧАКФ совпадает с автокорреляцией, поскольку промежуточных значений нет. У ряда авиапассажиров ЧАКФ затем падает до −0.23 на лаге 2, до лага 9 остаётся в пределах полосы и даёт всплеск −0.54 на лаге 13. Это сезонный лаг плюс один, признак ряда, которому нужна сезонная разность. Если ЧАКФ обрывается после лага p, а АКФ затухает, ряду подходит авторегрессионная модель порядка p. Обратная картина (АКФ обрывается, ЧАКФ затухает) указывает на модель скользящего среднего. Это приблизительные ориентиры для выбора порядков ARIMA, а не строгие правила, и автоматический поиск порядков делает тот же анализ численно.

Белый шум — ряд без всякой структуры: независимые значения вокруг постоянного среднего с постоянным разбросом. По прошлому такого ряда его следующее значение не предсказать, и все автокорреляции равны нулю с точностью до случайных колебаний выборки. Так должны выглядеть остатки модели, из которых она извлекла всё предсказуемое. Белый шум — нулевая гипотеза критерия Льюнга — Бокса. Исходный ряд авиапассажиров предельно далёк от белого шума: статистика Льюнга — Бокса по 24 лагам равна Q = 1606, тогда как для шума она была бы около 24, p < 0.001.

Критерий Льюнга — Бокса складывает квадраты автокорреляций на первых h лагах с весами, учитывающими длину ряда, в статистику Q и сравнивает её с распределением хи-квадрат. Малое p означает, что хотя бы одна из этих автокорреляций не случайна. На исходном ряде критерий проверяет, есть ли в нём что моделировать, а на остатках модели — не упустила ли модель чего-нибудь. Во втором случае число степеней свободы уменьшается на число оценённых параметров, ведь их подгонка израсходовала часть степеней свободы ряда. На ряде авиапассажиров мультипликативная модель Холта — Винтерса оставляет Q(24) = 40.2 при 8 степенях свободы, p < 0.001: в остатках ещё есть структура, которую модель не уловила. Остатки автоматической ARIMA дают Q(24) = 41.8 при 23 степенях свободы, p = 0.010, то есть гипотеза отвергается на уровне, который приложение по умолчанию использует для проверки допущений.

Декомпозиция

Декомпозиция раскладывает ряд на три компоненты, которые в сумме дают исходный ряд (тренд, сезонность и остаток), чтобы каждую можно было изучить отдельно: наблюдаемое = тренд + сезонность + остаток. Для колебаний, растущих вместе с уровнем, есть мультипликативная форма, где ряд — произведение трёх компонент. Классический метод оценивает тренд центрированным скользящим средним с окном, равным сезонному периоду, а сезонную компоненту — как среднее отклонение от тренда в каждой точке цикла, одинаковое для всех циклов. STL (сезонно-трендовая декомпозиция с помощью loess) оценивает обе компоненты локальными регрессиями. Если это разрешено, форма сезонности в ней может медленно меняться от цикла к циклу, а в робастном варианте выбивающийся месяц почти не искажает подгонку. Остаток — то, что не объяснила ни одна компонента, и там, где остаток далёк от прочих, модуль отмечает точку-аномалию. У ряда авиапассажиров тренд STL растёт со 123 до 477 тысяч, а сезонная компонента колеблется вокруг него от −49 до +40 тысяч. Модуль фиксирует форму сезонности для всех циклов, поэтому поздние летние месяцы, размах которых гораздо больше ранних, оставляют остатки до 129 тысяч. Аномалиями отмечены 18 из 144 месяцев, среди них июнь–август 1956–1960 годов. Так аддитивная декомпозиция показывает, что сезонность мультипликативная, и решение здесь — преобразование Бокса — Кокса или мультипликативная форма.

Сила тренда и сила сезонности — два числа от 0 до 1, которые показывают, какую долю вариации ряда объясняет каждая компонента, и дают шкалу для слов «сильный тренд» и «сильная сезонность». Сила тренда равна 1−Var⁡(R)/Var⁡(T+R), то есть единице минус доля остатка в вариации суммы тренда и остатка. Сила сезонности определяется так же, с сезонной компонентой вместо тренда. Если дисперсия остатка больше дисперсии суммы, сила принимается равной 0. Значение около 1 означает, что компонента преобладает, около 0 — что её почти нет. По декомпозиции STL в модуле сила тренда у ряда авиапассажиров равна 0.94, сила сезонности — 0.62. Почти вся изменчивость приходится на рост. Сезонность хорошо заметна, но её размах с годами растёт, а форма зафиксирована, поэтому треть её вариации уходит в остаток.

Проверка стационарности

Критерий единичного корня проверяет, блуждает ли ряд без постоянного уровня, то есть есть ли у него единичный корень. Так называют свойство ряда, в котором случайные толчки накапливаются, а не затухают. Простейший пример — случайное блуждание. Альтернатива состоит в том, что ряд возвращается к постоянному уровню или к линии тренда. У расширенного критерия Дики — Фуллера и критерия Филлипса — Перрона нулевая гипотеза — наличие единичного корня. Поэтому малое p отвергает её и указывает, что ряд похож на стационарный, тогда как большое p не доказывает наличия единичного корня, а лишь не позволяет его исключить. Модуль включает в альтернативу обоих критериев дрейф и линейный тренд, так что ряд, устойчиво колеблющийся вокруг тренда, для них стационарен. На ряде авиапассажиров статистика ADF равна −7.32, статистика Филлипса — Перрона −5.05, у обеих p < 0.01. Колебания вокруг тренда не накапливаются, и критерии признают ряд стационарным. Но это ещё не значит, что ряд готов к моделированию: тренд никуда не делся.

Критерий KPSS проверяет обратное: его нулевая гипотеза состоит в том, что ряд стационарен (вокруг постоянного среднего в варианте уровня или вокруг линейного тренда в варианте тренда). Малое p отвергает стационарность и указывает, что ряд блуждает. Нулевые гипотезы двух критериев противоположны, поэтому их результаты рассматривают вместе. Если критерий единичного корня гипотезу отвергает, а KPSS нет, ряд однозначно стационарен. Если отвергает KPSS, а критерий единичного корня нет, у ряда однозначно есть единичный корень. Если не отвергает ни один, выборка слишком коротка, чтобы различить эти случаи. Если отвергают оба, ряд не подходит ни под одно описание: возможно, в нём есть детерминированный тренд, не предусмотренный нулевой гипотезой KPSS, скачок уровня или меняющаяся со временем дисперсия. При настройках модуля по умолчанию ряд авиапассажиров попадает в последний случай. ADF отвергает единичный корень, а KPSS в варианте уровня (2.74 при p < 0.01) отвергает постоянное среднее. Вместе два критерия указывают на ряд с трендом и растущим размахом колебаний. Чтобы проверить, устойчивы ли колебания вокруг тренда (именно на этот вопрос отвечал ADF), нулевую гипотезу KPSS переключают на стационарность относительно тренда.

Сглаживание

Скользящее среднее заменяет каждое значение средним по окну соседних значений с центром в этом значении. При окне 12 на месячных данных в него входят шесть месяцев до, шесть после и сам месяц, а веса подобраны так, чтобы окно оставалось центрированным. Так с графика убираются сезонность и шум, и остаётся тренд. Это фильтр, а не модель: у него нет ни оцениваемых параметров, ни правдоподобия, ни остатков для проверки. Прогноза он тоже не даёт, поскольку центрированному окну на краях ряда нечего усреднять: окно в 12 месяцев на 144 месяцах авиапассажиров оставляет 132 сглаженные точки и теряет по шесть с каждого края. Если цель — убрать сезонность, окно должно быть равно сезонному периоду, и модуль по умолчанию задаёт именно его.

Экспоненциальное сглаживание прогнозирует ряд по взвешенному среднему его прошлых значений. Веса убывают в геометрической прогрессии, так что больше всего весит последнее наблюдение, а скорость убывания задаёт параметр сглаживания α от 0 до 1. При α около 1 сглаженный уровень почти совпадает с последним значением, при α около 0 — с долгосрочным средним. Простое экспоненциальное сглаживание (SES) отслеживает только уровень, метод Холта добавляет тренд со своим параметром β, а метод Холта — Винтерса — сезонную компоненту с третьим параметром γ. Сезонная компонента аддитивна, если размах сезонных колебаний постоянен, и мультипликативна, если он растёт вместе с уровнем. Затухающий тренд постепенно выравнивает экстраполяцию, а не продолжает прямую бесконечно, и на длинном горизонте это обычно надёжнее. Всё семейство записывают как ETS(ошибка, тренд, сезонность): ETS(A,N,N) — это SES, ETS(A,Ad,N) — метод Холта с затуханием, ETS(M,A,M) — мультипликативный метод Холта — Винтерса. Автоматический метод ETS выбирает форму по информационному критерию. На ряде авиапассажиров SES оценивает α = 1.00, то есть по сути сводится к наивному прогнозу, и его RMSE на обучающей выборке равна 33.6 тысячи пассажиров. Мультипликативный метод Холта — Винтерса (ETS(M,A,M) с α = 0.31, β = 0.01 и γ = 0.60) снижает её до 10.6 при средней абсолютной процентной ошибке 2.9%. Уровень обновляется активно, тренд почти не отходит от начальной оценки, а сезонные индексы быстро подстраиваются.

Модели ARIMA

Модель ARIMA (авторегрессионная интегрированная модель скользящего среднего) объясняет ряд его собственным прошлым и состоит из трёх частей, у каждой из которых свой порядок. Первая — p авторегрессионных членов, то есть регрессия сегодняшнего значения на p предыдущих. Вторая — d разностей, которые превращают ряд с трендом в стационарный до подгонки двух других частей, так что ARIMA(p, 1, q) моделирует изменения, а не уровни. Третья — q членов скользящего среднего, то есть регрессия сегодняшнего значения на q последних ошибок прогноза. Порядки и составляют модель, и выбирают их как раз по АКФ и ЧАКФ. Автоматический поиск перебирает сетку порядков, выбирает сочетание с наименьшим информационным критерием и там, где это помогает, добавляет константу: среднее для недифференцированного ряда или дрейф для продифференцированного. Для ряда авиапассажиров автоматический поиск выбирает ARIMA(0,1,1)(0,1,0)[12]: одна обычная и одна сезонная разность, затем один член скользящего среднего с коэффициентом −0.32 на продифференцированном ряде. AICc равен 1020.7, RMSE на обучающей выборке 11.2, а MASE 0.26, то есть четверть ошибки сезонного наивного прогноза.

Сезонная ARIMA (SARIMA) добавляет второй набор из тех же трёх частей на сезонном лаге: P сезонных авторегрессионных членов, D сезонных разностей и Q сезонных членов скользящего среднего, где сезонный лаг равен периоду m. Модель записывают как ARIMA(p, d, q)(P, D, Q)[m]. Член на лаге m связывает этот июль с прошлым июлем так же, как обычный член связывает его с июнем. Запись ARIMA(0,1,1)(0,1,1)[12] означает одну обычную разность, одну сезонную разность с периодом 12, один обычный и один сезонный член скользящего среднего. Это модель авиаперевозок, названная так потому, что её построили именно для этого ряда, взятого в логарифмах. Если задать эту модель вручную и подогнать к исходным числам пассажиров, коэффициенты двух членов окажутся равны −0.31 и −0.11, а AICc — 1021.2, чуть хуже, чем у автоматического выбора. Сетка соседних порядков в модуле показывает, что ARIMA(1,1,2)(1,1,2)[12] достигла бы 1013.2, то есть выиграла бы восемь единиц AICc ценой четырёх лишних параметров, и сетка нужна именно для таких сравнений. При периоде больше примерно 24 оценка сезонных членов перестаёт сходиться, поэтому с этого порога модуль выводит предупреждение и предлагает взамен методы на основе STL.

Прогнозирование и его точность

Точность прогноза — то, насколько прогнозы метода отклоняются от значений, которые стали известны позже. Корректно измерять её вне выборки. Подгонка модели к данным, по которым она оценена (ошибка на обучающей выборке, или внутривыборочная ошибка, и информационные критерии рядом с ней), показывает, насколько хорошо модель описывает прошлое, а не насколько хорошо она будет прогнозировать. Гибкая модель описывает прошлое лучше, чем прогнозирует. Оценку вне выборки дают две схемы, отложенная выборка и скользящая перекрёстная проверка, и любую меру точности (RMSE, MAE, MAPE, MASE) можно рассчитать в любой из них. Состязание методов прогноза в модуле оценивает все методы одинаково, на одних и тех же окнах, и ранжирует их по одной мере, так что сравнение справедливо. На ряде авиапассажиров побеждает авто-ARIMA с RMSE на перекрёстной проверке 27.0 тысячи пассажиров против 30.5 у ETS и 90.4 у наивного метода.

Наивные прогнозы — два эталона, которые должен превзойти любой метод. Наивный прогноз переносит последнее наблюдённое значение вперёд без изменений, а сезонный наивный повторяет значение той же точки предыдущего цикла: следующий июль равен прошлому июлю. Они не требуют никаких вычислений, и на устойчивом ряде их трудно обойти, поэтому метод, который выигрывает у них совсем немного, своей сложности не оправдывает. Для ряда с трендом эталоном служит прогноз с дрейфом: наивное значение плюс среднее изменение ряда за период. На ряде авиапассажиров наивный прогноз на январь 1961 года равен 432 (значению декабря 1960-го) с 95%-м интервалом от 366 до 498. Его RMSE на перекрёстной проверке — 90.4, у сезонного наивного — 42.5, у победителя — 27.0.

Оценка на отложенной выборке устроена так: последний отрезок ряда откладывают (модуль берёт горизонт прогноза или пятую часть наблюдений, если она меньше), каждый метод подгоняют по наблюдениям до него, прогнозируют этот отрезок и сравнивают прогнозы с фактическими значениями. Это простейшая проверка на данных, которых модель не видела, но она относится лишь к одному окну. На этом конкретном отрезке методу может повезти или не повезти, а разрыв или необычный сезон внутри окна сказывается на всех оценках. При горизонте 12 отложенной выборкой для ряда авиапассажиров служат двенадцать месяцев 1960 года, и на них RMSE авто-ARIMA равна 23.9, а MASE — 0.61.

Скользящая перекрёстная проверка повторяет оценку на отложенной выборке от нескольких начальных точек. Ряд разрезают в одной точке, подгоняют методы по всем наблюдениям до неё и прогнозируют следующий горизонт. Затем точку разреза сдвигают назад на целый горизонт и повторяют всё сначала. Окна прогноза от разных начальных точек не пересекаются, а ошибки по всем окнам объединяют. Оценка, усреднённая по нескольким окнам, ближе к ожидаемой ошибке прогноза метода и гораздо устойчивее оценки по одной отложенной выборке. Поэтому модуль ранжирует методы по ней всякий раз, когда её можно провести. Каждая начальная точка забирает у ряда длину горизонта, так что на коротком ряде их помещается немного. Для ряда авиапассажиров пять начальных точек с шагом в год (последние пять лет) дают объединённую RMSE 27.0 и MASE 0.71 для авто-ARIMA, 30.5 и 0.81 для ETS, 33.3 и 0.90 для тэта-метода. Порядок тот же, что и по одной отложенной выборке, но теперь он подтверждён на пяти окнах.

RMSE (корень из средней квадратичной ошибки) получают так: ошибки прогноза возводят в квадрат, квадраты усредняют и извлекают из среднего корень, поэтому несколько крупных промахов весят больше, чем много мелких. RMSE выражена в единицах самого ряда, и именно на неё настроено большинство методов. MAE (средняя абсолютная ошибка) — среднее модулей ошибок без возведения в квадрат, то есть типичный промах в единицах ряда. Обе меры зависят от масштаба ряда, так что значение на одном ряде нельзя сравнивать со значением на другом. Для ряда авиапассажиров RMSE 27.0 и MAE 20.8 у авто-ARIMA на перекрёстной проверке выражены в тысячах пассажиров в месяц.

MAPE (средняя абсолютная процентная ошибка) — среднее ошибок, выраженных в процентах от фактических значений, поэтому единиц измерения у неё нет. Прогнозы авто-ARIMA для ряда авиапассажиров ошибаются по окнам перекрёстной проверки в среднем на 5.1%, наивный прогноз — на 15.1%. У MAPE два недостатка, о которых стоит знать. Она не определена, если фактическое значение равно нулю, и неограниченно растёт вблизи нуля, поэтому для ряда, который доходит до нуля, модуль её не вычисляет и оставляет ячейку пустой. Кроме того, прогноз выше фактического значения она штрафует сильнее, чем прогноз ниже на ту же величину.

MASE (средняя абсолютная масштабированная ошибка) — отношение средней абсолютной ошибки метода к средней абсолютной ошибке сезонного наивного прогноза на обучающих данных. Значение 1 означает «так же хорошо, как повторить прошлый сезон», меньше 1 — лучше, больше 1 — хуже, и это верно для любого ряда в любых единицах. Поэтому MASE подходит для сравнения между рядами, группами и наборами данных и сразу показывает, оправдывает ли себя модель. Для ряда авиапассажиров MASE авто-ARIMA на перекрёстной проверке равна 0.71: её промахи составляют 71% от промахов сезонного наивного прогноза. У простого наивного метода MASE равна 2.30, то есть без учёта сезонности ошибки вырастают более чем вдвое.

Циклы в частотной области

Периодограмма раскладывает изменчивость ряда по частотам, а не по времени. Для каждой частоты, которую позволяют различить данные (от одного цикла за весь период наблюдений до одного цикла на каждые два наблюдения), она показывает, какую долю дисперсии ряда объяснила бы синусоида этой частоты. Цикл в ряде виден как пик на своей частоте, а его период равен единице, делённой на эту частоту. Частоты образуют фиксированную сетку из n/2 значений, поэтому период, который не попадает в узел сетки, размазывается по двум соседним узлам и указывается с разрешением: 12 ± 0.5 означает, что истинный цикл лежит где-то между 11.5 и 12.5 наблюдения. Значимость пика проверяют g-критерием Фишера, сравнивая периодограмму с плоским спектром белого шума. Его статистика — доля наибольшей ординаты в сумме всех ординат, а p-значение уже учитывает, что этот пик искали по всему спектру. У периодограммы ряда авиапассажиров 72 ординаты. На ординату с периодом 12 приходится 50% общей дисперсии, p ≈ 10⁻²⁰, а пошаговый поиск на карточке разведочного анализа находит в общей сложности семь значимых периодов. Основными из них оказываются 12 и два слабых длинных периода (8 и 9.6 месяца), близких к уровню шума, а остальные — гармоники периода 12.

Гармоника — пик на доле основного периода (P/2, P/3, P/4), который возникает у любого повторяющегося колебания, если его форма отличается от чистой синусоиды. Летний подъём в ряде авиапассажиров похож на острый горб, а не на плавную волну, поэтому кроме пика на 12 месяцах периодограмма показывает ещё и значимые пики на 6, 4, 3 и 2.4 месяца: по одному циклу за половину, треть, четверть и пятую часть года. Это не отдельные сезоны, а тот же годовой цикл, описанный точнее. Поэтому модуль указывает для гармоники основной период и множитель (Гармоника периода 12 (×2)), а её строку выводит приглушённой. Задавая частоту вручную, её выбирают среди строк основных периодов.

Структурные разрывы

Структурный разрыв (точка разрыва) — момент, в который поведение ряда меняется: уровень или наклон скачком становится другим и таким и остаётся. Этим разрыв отличается от одиночного выброса, после которого ряд возвращается на прежнюю линию. Метод Бай — Перрона подгоняет модель с заданным числом сегментов, выбирает даты разрывов, минимизирующие общую сумму квадратов ошибок, а число разрывов определяет по информационному критерию. Каждая дата сопровождается доверительным интервалом, поскольку момент разрыва известен лишь с той точностью, которую позволяют данные по обе стороны от него. Что считать разрывом, зависит от модели. При сдвиге среднего у каждого сегмента свой постоянный уровень, поэтому ряд с устойчивым трендом описывается лестницей ступеней. В ряде авиапассажиров такая модель находит пять разрывов (февраль 1951, февраль 1953, май 1955, февраль 1957 и март 1959 года), а средние по сегментам растут со 134 до 464 тысяч. В модели уровень + тренд у каждого сегмента своя прямая, и у того же ряда разрывов нет вовсе: его описывает один прямолинейный подъём. Само это расхождение и есть результат: ряд растёт, а не скачет. Поэтому модель нужно выбрать до того, как делать выводы о разрывах.

Где это встречается в DataSuite

Модуль анализа временных рядов построен на этих идеях. Его предварительная проверка сообщает для каждого ряда сезонный период, рекомендуемое число разностей, λ Бокса — Кокса и выбросы. Карточка разведочного анализа строит АКФ и ЧАКФ, раскладывает ряд на компоненты с их силами, применяет критерии единичного корня и KPSS, ищет циклы по периодограмме. Набор преобразований применяет преобразование Бокса — Кокса и замену выбросов. Карточки сглаживания и ARIMA подгоняют модели и проверяют, похожи ли их остатки на белый шум. Карточка прогнозирования сравнивает семь методов прогноза по отложенной выборке и скользящей перекрёстной проверке с мерами RMSE, MAE, MAPE и MASE, а карточка спектрального анализа строит периодограмму и ищет структурные разрывы. Модуль преобразования данных предлагает лаг и разность в виде правил, если сдвинутый или продифференцированный столбец нужен в самом наборе данных. А если строки обычной регрессии оказываются упорядоченными во времени, в модуле регрессии есть диагностика Дарбина — Уотсона и стандартные ошибки Ньюи — Уэста.

Владелец магазина: день → переменная времени, дневная выручка → ряд, филиал → группирующая переменная; больница: неделя → переменная времени, число госпитализаций → ряд, отделение → группирующая переменная; метеоролог: час → переменная времени, температура → ряд, метеостанция → группирующая переменная.