Пакет sophisthse предназначен для скачивания временных рядов с sophist.hse.ru.

# Список актуальных доступных таблиц
sophisthse_tables()
##   [1] "POPNUM_Y"          "POPFER_Y"          "POPMOR_Y"         
##   [4] "UNEMPL_Y"          "UNEMPL_Q"          "UNEMPL_M"         
##   [7] "UNEMPL_Y_SH"       "UNEMPL_Q_SH"       "UNEMPL_M_SH"      
##  [10] "EMPLDEC_Y"         "EMPLDEC_Q"         "EMPLDEC_M"        
##  [13] "GDPVA2_EEA_Y"      "GDPVA_EEA_Y"       "GDPVA_Y"          
##  [16] "GDPI_Y"            "GDPS_Y"            "GDPVA2_EEA_Y_DIRI"
##  [19] "GDPVA_EEA_Y_DIRI"  "GDPVA_Y_DIRI"      "GDPS_Y_DIRI"      
##  [22] "GDP_Y_ID"          "GDPEA_Q"           "GDP_Q_I"          
##  [25] "BBR_EA2_Y_I"       "BBR_EA2_Q_I"       "BBR_EA2_M_I"      
##  [28] "BBR_EA_Y_I"        "BBR_EA_Q_I"        "BBR_EA_M_I"       
##  [31] "IP2_EA_Y"          "IP2_EA_Q"          "IP2_EA_M"         
##  [34] "IP2_BEA_Y"         "IP2_BEA_Q"         "IP2_BEA_M"        
##  [37] "IP2_CEA_Y"         "IP2_CEA_Q"         "IP2_CEA_M"        
##  [40] "IP2_DEA_Y"         "IP2_DEA_Q"         "IP2_DEA_M"        
##  [43] "IP2_EEA_Y"         "IP2_EEA_Q"         "IP2_EEA_M"        
##  [46] "IP_EA_Y"           "IP_EA_Q"           "IP_EA_M"          
##  [49] "IP_CEA_Y"          "IP_CEA_Q"          "IP_CEA_M"         
##  [52] "IP_DEA_Y"          "IP_DEA_Q"          "IP_DEA_M"         
##  [55] "IP_EEA_Y"          "IP_EEA_Q"          "IP_EEA_M"         
##  [58] "IND_Y"             "IND_Q_I"           "IND_M_I"          
##  [61] "IND_Y_DIRI"        "IMQ3_C"            "MQEN3"            
##  [64] "MCLP3"             "ECOG3"             "ENGC3"            
##  [67] "MEEP3"             "MMET3"             "OMAQ3"            
##  [70] "IPDC3"             "MFBT3"             "MTP3"             
##  [73] "MWDD3"             "MLPP3"             "MWWD3"            
##  [76] "PPPR3"             "PPRM3"             "CPPNF3"           
##  [79] "CCPM3"             "FARM3"             "MRP3"             
##  [82] "MPP3"              "MONMP3"            "BMPM3"            
##  [85] "FMPEM3"            "MEPM3"             "OMCM3"            
##  [88] "EMAM3"             "RTCEP3"            "MPOI3"            
##  [91] "MPPOI3"            "MVTST3"            "IEGW3"            
##  [94] "IPCDE3"            "IMQ2_C"            "MQEN2"            
##  [97] "MCLP2"             "ECOG2"             "ENGC2"            
## [100] "MEEP2"             "MMET2"             "OMAQ2"            
## [103] "IPDC2"             "MFBT2"             "MTP2"             
## [106] "MWDD2"             "MLPP2"             "MWWD2"            
## [109] "PPPR2"             "PPRM2"             "CPPNF2"           
## [112] "CCPM2"             "FARM2"             "MRP2"             
## [115] "MPP2"              "MONMP2"            "BMPM2"            
## [118] "FMPEM2"            "MEPM2"             "OMCM2"            
## [121] "EMAM2"             "RTCEP2"            "MPOI2"            
## [124] "MPPOI2"            "MVTST2"            "RTLR2"            
## [127] "MPF2"              "NECM2"             "IEGW2"            
## [130] "IPCDE2"            "PROM_C"            "ELEKTRO_C"        
## [133] "TEK_C"             "TOPL_C"            "OILMIN_C"         
## [136] "OILREF_C"          "GAZ_C"             "UGOL_C"           
## [139] "CHMET_C"           "CVETMET_C"         "MASH_C"           
## [142] "CHIM_C"            "LES_C"             "STR_C"            
## [145] "PISH_C"            "LEG_C"             "MUK_C"            
## [148] "STEK_C"            "AGR_Y_DIRI"        "AGR_Q_I"          
## [151] "AGR_M_I"           "CNSTR_Y"           "CNSTR_Q"          
## [154] "CNSTR_M"           "CONSTR_Y_DIRI"     "CONSTR_Q_I"       
## [157] "CONSTR_M_I"        "CONSTR_Y_NAT"      "CONSTR_Q_NAT"     
## [160] "CONSTR_M_NAT"      "TRP_Y_CARG"        "TRP_Q_CARG"       
## [163] "TRP_M_CARG"        "TRP_Y_PASS_DIRI"   "TRP_Q_PASS_DIRI"  
## [166] "TRP_M_PASS_DIRI"   "RTRD_Y"            "RTRD_Q_I"         
## [169] "RTRD_M_I"          "RTRD_Y_DIRI"       "WAG_Y"            
## [172] "WAG_Q"             "WAG_M"             "HHI_Y_DIRI"       
## [175] "HHI_Q_I"           "HHI_M_I"           "INVFC_Y"          
## [178] "INVFC_Q"           "INVFC_M"           "INVFC_Y_DIRI"     
## [181] "INVFC_Q_I"         "INVFC_M_I"         "INVFOR_Y"         
## [184] "INVFOR_Q"          "CPI_Y_CHI"         "CPI_Q_CHI"        
## [187] "CPI_M_CHI"         "PPI_EA_Y"          "PPI_EA_Q"         
## [190] "PPI_EA_M"          "PPI_Y_CHI"         "PPI_Q_CHI"        
## [193] "PPI_M_CHI"         "CONI_Y_CHI"        "CONI_Q_CHI"       
## [196] "CONI_M_CHI"        "CTI_Y_CHI"         "CTI_Q_CHI"        
## [199] "CTI_M_CHI"         "M_Y"               "M_Q"              
## [202] "M_M"               "GOV_Y"             "GOV_Q"            
## [205] "GOV_M"             "FINMAR_Y"          "FINMAR_Q"         
## [208] "FINMAR_M"          "FINENT_Y"          "FINENT_Q"         
## [211] "FINENT_M"          "EX_Y"              "EX_Q"             
## [214] "EX_M"              "IM_Y"              "IM_Q"             
## [217] "IM_M"

