Пакет 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 = 'Тренд с учетом сезонности и остатка')
Применение метода классической декомпозиции не позволило учесть изменения величины сезонных колебаний, что вызвало наличие остатков. Однако, построенный тренд с учетом сезонности оказался близок к оригиналу.
Источники: