Анализ средних цен на мужские футболки за 2022–2026 гг методом сингулярного спектрального разложения (SSA)
Изучала анализ временных рядов и нашла замечательный метод — сингулярный спектральный анализ. Решила попробовать разобрать цены на мужские футболки с помощью этого метода. В статье расскажу, как разложила ряд недельных цен на составляющие: тренд, периодические колебания и шум. По пути очистила цену от инфляции, чтобы понять, дорожает ли товар на самом деле или растёт только номинально, вместе с инфляцией. Данные взяла у Росстата за период с 10 января 2022 года по 24 августа 2026 года.
Источники данных о цене и инфляции
Данные взяла на сайте Росстата в разделе «Цены, инфляция». Использовала два документа:
- «Еженедельные средние потребительские цены на отдельные товары и услуги» — отсюда взяла саму цену футболки в рублях.
- «Еженедельные индексы потребительских цен на отдельные товары и услуги» — отсюда взяла инфляцию по тому же товару.
Товар выбрала «Майка, футболка мужская бельевая, шт.». Период анализа — с 10 января 2022 года по 24 августа 2026 года.
Здесь важна разница: цена — это сколько стоила в рублях футболка на каждую дату, а индекс потребительских цен (ИПЦ) — это прирост в процентах к предыдущей дате. Например, значение 100,39 означает, что за неделю цены выросли на 0,39%.
Чтобы убрать инфляцию, я перевела недельные приросты ИПЦ из процентов в доли и перемножила их нарастающим итогом — получился накопленный индекс инфляции с начала периода. Затем поделила номинальную цену на этот индекс. В результате получилась реальная цена в ценах первой недели 2022 года, очищенная от общего роста цен в экономике.
Подготовка данных: восстановление пропусков
Росстат обычно делал замеры по понедельникам. Но некоторые понедельники попадали на праздники, и замер не делался — например, каждый год отсутствует первый понедельник января. А в 2022 году замеры чаще делались вообще по пятницам, и только позже Росстат перешёл на понедельники.
По определению, временной ряд — это когда замеры снимаются через равные промежутки времени. Чтобы получился корректный временной ряд с равными промежутками, я сделала два действия. Сдвинула замеры, сделанные в пятницы 2022 года и праздничные недели, на понедельники. А недостающие недели восполнила: добавила пропущенные понедельники и в качестве значения поставила предыдущий замер.
График исходного временного ряда реальной цены.
Суть метода SSA
Сингулярный спектральный анализ (SSA, Singular Spectrum Analysis) — метод, который раскладывает временной ряд на отдельные независимые составляющие: тренд, периодические колебания и случайный шум. Главное его достоинство в том, что он не требует никаких предположений о природе ряда и имеет всего один настраиваемый параметр — длину окна.
Идея метода в том, чтобы превратить ряд в матрицу и применить к ней аппарат линейной алгебры, который умеет находить в матрицах скрытую структуру. Метод состоит из четырёх этапов.
1. Составить матрицу траекторий. Ряд «нарезается» скользящим окном длины L на перекрывающиеся куски, и эти куски ставятся столбцами в матрицу. Так одномерный ряд превращается в двумерную матрицу.
2. Разложить матрицу методом сингулярного разложения SVD.
SVD (Singular Value Decomposition) — способ разложить любую матрицу на произведение трёх матриц: двух поворотов и растяжения между ними. Растяжение задаётся набором чисел — сингулярных значений, которые показывают, насколько сильно данные вытянуты вдоль каждого независимого направления.
Это разложение можно переписать как сумму простейших матриц, каждая со своим весом. И это не какое-то новое разложение, а та же матрица, просто записанная иначе: как произведение раскрывается в сумму слагаемых, подобно тому как (a + b)·c = a·c + b·c. Слагаемые автоматически отсортированы по важности: первые отражают мощные закономерности (тренд, сильные циклы), последние — шум.
3. Группировка простейших матриц. Простейших матриц получается много, и по отдельности они не нужны. Их надо объединить в группы: какие относятся к тренду, какие к одному циклу, какие к другому, а какие — к шуму. Понять это помогает вид матриц и матрица корреляции: сильно связанные между собой матрицы описывают одну и ту же закономерность и объединяются в группу.
4. Восстановление. Каждую группу матриц преобразуем обратно во временной ряд. В итоге исходный ряд оказывается разложен на понятные слагаемые — тренд, периодичности и шум, которые в сумме дают оригинальный временной ряд.
Матрица траекторий
Первый шаг — построение матрицы траекторий. Я прохожу по временному ряду окном длины L, каждый раз сдвигая окно на одну позицию, и полученные векторы ставлю в столбцы. Из этих столбцов складывается матрица.
Размер окна L должен быть не больше половины длины ряда. При этом SSA лучше выделяет периодичность, когда в окно помещается несколько полных периодов. Я предполагаю, что в ряду есть годовая периодичность — это 52 недели. Поэтому выбрала L = 102: это два годовых периода и одновременно меньше половины ряда, в котором 242 замера. У получившейся матрицы траекторий на антидиагоналях стоят одинаковые значения — это её характерное свойство.