Загрузка нужного ряда данных и его описание:

df <- sophisthse("RTRD_M_I")
head(df)
##          RTRD_M_DIRI RTRD_M_DIRI_SA RTRD_M
## Jan 1994       100.0          107.1     NA
## Feb 1994       100.0          108.2     NA
## Mar 1994       117.7          109.0     NA
## Apr 1994       107.6          109.4     NA
## May 1994       102.0          109.8     NA
## Jun 1994       106.6          110.7     NA
## attr(,"metadata")
## # A tibble: 3 x 7
##   tsname  unit   fullname     methodology     source     comment      freq
##   <chr>   <chr>  <chr>        <chr>           <chr>      <chr>       <dbl>
## 1 RTRD_M… 1994.… Индекс реал… Индекс физичес… Федеральн… Пересчет и…    12
## 2 RTRD_M… 1994.… Индекс реал… Сезонное сглаж… Рассчитан… -              12
## 3 RTRD_M  млрд.… Оборот розн… Оборот розничн… Федеральн… -              12

Получили таблицу, в которой присутствует три ряда: Индекс реального оборота розничной торговли (RTRD_M_DIRI), Индекс реального оборота розничной торговли, с поправкой на сезонность (RTRD_M_DIRI_SA), Оборот розничной торговли в текущих ценах (RTRD_M).

