Часто мы видим какие-либо закономерности в процессах происходящих вокруг. То, что летом возрастает спрос на тапки / плавки / мороженое — вроде бы очевидно. Такие предсказания не требуют какой-то изощренной умственной работы. Человеческий гений однако в стремлении формализовать и автоматизировать всё и вся придумал кучу методов, как эти закономерности изучать (как обгадиться на пустом месте конечно же тоже). Об этом сегодня речь и пойдёт.
К примеру, мы хотим понять, от чего зависит стоимость квартир в городе. Так, ключевыми параметрами, объясняющими большую часть цены, будут количество комнат в квартире, качество отделки, возраст и тип многоквартирного дома, район, доступность различных общественных благ, а-ля метро, автобусные остановки, школы и тп.
Для предсказания цены мы можем построить модель, которая учитывает все перечисленные параметры, и для каждого отдельного набора значений этих параметров выдает конкретную оценку цены квартиры. Для обывателя модель — чёрный ящик, в который мы вводим данные, и получаем результат. Как калькулятор: вбиваем сложное выражение и получаем результат. Что внутри — для обывателя неважно (в принципе, таро — тоже своего рода модель). Мы однако заглянем немного закулисы вычислений чтобы понять, в какой именно момент всё идёт по матушке-родимой.
Вид модели определяется в зависимости от имеющихся данных. Чаще всего это просто взвешенная сумма различных числовых характеристик модели. Например, (так может выглядеть обычная регрессионная модель):
стоимость-аренды-квартиры = А * число-комнат + Б * время-до-метро-в-минутах-пешком + С * возраст-дома
(Для тех, кто помнит богомерзкую математику)
объясняемые-параметры = функция (объясняющие-параметры)
Тут числа А, Б и В определяются в зависимости от того, какие данные мы рассматриваем. Есть строгая математическая теория в которой описывается, как можно подбирать эти числа, но сейчас не будем об этом.
Данные однако могут зависеть не только от каких-то внешних параметров, но и друг от друга. В частности, от того, в каком порядке мы на них смотрим. Обратимся к другому примеру. Допустим, мы хотим предсказывать спрос на продажу мороженного мороженого (хочу мороженку!). Логично предположить, что спрос на него зависит не только от температуры за окном, погоды, но и от времени года в целом. Если мы учтём и такие нюансы, то наша модель может стать гораздо точнее.
Хорошо но почему тогда бы не ввести время наблюдения как отдельный параметр? Если коротко, то такие временные зависимости, как правило, бывают очень сложными. В примере с мороженым, можно ожидать как очевидного скачка летом, так и менее очевидных колебаний спроса зависящих от праздников по всему году (как прекрасно батониться с мороженым на пузе перед телеком в новогодние праздники) или усталости людей о мороженого (к августу уже приедается). Причём такие тренды вполне могут и не быть привязанными строго к какой-то дате.
Но как по другому можно уловить такие зависимости? Можно сгруппировать наблюдения по отдельным промежуткам времени и смотреть на то, как вела себя объясняемый параметр (спрос в примере с мороженкой) в предыдущие моменты времени!
К примеру, измерять, сколько продано мороженого в день (всё ещё хочу мороженое!), а также другие параметры, такие как погоду и температуру воздуха, и это всё учитывать в построении зависимостей. Так, используя различные подходы к группировке, можно будет говорить о различных зависимостях. К примеру, можно попытаться построить подобную модель:
число-купивших-мороженку = А * температура-воздуха + Б * число-осадков + Т1 * число-купивших-вчера + Т2 * число-купивших-позавчера + …
Параметры А, Б, Т1, Т2, … определяются в зависимости от имеющихся данных с помощью жуткой математики.
Однако, если наблюдений много, то учитывать их всех в модели нет смысла: модель получится слишком большой. В зависимости от задачи можно попытаться выделить долгие тенденции. К примеру то, что спрос на мороженку зависит от времени года. Такие зависимости, как правило, определяются для каждой задачи отдельно экспертами. Они либо очевидны, либо слишком сложны. Математика тут вряд ли поможет, так как в данных слишком много неопределенности на больших промежутках времени.
![](https://habrastorage.org/getpro/habr/upload_files/7f0/e66/7cf/7f0e667cf4df35959a4f678d4b1e7ca0.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/4f4/abc/cde/4f4abccdeaecdd289003232c86e77270.jpg)
![](https://habrastorage.org/getpro/habr/upload_files/03c/a92/da7/03ca92da72554258d337ee760dbd6210.jpg)
Тренды, метод скользящего среднего:
Зато математикам есть, что предложить, если рассматривать небольшие промежутки времени. Для этого есть несколько подходов. Один из них — использовать для предсказания какие-то значения в близкие моменты времени, как параметры. Он был продемонстрирован выше на примере с мороженкой.
Другой — чуть сложнее. Его идея состоит в том, чтобы использовать не просто значения объясняемого параметра в предыдущие дни, а рассмотреть их усредненные значения. Это нужно, чтобы уменьшить влияние фактора случайности в данных, и попытаться найти закономерности на различных промежутках времени. Графически это можно представить как “сглаживание” кривой.
Метод, когда мы получаем новые параметры, усреднением некоторого числа известных значений объясняемых параметров называется методом скользящего среднего. Благодаря своей простоте и эффективности этот метод приобрёл очень большую популярность. Мы как будто скользим небольшим окошком по данным и усредняем всё, что в него попадает.
![](https://habrastorage.org/getpro/habr/upload_files/a96/f41/9bd/a96f419bd36cdeff6acbea068700ef84.jpg)
Эффект Слуцкого-Юла:
Однако за все удобства приходится платить. В частности, одним из главных пороков метода скользящего среднего является искусственное конструирование ложных периодических взаимосвязей в данных.
Это называется эффектом Слуцкого-Юла (по имени ученых, его изучавших).
Ложные тренды возникают, если данные, по которым происходит усреднение, пересекаются. Так, в свободном от тренда ряду могут возникнуть колебания, обусловленные этим эффектом. “Пики” и “ямы” в нашей новой искусственной зависимости не всегда появляются через равные временные интервалы, как у таких элементарных периодических функций, как синус или косинус. Амплитуда колебаний также может быть самой разнообразной. Поэтому то, как такие тренды выявлять — сложный вопрос, которому посвящено немало передовых исследований в области статистики и математической физики.
Очевидной проблемой, непосредственно вытекающей из этого является повышенная вероятность исхода, когда модель на тренировочных данных хорошо работает, а на практике не очень. (Мемы с подгонкой данных не на пустом месте основаны).
Поэтому какие-то серьезные тенденции объяснять с помощью метода скользящего среднего нужно очень осторожно. Усреднение по пересекающимся данным приводит к искусственным трендам. То есть к тому, что мы видим закономерности там, где их нет.
![](https://habrastorage.org/getpro/habr/upload_files/bbc/c3b/d6e/bbcc3bd6eb4f7245ac33fa8ccab5f165.jpg)
Как же приятно порой провести статистическое исследование и найти что-нибудь там, где зависимостей и в помине нет. Но не злоупотребляйте этим, пожалуйста. А то говноисследований и так много. А хороших мало. Что-ж, желаю вам провести время здорово и математично!
Автор: Лиза Иванова