Визуализация матрицы траекторий.
Разложение матрицы на сумму простейших матриц
Дальше раскладываю матрицу траекторий методом сингулярного разложения (SVD) на сумму простейших матриц. Каждая такая матрица отвечает за свою закономерность в ряду, и все они отсортированы по важности — от мощных структур к слабому шуму.
Простейшие матрицы можно визуализировать: цветом выделяются области схожих значений. По этим узорам уже можно на глаз угадать природу компоненты. Плавный переход цвета говорит о тренде, «шахматный» узор — о периодичности, а мелкое хаотичное движение — о шуме. Размер «шахматных клеток» подсказывает период колебания: одинаковые клетки — одинаковая периодичность.

Визуализация первых простейших матриц.
Группировка простейших матриц
Чтобы понять, какие компоненты объединять, я построила матрицу корреляции. Информацию о тренде и сезонности несут только первые несколько компонент, остальное — шум. Поэтому имеет смысл рассмотреть подробнее корреляцию первых пятнадцати компонент.

Матрица W-корреляции первых 15 компонент.
По матрице корреляции я объединила компоненты так:
- Нулевая компонента не коррелирует с другими — оставляю её отдельно, это тренд.
- Первая и вторая компоненты слабо связаны с остальными — их тоже оставляю по отдельности.
- Третья и четвёртая компоненты сильно коррелируют друг с другом (0,97) — объединяю их в одну группу.
- Начиная с пятой компоненты корреляции размытые: каждая связана сразу со многими соседями (0,47–0,90), без чётких изолированных пар. Это признак шума, поэтому все компоненты с пятой и далее отношу к шуму.
Эту же схожесть видно и на визуализации простейших матриц: размеры «шахматных клеток» у компонент 3 и 4 примерно одинаковые, что говорит о схожей периодичности. При этом их клетки отличаются от компонент 0, 1 и 2. У компонент 1 и 2 клетки другого размера, а у нулевой компоненты их вообще нет — это тренд.
Восстановление ряда: тренд, периодичность, шум
Теперь восстанавливаю из простейших матриц временной ряд по группам: компоненты F₀, F₁, F₂ по отдельности, F₃–F₄ объединённой парой, а всё остальное — шум. В сумме эти группы дают исходный ряд.

График разложения ряда на тренд, компоненты и шум.
Выводы: как изменились цены на мужские футболки
Средняя реальная цена на мужские футболки имеет растущий линейный тренд — на это указывает трендовая компонента F₀. Кроме тренда, у цены есть ещё несколько составляющих:
- медленная периодическая компонента F₁;
- периодическая компонента с периодом около 10–11 месяцев (F₂);
- периодическая компонента с периодом около 12 месяцев (F₃–F₄), то есть годовая сезонность.
Вклад всех этих компонент в цену небольшой — до 3%. Они колеблются в пределах ±10 рублей при цене около 400 рублей, поэтому погоды не делают, а основную динамику задаёт именно тренд.

График периодических компонент F₁, F₂, F₃–F₄ крупным планом.
❗️ Вывод: основываясь на данных Росстата, средняя цена на мужские футболки росла практически линейно и выросла на 20% за период с 10 января 2022 года по 24 августа 2026 года. Это реальный рост, очищенный от инфляции.

График трендовой компоненты F₀.
👉 Ссылка на пайтон-ноутбук с кодом.
👉 Ссылка на источники данных: Росстат, раздел «Цены, инфляция».