Abstract
This is an undergrad student level instruction for class use.This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Séries Temporais: decomposição clássica e a abordagem X11. Campo Grande-MS,Brasil: RStudio/Rpubs, 2019. Disponível em http://rpubs.com/amrofi/decompose_x11_varejoms.
Neste arquivo utilizo a série do Índice de volume de vendas no varejo
Total de Mato Grosso do Sul, série mensal a partir de jan/2000 até
maio/2026 obtida no Sidra-IBGE, https://sidra.ibge.gov.br/tabela/8880#resultado.
Portanto, são 317 observações mensais.
É um exercício rápido de decomposição clássica nos componentes de
tendência, sazonalidade e irregularidades. O modelo aditivo é descrito
como \[
Y = T + S + I
\] e o multiplicativo \[
Y = T * S * I
\] em que \(Y\) é a série
analisada; \(T\) é a tendência
(rolling mean de 12 meses); \(S\) é a sazonalidade; e \(I\) é a irregularidade.
Sugerimos assistir, para maiores esclarecimentos acerca dos aspectos
teoricos do modelo de decomposição, ao vídeo Decomposição
de séries temporais, de nossa autoria.
Eu gerei a estrutura idêntica pela função dput().
# uso a opção abaixo para quando a internet por algum motivo falha
varejoms_2022<-structure(list(Mês = structure(c(946684800, 949363200, 951868800,
954547200, 957139200, 959817600, 962409600, 965088000, 967766400,
970358400, 973036800, 975628800, 978307200, 980985600, 983404800,
986083200, 988675200, 991353600, 993945600, 996624000, 999302400,
1001894400, 1004572800, 1007164800, 1009843200, 1012521600, 1014940800,
1017619200, 1020211200, 1022889600, 1025481600, 1028160000, 1030838400,
1033430400, 1036108800, 1038700800, 1041379200, 1044057600, 1046476800,
1049155200, 1051747200, 1054425600, 1057017600, 1059696000, 1062374400,
1064966400, 1067644800, 1070236800, 1072915200, 1075593600, 1078099200,
1080777600, 1083369600, 1086048000, 1088640000, 1091318400, 1093996800,
1096588800, 1099267200, 1101859200, 1104537600, 1107216000, 1109635200,
1112313600, 1114905600, 1117584000, 1120176000, 1122854400, 1125532800,
1128124800, 1130803200, 1133395200, 1136073600, 1138752000, 1141171200,
1143849600, 1146441600, 1149120000, 1151712000, 1154390400, 1157068800,
1159660800, 1162339200, 1164931200, 1167609600, 1170288000, 1172707200,
1175385600, 1177977600, 1180656000, 1183248000, 1185926400, 1188604800,
1191196800, 1193875200, 1196467200, 1199145600, 1201824000, 1204329600,
1207008000, 1209600000, 1212278400, 1214870400, 1217548800, 1220227200,
1222819200, 1225497600, 1228089600, 1230768000, 1233446400, 1235865600,
1238544000, 1241136000, 1243814400, 1246406400, 1249084800, 1251763200,
1254355200, 1257033600, 1259625600, 1262304000, 1264982400, 1267401600,
1270080000, 1272672000, 1275350400, 1277942400, 1280620800, 1283299200,
1285891200, 1288569600, 1291161600, 1293840000, 1296518400, 1298937600,
1301616000, 1304208000, 1306886400, 1309478400, 1312156800, 1314835200,
1317427200, 1320105600, 1322697600, 1325376000, 1328054400, 1330560000,
1333238400, 1335830400, 1338508800, 1341100800, 1343779200, 1346457600,
1349049600, 1351728000, 1354320000, 1356998400, 1359676800, 1362096000,
1364774400, 1367366400, 1370044800, 1372636800, 1375315200, 1377993600,
1380585600, 1383264000, 1385856000, 1388534400, 1391212800, 1393632000,
1396310400, 1398902400, 1401580800, 1404172800, 1406851200, 1409529600,
1412121600, 1414800000, 1417392000, 1420070400, 1422748800, 1425168000,
1427846400, 1430438400, 1433116800, 1435708800, 1438387200, 1441065600,
1443657600, 1446336000, 1448928000, 1451606400, 1454284800, 1456790400,
1459468800, 1462060800, 1464739200, 1467331200, 1470009600, 1472688000,
1475280000, 1477958400, 1480550400, 1483228800, 1485907200, 1488326400,
1491004800, 1493596800, 1496275200, 1498867200, 1501545600, 1504224000,
1506816000, 1509494400, 1512086400, 1514764800, 1517443200, 1519862400,
1522540800, 1525132800, 1527811200, 1530403200, 1533081600, 1535760000,
1538352000, 1541030400, 1543622400, 1546300800, 1548979200, 1551398400,
1554076800, 1556668800, 1559347200, 1561939200, 1564617600, 1567296000,
1569888000, 1572566400, 1575158400, 1577836800, 1580515200, 1583020800,
1585699200, 1588291200, 1590969600, 1593561600, 1596240000, 1598918400,
1601510400, 1604188800, 1606780800, 1609459200, 1612137600, 1614556800,
1617235200, 1619827200, 1622505600, 1625097600, 1627776000, 1630454400,
1633046400, 1635724800, 1638316800, 1640995200, 1643673600, 1646092800,
1648771200, 1651363200, 1654041600, 1656633600, 1659312000, 1661990400,
1664582400, 1667260800, 1669852800, 1672531200, 1675209600, 1677628800,
1680307200, 1682899200, 1685577600, 1688169600, 1690848000, 1693526400,
1696118400, 1698796800, 1701388800, 1704067200, 1706745600, 1709251200,
1711929600, 1714521600, 1717200000, 1719792000, 1722470400, 1725148800,
1727740800, 1730419200, 1733011200, 1735689600, 1738368000, 1740787200,
1743465600, 1746057600, 1748736000, 1751328000, 1754006400, 1756684800,
1759276800, 1761955200, 1764547200, 1767225600, 1769904000, 1772323200,
1775001600, 1777593600), class = c("POSIXct", "POSIXt"), tzone = "UTC"),
varejoms_2022 = c(8.08726, 8.05285, 8.87878, 9.22292, 9.29175,
9.11968, 9.77354, 9.70471, 9.22292, 9.39499, 8.91319, 12.01044,
8.80995, 8.32816, 9.87678, 9.6703, 9.9112, 9.01644, 10.04885,
10.6683, 10.04885, 10.6683, 9.9112, 12.66431, 9.73913, 9.05085,
10.49623, 10.42741, 10.73713, 9.87678, 10.46182, 10.73713,
10.08327, 11.39099, 11.28775, 14.6259, 10.77154, 11.01244,
12.35458, 12.76755, 13.07727, 11.87279, 12.87079, 12.73314,
12.59548, 13.42141, 12.80196, 16.69073, 12.35458, 12.28576,
13.83438, 14.10969, 15.383, 14.6259, 16.07128, 15.31418,
15.24535, 16.17452, 15.45183, 21.74957, 14.8668, 14.66031,
17.17253, 16.8628, 17.55108, 16.58749, 18.13611, 17.65432,
17.48225, 17.68873, 17.31018, 24.12413, 16.65632, 15.93363,
17.92963, 17.75756, 18.96205, 17.65432, 18.37701, 19.3406,
18.99646, 19.78798, 19.51267, 25.98248, 18.44584, 18.44584,
20.40743, 20.30419, 22.12812, 20.64833, 21.06129, 21.5775,
21.30219, 22.43785, 22.57551, 30.28421, 22.64433, 21.54309,
23.2982, 23.33261, 25.08772, 23.22937, 25.50068, 25.87924,
25.43186, 27.11814, 24.88124, 33.7256, 26.49869, 22.33461,
24.88124, 25.22537, 27.11814, 25.15655, 26.5331, 26.67076,
26.25779, 28.46028, 27.59993, 36.78844, 28.15055, 26.49869,
29.66476, 29.14856, 31.41987, 29.28621, 30.4907, 29.87125,
30.45628, 31.93608, 30.80042, 42.56997, 30.52511, 29.35504,
32.10815, 32.65877, 36.27223, 32.65877, 34.24181, 33.79443,
33.14057, 35.37747, 35.17099, 47.62881, 37.71761, 35.75602,
38.9221, 36.75402, 39.98893, 39.30065, 39.98893, 41.88169,
41.12459, 44.04977, 44.8757, 54.51159, 45.83929, 41.91611,
46.66522, 44.56597, 47.49115, 44.80687, 48.1106, 48.28267,
47.07819, 50.45075, 51.89613, 67.31355, 51.00137, 47.38791,
50.20985, 50.72606, 54.47717, 49.41833, 51.75848, 52.92855,
52.03379, 56.74849, 56.64525, 72.16591, 55.85373, 50.03778,
55.68166, 54.75248, 57.19587, 54.16745, 57.33352, 56.67966,
54.51159, 60.08663, 59.0198, 76.19233, 56.95497, 53.82331,
58.5036, 56.81732, 59.15746, 56.61083, 59.0198, 57.7809,
55.88814, 58.95098, 60.91257, 76.26116, 59.28061, 54.45646,
57.99825, 55.84009, 58.1767, 56.25647, 58.29341, 60.15194,
60.36021, 59.641, 60.9048, 74.07934, 57.88598, 53.43484,
62.16572, 54.85668, 59.35817, 59.81062, 60.36437, 63.42607,
63.99756, 66.35103, 68.68178, 79.63475, 63.2806, 58.44752,
61.78688, 60.13546, 62.74632, 59.48465, 62.93183, 65.05181,
64.8418, 66.81777, 71.49391, 81.79571, 67.54694, 63.75461,
63.088, 53.61223, 63.75057, 64.04583, 66.60284, 70.1589,
74.24245, 80.42799, 80.94556, 91.15727, 72.68549, 69.21801,
76.29981, 74.62662, 80.43653, 76.8345, 90.91029, 87.72293,
88.17381, 93.42122, 93.55142, 106.84707, 84.7813, 84.81402,
95.42621, 94.92551, 101.81559, 99.16038, 104.73258, 103.44467,
101.53137, 104.26279, 103.5199, 121.58566, 94.61484, 92.17375,
101.9617, 99.34905, 101.88628, 99.45497, 103.70068, 105.45477,
107.92888, 108.965, 111.65595, 128.40961, 104.65797, 104.90476,
112.50722, 106.81307, 114.33497, 109.14151, 112.21131, 113.48524,
111.26311, 120.04339, 120.46722, 135.43413, 111.57071, 109.1719,
117.24231, 118.55443, 123.24018, 114.25778, 119.86609, 117.69651,
116.26685, 124.53461, 126.09211, 142.92153, 117.34711, 111.48763,
123.99372, 123.06564, 127.29538)), row.names = c(NA, -317L
), class = c("tbl_df", "tbl", "data.frame"))
class(varejoms_2022)
[1] "tbl_df" "tbl" "data.frame"
Inicialmente olharei as estatísticas descritivas da série. Em seguida
farei um plot básico da série e o plot pelo pacote
dygraphs, útil para ver os pontos de picos e momentos
específicos.
# estatisticas basicas
summary(varejoms_2022)
Mês varejoms_2022
Min. :2000-01-01 00:00:00 Min. : 8.053
1st Qu.:2006-08-01 00:00:00 1st Qu.: 18.996
Median :2013-03-01 00:00:00 Median : 46.665
Mean :2013-03-01 19:36:31 Mean : 50.118
3rd Qu.:2019-10-01 00:00:00 3rd Qu.: 67.314
Max. :2026-05-01 00:00:00 Max. :142.922
varejoms_2022<-ts(varejoms_2022$varejoms_2022, start=c(2000,1), frequency=12)
plot(varejoms_2022, main="Índice de volume de vendas no varejo Total de Mato Grosso do Sul",
xlab="Ano", ylab="Índice", col="blue", lwd=2, type="l")
# pelo pacote dygraph dá mais opções
library(dygraphs)
dygraph(varejoms_2022)
É possivel visualizar nos plots acima: sazonalidade (por exemplo, picos em dezembro de cada ano); a tendência aparentemente crescente até 2014 e decresce com a “crise” brasileira; e uma aparente não-estacionariedade (média e variância mudam no tempo). Em outra postagem aplicarei o teste de raiz unitária na série para avaliar a estacionariedade de modo mais explícito.
Farei as decomposicoes aditiva e multiplicativa pela função
decompose. Ela aplica uma rolling mean na
frequência da série (mensal será igual a 12 meses) obtendo a tendência
(trend), o fator sazonal médio (que será a componente da
sazonalidade) e o componente de irregularidade. Nos objetos
decomposicao.ad e decomposicao.mult estarão os vários componentes
calculados e que podem ser plotados.
decomposicao.ad<-decompose(varejoms_2022) # aditiva
decomposicao.mult<-decompose(varejoms_2022,type = "multiplicative") # multiplicativa
# grafico da decomposicao aditiva
plot(decomposicao.ad)
# grafico da decomposicao multiplicativa
plot(decomposicao.mult)
Podemos verificar que a série trend foi obtida da mesma
forma que uma rolling mean de 12 meses como o código abaixo
apresenta. O leitor pode verificar que é a mesma independente de ser
aditiva ou multiplicativa.
# obtendo a tendencia
library(fpp2)
tend<-ma(varejoms_2022, 12)
print(cbind(tend,decomposicao.ad$trend,decomposicao.mult$trend))
tend decomposicao.ad$trend decomposicao.mult$trend
Jan 2000 NA NA NA
Feb 2000 NA NA NA
Mar 2000 NA NA NA
Apr 2000 NA NA NA
May 2000 NA NA NA
Jun 2000 NA NA NA
Jul 2000 9.336198 9.336198 9.336198
Aug 2000 9.377781 9.377781 9.377781
Sep 2000 9.430836 9.430836 9.430836
Oct 2000 9.491060 9.491060 9.491060
Nov 2000 9.535511 9.535511 9.535511
Dec 2000 9.557020 9.557020 9.557020
Jan 2001 9.564190 9.564190 9.564190
Feb 2001 9.615810 9.615810 9.615810
Mar 2001 9.690374 9.690374 9.690374
Apr 2001 9.777842 9.777842 9.777842
May 2001 9.872480 9.872480 9.872480
Jun 2001 9.941309 9.941309 9.941309
Jul 2001 10.007269 10.007269 10.007269
Aug 2001 10.076097 10.076097 10.076097
Sep 2001 10.132020 10.132020 10.132020
Oct 2001 10.189376 10.189376 10.189376
Nov 2001 10.255336 10.255336 10.255336
Dec 2001 10.325598 10.325598 10.325598
Jan 2002 10.378652 10.378652 10.378652
Feb 2002 10.398727 10.398727 10.398727
Mar 2002 10.403029 10.403029 10.403029
Apr 2002 10.434575 10.434575 10.434575
May 2002 10.522044 10.522044 10.522044
Jun 2002 10.661133 10.661133 10.661133
Jul 2002 10.785883 10.785883 10.785883
Aug 2002 10.910633 10.910633 10.910633
Sep 2002 11.069797 11.069797 11.069797
[ reached 'max' / getOption("max.print") -- omitted 284 rows ]
# plot conjunto com função autoplot do fpp2
autoplot(varejoms_2022, series="Dados") +
autolayer(tend, series="tend") +
xlab("Ano") + ylab("Índice") +
ggtitle("Índice de volume de vendas no varejo Total
de Mato Grosso do Sul") +
scale_colour_manual(values=c("Dados"="grey50","tend"="red"),
breaks=c("Dados","tend"))
Um método mais comum (mais atual, pois o de decomposição clássico é
dos anos 1920) é por meio da metodologia do Census Bureau dos Estados
Unidos da América, e chamado de X11 (US BUREAU OF THE CENSUS, 2013). Em
outra postagem farei um exemplo de análise do método X13-ARIMA SEATS, a
versão mais recente que utiliza outras abordagens além do X11.
O primeiro passo é chamar o pacote seasonal (SAX e
EDDELBUETTEL, 2018). Crio o objeto fit que contém as saídas da função
seas(x11="") com a opção X11 aplicada sobre a série
varejoms. Na sequência, faço o plot pela função autoplot do
pacote fpp2 (HYNDMAN, 2018).
# decomposição pelo X11 do Census Bureau
library(seasonal)
fit<- seas(varejoms_2022,x11="")
#varejoms_2022 %>% seas(x11="") -> fit # uso a serie 'varejoms_2022', aplico o 'seas' x11 e gero 'fit'
library(fpp2)
autoplot(fit) +
ggtitle("Decomposição X11 de Mato Grosso do Sul
do Índice de volume de vendas no varejo total")
names(fit) # para entender o que esta dentro de fit
[1] "series" "udg" "data" "err" "est"
[6] "model" "fivebestmdl" "wdir" "iofile" "call"
[11] "list" "x" "spc"
Dentro do objeto fit, existe o local em que estão as séries
(fit$series) e dados (fit$data, que gerarão os
gráficos). Um print da parte armazenada em fit$series
mostrará as várias séries em sua nomenclatura como consta no documento
original do US Census Bureau. Para melhor entender as legendas do X11,
recomendo usar o manual de referência do X13-ARIMA SEATS (US BUREAU OF
THE CENSUS, 2013). Descrevo abaixo apenas os códigos que aparecem nas
saídas do seas.
Legendas do X11
# fit$data[,'final'] é a fit$data[,'seasonaladj'] É A SÉRIE COM AJUSTE SAZONAL
# final = série com ajuste sazonal = dessazonalizada
# d10 = seasonal É O COMPONENTE SAZONAL - fator sazonal
# d11 = seasonaladj É A SÉRIE DESSAZONALIZADA
# d12 = trend É A TENDÊNCIA = ROLLING MEAN
# d13 = irregular É A IRREGULARIDADE
# d16 = adjustfac É O FATOR SAZONAL AJUSTADO PARA SAZONALIDADE E TRADING DAYS
# e18 = final adjustment ratios (original series / seasonally adjusted series)
# d16 = e18 (parece que sim)
# rsd = residuos estimados
print(fit$series)
$d10
Jan Feb Mar Apr May Jun Jul
2000 0.9314775 0.8839755 1.0059871 1.0072874 1.0122657 0.9499938 1.0063704
2001 0.9291849 0.8847396 1.0056420 1.0056404 1.0149140 0.9504655 1.0070395
2002 0.9252300 0.8854216 1.0056452 1.0026590 1.0192969 0.9507674 1.0073798
2003 0.9219157 0.8857736 1.0034629 0.9975598 1.0253524 0.9506577 1.0065054
2004 0.9190336 0.8870957 0.9995464 0.9914834 1.0299394 0.9503326 1.0036381
2005 0.9206137 0.8873454 0.9928148 0.9843347 1.0331533 0.9492497 1.0002312
2006 0.9253003 0.8877760 0.9862050 0.9780491 1.0332956 0.9480955 0.9961152
2007 0.9344542 0.8883120 0.9808447 0.9723261 1.0335471 0.9471427 0.9911386
Aug Sep Oct Nov Dec
2000 1.0018798 0.9639494 1.0209666 0.9587986 1.2584158
2001 1.0000361 0.9641408 1.0202475 0.9596795 1.2612252
2002 0.9967472 0.9645409 1.0187074 0.9616328 1.2670767
2003 0.9948421 0.9640072 1.0161385 0.9651018 1.2758497
2004 0.9930037 0.9652137 1.0132574 0.9689518 1.2862503
2005 0.9930307 0.9662593 1.0116109 0.9720833 1.2955307
2006 0.9932134 0.9675969 1.0109486 0.9748792 1.3000279
2007 0.9927991 0.9673615 1.0119595 0.9780153 1.2988986
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
$d11
Jan Feb Mar Apr May Jun
2000 8.761988 8.839694 8.862387 9.105831 9.224902 9.515349
2001 9.528622 9.497165 9.759727 9.679903 9.725894 9.385713
2002 10.483420 10.313348 10.326265 10.513403 10.478679 10.428370
2003 11.622662 12.543572 12.542124 12.675302 12.571426 12.674404
2004 13.250649 13.619233 13.952689 14.062272 15.073113 15.385353
2005 16.297226 16.669051 17.064128 17.110785 17.172969 17.471307
2006 18.197120 18.108053 18.255511 18.056233 18.442486 18.457157
2007 19.838060 20.950450 20.494343 21.206418 21.322926 21.569401
Jul Aug Sep Oct Nov Dec
2000 9.800938 9.647160 9.466355 9.302316 9.294605 9.532437
2001 10.087328 10.612032 10.462880 10.508687 10.236840 10.133571
2002 10.436930 10.618026 10.609127 11.136393 11.613594 11.668794
2003 12.735665 12.783523 13.083986 13.139058 13.316150 13.147240
2004 15.783884 15.590110 15.792072 15.943395 15.969208 16.820705
2005 18.109771 17.866813 17.933684 17.646426 17.801583 18.354583
2006 18.618252 19.393666 19.424362 19.786941 20.012026 19.961681
2007 21.481118 21.620153 22.106033 22.283166 22.880093 23.529603
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
$d12
Jan Feb Mar Apr May Jun
2000 8.729934 8.818973 8.937742 9.088338 9.281884 9.473317
2001 9.516152 9.591589 9.643280 9.701564 9.788934 9.913758
2002 10.334553 10.367486 10.408036 10.427085 10.445760 10.451554
2003 12.100931 12.354764 12.537730 12.629267 12.642395 12.663223
2004 13.335692 13.569467 13.947942 14.447619 14.952758 15.361951
2005 16.467164 16.699440 16.909188 17.102790 17.302602 17.514130
2006 18.182973 18.198474 18.179064 18.192392 18.306028 18.512143
2007 20.162440 20.400463 20.731867 21.068255 21.306319 21.456915
Jul Aug Sep Oct Nov Dec
2000 9.583263 9.566895 9.473628 9.390222 9.370870 9.424314
2001 10.093871 10.280064 10.380896 10.400379 10.376490 10.341164
2002 10.458687 10.562697 10.793290 11.100845 11.445334 11.786968
2003 12.734756 12.866480 13.022320 13.132681 13.188640 13.235799
2004 15.622985 15.732903 15.804900 15.918354 16.065890 16.252783
2005 17.716919 17.817875 17.830947 17.855531 17.947195 18.089250
2006 18.808703 19.165419 19.510203 19.753486 19.897322 20.002366
2007 21.575011 21.714726 21.991099 22.439398 22.950140 23.352466
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
$d13
Jan Feb Mar Apr May Jun Jul
2000 1.0036718 1.0023496 0.9915689 1.0019248 0.9938609 1.0044368 1.0227141
2001 1.0013104 0.9901556 1.0120755 0.9977672 0.9935601 0.9467361 0.9993519
2002 1.0144048 0.9947781 0.9921435 1.0082782 1.0031514 0.9977818 0.9979197
2003 0.9604767 1.0152822 1.0003505 1.0036451 0.9943865 1.0008829 1.0000714
2004 0.9936229 1.0036675 1.0003404 0.9733280 1.0080490 1.0015234 1.0102989
2005 0.9896802 0.9981803 1.0091630 1.0004675 0.9925079 0.9975550 1.0221738
2006 1.0007780 0.9950314 1.0042052 0.9925156 1.0074543 0.9970297 0.9898744
2007 0.9839117 1.0269595 0.9885430 1.0065579 1.0007794 1.0052424 0.9956481
Aug Sep Oct Nov Dec
2000 1.0083899 0.9992323 0.9906386 0.9918614 1.0114727
2001 1.0322924 1.0078976 1.0104139 0.9865417 0.9799255
2002 1.0052381 0.9829373 1.0032023 1.0147012 0.9899742
2003 0.9935524 1.0047354 1.0004856 1.0096682 0.9933091
2004 0.9909239 0.9991884 1.0015731 0.9939821 1.0349431
2005 1.0027466 1.0057617 0.9882890 0.9918867 1.0146680
2006 1.0119093 0.9956002 1.0016936 1.0057648 0.9979660
2007 0.9956448 1.0052264 0.9930376 0.9969479 1.0075854
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
$d16
Jan Feb Mar Apr May Jun Jul
2000 0.9229937 0.9109874 1.0018497 1.0128587 1.0072464 0.9584178 0.9972045
2001 0.9245776 0.8769101 1.0119934 0.9990080 1.0190529 0.9606558 0.9961855
2002 0.9290031 0.8775860 1.0164595 0.9918206 1.0246645 0.9471068 1.0023848
2003 0.9267705 0.8779349 0.9850468 1.0072778 1.0402376 0.9367533 1.0106100
2004 0.9323754 0.9020890 0.9915207 1.0033720 1.0205589 0.9506379 1.0182082
2005 0.9122288 0.8794928 1.0063526 0.9855071 1.0220178 0.9494132 1.0014544
2006 0.9153273 0.8799195 0.9821489 0.9834588 1.0281721 0.9565027 0.9870427
2007 0.9298208 0.8804508 0.9957592 0.9574549 1.0377619 0.9572973 0.9804560
Aug Sep Oct Nov Dec
2000 1.0059655 0.9742842 1.0099625 0.9589638 1.2599549
2001 1.0053023 0.9604287 1.0151887 0.9681894 1.2497381
2002 1.0112172 0.9504335 1.0228617 0.9719429 1.2534200
2003 0.9960588 0.9626638 1.0214895 0.9613860 1.2695235
2004 0.9823010 0.9653800 1.0144966 0.9676015 1.2930237
2005 0.9881068 0.9748276 1.0023973 0.9723955 1.3143382
2006 0.9972638 0.9779709 1.0000525 0.9750472 1.3016178
2007 0.9980272 0.9636369 1.0069417 0.9866879 1.2870684
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
$e18
Jan Feb Mar Apr May Jun Jul
2000 0.9229937 0.9109874 1.0018497 1.0128587 1.0072464 0.9584178 0.9972045
2001 0.9245776 0.8769101 1.0119934 0.9990080 1.0190529 0.9606558 0.9961855
2002 0.9290031 0.8775860 1.0164595 0.9918206 1.0246645 0.9471068 1.0023848
2003 0.9267705 0.8779349 0.9850468 1.0072778 1.0402376 0.9367533 1.0106100
2004 0.9323754 0.9020890 0.9915207 1.0033720 1.0205589 0.9506379 1.0182082
2005 0.9122288 0.8794928 1.0063526 0.9855071 1.0220178 0.9494132 1.0014544
2006 0.9153273 0.8799195 0.9821489 0.9834588 1.0281721 0.9565027 0.9870427
2007 0.9298208 0.8804508 0.9957592 0.9574549 1.0377619 0.9572973 0.9804560
Aug Sep Oct Nov Dec
2000 1.0059655 0.9742842 1.0099625 0.9589638 1.2599549
2001 1.0053023 0.9604287 1.0151887 0.9681894 1.2497381
2002 1.0112172 0.9504335 1.0228617 0.9719429 1.2534200
2003 0.9960588 0.9626638 1.0214895 0.9613860 1.2695235
2004 0.9823010 0.9653800 1.0144966 0.9676015 1.2930237
2005 0.9881068 0.9748276 1.0023973 0.9723955 1.3143382
2006 0.9972638 0.9779709 1.0000525 0.9750472 1.3016178
2007 0.9980272 0.9636369 1.0069417 0.9866879 1.2870684
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
$rsd
Jan Feb Mar Apr May
2000 9.143991e-04 -3.610172e-03 -5.279395e-03 1.453978e-02 -1.491622e-03
2001 1.571109e-03 -1.058817e-02 1.858363e-02 -2.353322e-02 -1.208202e-02
2002 2.000098e-02 -9.573018e-03 -1.720829e-02 3.701019e-03 -3.677747e-03
2003 -2.665015e-02 8.257432e-02 6.530557e-03 -4.552969e-03 2.525727e-03
2004 -1.807991e-02 1.348107e-03 1.229127e-02 -5.515130e-03 8.895666e-02
2005 -4.050627e-02 -1.250484e-02 -3.949544e-03 -1.113906e-02 -7.441758e-03
2006 -5.514744e-03 -3.513568e-02 -3.112452e-02 -2.628434e-02 1.532998e-02
2007 -1.005122e-03 3.101605e-02 -4.201881e-02 2.436620e-02 7.952011e-03
Jun Jul Aug Sep Oct
2000 2.846082e-02 3.221584e-03 -2.091427e-02 -1.746945e-02 -2.032022e-02
2001 -5.534607e-02 2.819078e-02 5.833310e-02 1.303644e-02 1.478070e-02
2002 -3.500984e-03 -4.916751e-02 -1.931207e-02 1.244012e-02 5.166485e-02
2003 6.019341e-03 -2.247202e-02 -2.415587e-02 2.934986e-02 -1.221282e-02
2004 3.092954e-02 1.195264e-02 -2.302128e-02 7.012804e-03 -7.752154e-03
2005 -3.305475e-03 1.003615e-02 -9.859864e-03 -3.456644e-03 -3.442490e-02
2006 -1.517573e-02 -2.753248e-02 4.551304e-02 8.778877e-03 1.576765e-02
2007 8.014085e-04 -3.009188e-02 -7.617156e-03 1.816299e-02 2.591729e-03
Nov Dec
2000 -1.025718e-02 8.709151e-03
2001 -2.352063e-02 -3.327897e-02
2002 6.845458e-02 1.749874e-02
2003 6.495445e-03 -1.168921e-02
2004 -1.518930e-03 6.112340e-02
2005 4.259608e-03 1.801830e-02
2006 1.648602e-02 -1.919912e-02
2007 2.514562e-02 1.931216e-02
[ reached 'max' / getOption("max.print") -- omitted 19 rows ]
Primeiro aplico o attach para que o R entenda os nomes
dentro do objeto criado fit$series (d11, d16, e18 etc).
Depois faço um teste para verificar se a série e18 pode ser dada pela
fórmula (e18 = ‘série original’ / ‘série ajustada para sazonalidade’).
Faço os prints para ver que os valores calculados conferem e ver que a
têndencia obtida pela rolling mean difere da tendência obtida
pelo X11.
attach(fit$series) # para que o R entenda os nomes dentro de fit$series
teste = varejoms_2022 / d11 # conferencia de e18
print(cbind(varejoms_2022,d11,teste,e18,fit$data,d16))
varejoms_2022 d11 teste e18 fit$data.final
Jan 2000 8.08726 8.761988 0.9229937 0.9229937 8.761988
Feb 2000 8.05285 8.839694 0.9109874 0.9109874 8.839694
Mar 2000 8.87878 8.862387 1.0018497 1.0018497 8.862387
Apr 2000 9.22292 9.105831 1.0128587 1.0128587 9.105831
May 2000 9.29175 9.224902 1.0072464 1.0072464 9.224902
Jun 2000 9.11968 9.515349 0.9584178 0.9584178 9.515349
Jul 2000 9.77354 9.800938 0.9972045 0.9972045 9.800938
Aug 2000 9.70471 9.647160 1.0059655 1.0059655 9.647160
Sep 2000 9.22292 9.466355 0.9742842 0.9742842 9.466355
fit$data.seasonal fit$data.seasonaladj fit$data.trend
Jan 2000 0.9314775 8.761988 8.729934
Feb 2000 0.8839755 8.839694 8.818973
Mar 2000 1.0059871 8.862387 8.937742
Apr 2000 1.0072874 9.105831 9.088338
May 2000 1.0122657 9.224902 9.281884
Jun 2000 0.9499938 9.515349 9.473317
Jul 2000 1.0063704 9.800938 9.583263
Aug 2000 1.0018798 9.647160 9.566895
Sep 2000 0.9639494 9.466355 9.473628
fit$data.irregular fit$data.adjustfac d16
Jan 2000 1.0036718 0.9229937 0.9229937
Feb 2000 1.0023496 0.9109874 0.9109874
Mar 2000 0.9915689 1.0018497 1.0018497
Apr 2000 1.0019248 1.0128587 1.0128587
May 2000 0.9938609 1.0072464 1.0072464
Jun 2000 1.0044368 0.9584178 0.9584178
Jul 2000 1.0227141 0.9972045 0.9972045
Aug 2000 1.0083899 1.0059655 1.0059655
Sep 2000 0.9992323 0.9742842 0.9742842
[ reached 'max' / getOption("max.print") -- omitted 308 rows ]
print(cbind(tend,decomposicao.ad$trend,fit$data[,'trend']))
tend decomposicao.ad$trend fit$data[, "trend"]
Jan 2000 NA NA 8.729934
Feb 2000 NA NA 8.818973
Mar 2000 NA NA 8.937742
Apr 2000 NA NA 9.088338
May 2000 NA NA 9.281884
Jun 2000 NA NA 9.473317
Jul 2000 9.336198 9.336198 9.583263
Aug 2000 9.377781 9.377781 9.566895
Sep 2000 9.430836 9.430836 9.473628
Oct 2000 9.491060 9.491060 9.390222
Nov 2000 9.535511 9.535511 9.370870
Dec 2000 9.557020 9.557020 9.424314
Jan 2001 9.564190 9.564190 9.516152
Feb 2001 9.615810 9.615810 9.591589
Mar 2001 9.690374 9.690374 9.643280
Apr 2001 9.777842 9.777842 9.701564
May 2001 9.872480 9.872480 9.788934
Jun 2001 9.941309 9.941309 9.913758
Jul 2001 10.007269 10.007269 10.093871
Aug 2001 10.076097 10.076097 10.280064
Sep 2001 10.132020 10.132020 10.380896
Oct 2001 10.189376 10.189376 10.400379
Nov 2001 10.255336 10.255336 10.376490
Dec 2001 10.325598 10.325598 10.341164
Jan 2002 10.378652 10.378652 10.334553
Feb 2002 10.398727 10.398727 10.367486
Mar 2002 10.403029 10.403029 10.408036
Apr 2002 10.434575 10.434575 10.427085
May 2002 10.522044 10.522044 10.445760
Jun 2002 10.661133 10.661133 10.451554
Jul 2002 10.785883 10.785883 10.458687
Aug 2002 10.910633 10.910633 10.562697
Sep 2002 11.069797 11.069797 10.793290
[ reached 'max' / getOption("max.print") -- omitted 284 rows ]
Agora então faço o gráfico das série da decomposição X11 para visualização.
autoplot(varejoms_2022, series="Data") +
autolayer(trendcycle(fit), series="Trend") +
autolayer(seasadj(fit), series="Seasonally Adjusted") +
xlab("Ano") + ylab("Index") +
ggtitle("Índice de volume de vendas no varejo Total de Mato Grosso do Sul") +
scale_colour_manual(values=c("gray","blue","red"),
breaks=c("Data","Seasonally Adjusted","Trend"))
FERREIRA, Pedro Costa; SPERANZA, Talitha; COSTA, Jonatha (2018). BETS: Brazilian Economic Time Series. R package version 0.4.9. Disponível em: https://CRAN.R-project.org/package=BETS.
HYNDMAN, Rob. (2018). fpp2: Data for “Forecasting: Principles and Practice” (2nd Edition). R package version 2.3. Disponível em: https://CRAN.R-project.org/package=fpp2.
SAX C.; EDDELBUETTEL, D. (2018). “Seasonal Adjustment by X-13ARIMA-SEATS in R.” Journal of Statistical Software, 87(11), 1-17. doi: 10.18637/jss.v087.i11 (URL: https://doi.org/10.18637/jss.v087.i11).
US BUREAU OF THE CENSUS (2013). X-13ARIMA-SEATS Reference Manual Accessible HTML Output Version. Staff Statistical Research Division, US Bureau of the Census, disponível em: http://www.census.gov/ts/x13as/docX13ASHTML.pdf.