Введение

В этом блокноте разобран пример удаления эффекта инфляции при анализе временных рядов. Источником данных об инфляции является Единый архив социально-экономических данных НИУ ВШЭ.

library(tidyverse) # ggplot2 и трансформация данных
library(forecast) # анализ временных рядов и прогнозирование
library(sophisthse) # Загрузка временных рядов из базы Sophist

Данные об обороте розничной торговли России

Рассмотрим в качестве примера ряд: “Оборот розничной торговли в текущих ценах (RTRD_M)”

retail <- sophisthse('RTRD_M') %>%
  .[, 'RTRD_M'] %>%
  window(start = c(1995, 1))

autoplot(retail) +
  labs(title = 'Оборот розничной торговли в текущих ценах',
       x = NULL, y = 'млрд руб',
       caption = 'Источник: ЕАЭСД, http://sophist.hse.ru, ряд RTRD_M')

За период с 1995 года оборот (в текущих ценах) вырос в 100 раз. Однако для российской экономики характерна инфляция, поэтому в значительной степени увеличение оборота связано с ростом цен на товары, а не увеличением благосостояния и покупательской способности людей.

Индекс-дефлятор

Чтобы исключить эффект инфляции при анализе временных рядов применяется корректировка данных ряда, основанная на использовании индекса-дефлятора. В качестве такого индекса можно использовать индекс потребительских цен, который агрегированно отражает рост цен на потребительские товары.

Ежемесячный индекс потребительских цен в ЕАЭСД имеет обозначение: CPI_M_CHI. Загрузим эти данные.

cpi <- sophisthse('CPI_M_CHI')
sophisthse_metadata(cpi)
## # A tibble: 1 x 7
##   tsname  unit     fullname     methodology        source     comment  freq
##   <chr>   <chr>    <chr>        <chr>              <chr>      <chr>   <dbl>
## 1 CPI_M_~ в % к п~ Индекс потр~ Индекс потребител~ Федеральн~ -          12
autoplot(cpi) + labs(x = NULL)

Индекс потребительских цен в базе - цепной, т.е. его значения - это процентное изменение по сравнению с предыдущим периодом. В таком виде данные использовать неудобно, требуется пересчитать значения индекса к некоторому базовому периоду. Поскольку данные об обороте розничной торговли начинаются с января 1995 года, в качестве базового периода для индекса-дефлятора также выберем январь 1995 года (cpi = 100). Чтобы пересчитать остальные значения, требуется посчитать произведение с нарастающим итогом по всем значениям индекса при помощи функции cumprod(). К сожалению, эта функция выдает на выходе обычный вектор, а не временной ряд, поэтому потребуется преобразовать результат к временному ряду при помощи функции ts().

# Удаление лишних данных
cpi_subset <- cpi %>% window(start = c(1995, 1))

# Значение в базовом периоде = 100
window(cpi_subset, end = c(1995, 1)) <- 100

# Вычисляем индекс-дефлятор как произведение цепных индексов
cpi_base <- cumprod(cpi_subset/100) %>%
  ts(start = c(1995, 1), frequency = 12)

# Визуализация индекса-дефлятора
autoplot(cpi_base) + 
  labs(x = NULL, 
       title = 'Индекс-дефлятор цен: 1995.1 = 1') +
  scale_x_continuous(minor_breaks = start(cpi_base):end(cpi_base))
## Warning in start(cpi_base):end(cpi_base): numerical expression has 2
## elements: only the first used

## Warning in start(cpi_base):end(cpi_base): numerical expression has 2
## elements: only the first used
## Scale for 'x' is already present. Adding another scale for 'x', which
## will replace the existing scale.

Рост оборота розничной торговли с учетом инфляции

Получив индекс-дефлятор, можем исключить эффект инфляции при анализе данных об обороте розничной торговли.

autoplot(retail/cpi_base) +
  labs(title = 'Рост оборота розничной торговли в ценах 1995 года',
       x = NULL, y = 'млрд. руб')

После исключения эффекта инфляции видно, что рост оборота в отрасли значительно скромнее - порядка 2 раз, с 1995 года.

Для сравнения, построим исходный и скорректированный ряды в одном масштабе:

autoplot(retail, series = 'в текущих ценах') +
  autolayer(retail/cpi_base, series = 'в ценах 1995 г') +
  labs(title = 'Оборот розничной торговли',
       x = NULL, y = 'млрд руб', color = NULL,
       caption = 'Источник: ЕАЭСД, http://sophist.hse.ru')