Извлекаем один:

torg <- df[, 'RTRD_M'] # извлекаем 3-й столбец
##        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov
## 1994    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA    NA
## 1995  27.3  28.1  32.9  33.4  39.4  41.7  43.7  47.5  49.4  52.7  55.1
## 1996  57.5  53.3  57.1  58.6  58.2  58.9  60.1  61.2  62.5  63.1  64.0
## 1997  67.9  63.4  66.9  68.4  67.3  67.1  68.0  70.5  73.4  73.7  75.2
## 1998  73.8  67.9  70.6  70.9  70.7  70.0  71.6  81.1 106.5 103.8 110.0
## 1999 119.7 120.9 132.0 133.1 136.5 139.8 143.3 154.9 158.5 164.4 167.4
## 2000 167.0 164.9 176.6 174.8 176.6 181.6 186.5 198.9 201.6 209.8 215.5
## 2001 212.3 214.3 232.1 235.4 241.6 245.4 248.0 263.6 263.9 275.1 281.1
##        Dec
## 1994    NA
## 1995  60.7
## 1996  72.6
## 1997  88.1
## 1998 136.5
## 1999 196.7
## 2000 252.9
## 2001 327.1

Временной ряд:

torg %>%
  autoplot() + 
    labs(y = 'млрд.руб.', x = NULL, title = 'Оборот розничной торговли в текущих ценах') +
    scale_x_continuous(breaks = seq(1995, 2019, by = 5)) + 
  geom_line(color = "#CC0000")

По графику видно, что объем розничной торговли увеличивается с каждым годом и приобретает все больший разброс в значениях. Здесь представлена мультипликативная сезонность. Декомпозируем данные на основе скользящего среднего (decompose).

torg_d <- torg %>%
  decompose(type = 'multiplicative')

autoplot(torg_d) +
  labs(title = 'Декомпозиция мультипликативного ряда')

Тренд - устойчивая долговременная тенденция изменения значений временного ряда, закономерно изменяющаяся во времени.

autoplot(torg, series = 'Оригинал') +
  autolayer(trendcycle(torg_d), series = 'Тренд') +
  scale_color_manual(values = c("#CC99FF", "#CC0000")) +
     labs(y = 'млрд.руб.', x = NULL, title = 'Оборот розничной торговли в текущих ценах',
     color = NULL)

Сезонная составляющая - периодически повторяющаяся компонента временного ряда, на которую влияют погодные условия, социальные привычки, религиозные традиции и прочее.

autoplot(seasonal(torg_d)) +
  labs(y = NULL, x = NULL, title = 'Сезонные коэффициенты', color = NULL)

autoplot(torg, series = 'Оригинал') +
  autolayer(trendcycle(torg_d) * seasonal(torg_d), series = 'Модель') + 
  scale_colour_manual(values = c("#CC99FF", "#CC0000")) +
  labs(y = NULL, color = NULL, x = NULL, title = 'Тренд с учетом сезонности')

Модель очень близка к оригиналу, но не повторяет его.

Остаток (нерегулярный компонент) ряда - величина, показывающая нерегулярную (не описываемую трендом или сезонностью) составляющую исходного ряда в определённом временном интервале.

autoplot(remainder(torg_d)) +
  geom_line(color = "#330033") +
  labs(y = NULL, x = NULL,
     title = 'Нерегулярный компонент ряда')

autoplot(torg, series = 'Оригинал') +
  autolayer(trendcycle(torg_d) * seasonal(torg_d)*remainder(torg_d), series = 'Модель') + 
  scale_colour_manual(values = c("#CC99FF", "#CC0000")) +
  labs(y = NULL, color = NULL, x = NULL, title = 'Тренд с учетом сезонности и остатка')

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


Источники: