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.
License: CC BY-SA 4.0
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é jun/2019 obtida com o pacote BETS
e importada do Banco Central do Brasil. Portanto, são 234 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.
Farei de duas formas para o leitor. Uma carrega direto do site do Banco Central do Brasil com o pacote BETS
(FERREIRA, SPERANZA e COSTA, 2018) e a outra eu gerei a estrutura idêntica pela função dput()
para os leitores que não conseguirem por qualquer motivo o acesso ao site do Banco Central (as vezes vejo isso ocorrer dependendo dos bloqueios da sua rede de internet). A forma pelo dput assume o nome varejoms2 enquanto a extraída pelo BETS tem nome varejoms. Esclareço ao leitor que após baixar a série pelo BETS, fiz o dput e a partir de então, renomeei a série de trabalho varejoms2 como varejoms e desabilitei o bloco (Chunk
) que acessa o BETS apenas para agilizar os cálculos.
library(BETS)
# Pegando as séries a partir do site do Banco Central do Brasil
# Índice de volume de vendas no varejo Total de Mato Grosso do Sul
# mensal a partir de jan/2000 até junho2019
# 234 observações mensais
varejoms <- BETSget(1479)
print(varejoms)
class(varejoms)
dput(varejoms) # opção para ter os dados como na structure abaixo
# uso a opção abaixo para quando a internet por algum motivo falha
varejoms <- structure(c(35.2, 35.6, 39.2, 40.5, 41.6, 40.4, 40.8, 38.7, 37.3, 37.6,
35.6, 47.4, 34.2, 32.2, 38, 37.5, 38.8, 35, 38.4, 40.2, 38.2, 39.3, 36, 46.3,
36.4, 34, 39, 37.8, 38.9, 35.3, 37.2, 38.1, 35.6, 38.3, 35.6, 45.7, 32.2, 31.6,
35.2, 36.8, 37.5, 34.8, 38.4, 38.1, 37, 39, 37.3, 49, 35.8, 35.3, 40.2, 41.3,
43.9, 41.6, 45.9, 42.3, 42.2, 44, 41.3, 56.9, 38.5, 38.5, 45.3, 43.6, 46.2, 44.3,
47.5, 46.5, 46.4, 46, 44.1, 61, 42, 40.2, 44.6, 44.5, 47.8, 45.3, 46.5, 48.5,
47.7, 50.2, 49.3, 64.5, 47, 46.8, 51, 50.5, 55, 51.3, 52.8, 55.3, 54.8, 55.6,
55.3, 72.2, 54.5, 52.1, 56.2, 57.2, 60.8, 56.1, 61.8, 61.6, 59.8, 63.3, 57.7,
77.4, 61.4, 51.9, 57.3, 57.9, 61.9, 57.3, 61.1, 61.1, 60.6, 65.6, 63.5, 83.1,
64.1, 60.2, 67.8, 67.1, 72.8, 68.5, 71.1, 69.3, 69.9, 71.1, 67.9, 92.7, 67.5,
64.8, 69.1, 69.4, 79.6, 70.2, 73.8, 72.5, 71.3, 75.6, 74.7, 100.8, 79.5, 75.7,
82.4, 78, 84.8, 83.2, 84.8, 88.5, 86.3, 91.7, 92.8, 111.4, 92.8, 83.7, 92.5,
88.3, 93.9, 88.8, 96, 95.9, 93.2, 98.3, 100.5, 128.8, 97.2, 90.2, 94.3, 94.4,
101.1, 92, 96.4, 98.2, 97.6, 105.8, 103.1, 129.6, 99.6, 87.8, 97, 94.8, 98.6,
93.4, 98.4, 96.4, 92.5, 100.6, 97.2, 124.5, 91.5, 85.1, 91.6, 88.5, 92.2, 87.4,
90.5, 88.1, 85.2, 89.4, 93.4, 116.9, 90.8, 84, 89.7, 86.3, 90, 87.3, 90.8, 93.5,
93.7, 91.4, 93.5, 114.1, 87.8, 81.1, 94.5, 83.2, 89.9, 88.8, 89.3, 93.7, 93.5,
96.3, 101.3, 118.3, 93.8, 85.2, 90, 86.6, 90, 84.5), .Tsp = c(2000, 2019.41666666667,
12), class = "ts")
class(varejoms)
[1] "ts"
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)
Min. 1st Qu. Median Mean 3rd Qu. Max.
31.60 44.02 64.30 67.17 90.00 129.60
# Min. 1st Qu. Median Mean 3rd Qu. Max. 31.60 44.02 64.30 67.17 90.00 129.60
# plot basico lembrar que em class(), ele já indicou que era ts = serie temporal
plot(varejoms)
# pelo pacote dygraph dá mais opções
library(dygraphs)
dygraph(varejoms)
É 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) # aditiva
decomposicao.mult <- decompose(varejoms, 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, 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 39.11667 39.11667 39.11667
Aug 2000 38.93333 38.93333 38.93333
Sep 2000 38.74167 38.74167 38.74167
Oct 2000 38.56667 38.56667 38.56667
Nov 2000 38.32500 38.32500 38.32500
Dec 2000 37.98333 37.98333 37.98333
Jan 2001 37.65833 37.65833 37.65833
Feb 2001 37.62083 37.62083 37.62083
Mar 2001 37.72083 37.72083 37.72083
Apr 2001 37.82917 37.82917 37.82917
May 2001 37.91667 37.91667 37.91667
Jun 2001 37.88750 37.88750 37.88750
Jul 2001 37.93333 37.93333 37.93333
Aug 2001 38.10000 38.10000 38.10000
Sep 2001 38.21667 38.21667 38.21667
Oct 2001 38.27083 38.27083 38.27083
Nov 2001 38.28750 38.28750 38.28750
Dec 2001 38.30417 38.30417 38.30417
Jan 2002 38.26667 38.26667 38.26667
Feb 2002 38.12917 38.12917 38.12917
Mar 2002 37.93333 37.93333 37.93333
Apr 2002 37.78333 37.78333 37.78333
May 2002 37.72500 37.72500 37.72500
Jun 2002 37.68333 37.68333 37.68333
Jul 2002 37.48333 37.48333 37.48333
Aug 2002 37.20833 37.20833 37.20833
Sep 2002 36.95000 36.95000 36.95000
[ reached getOption("max.print") -- omitted 201 rows ]
# plot conjunto com função autoplot do fpp2
autoplot(varejoms, 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, x11 = "")
# varejoms %>% seas(x11='') -> fit # uso a serie 'varejoms', 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.9160363 0.8738743 0.9948168 1.0001516 1.0208706 0.9521191 1.0193705
2001 0.9140777 0.8734406 0.9947568 0.9986594 1.0213914 0.9540417 1.0196030
2002 0.9119417 0.8731077 0.9952060 0.9948656 1.0210505 0.9563967 1.0188556
2003 0.9102326 0.8734045 0.9935275 0.9886934 1.0231872 0.9588774 1.0171064
2004 0.9103335 0.8744870 0.9895362 0.9822324 1.0249350 0.9601359 1.0144476
2005 0.9132623 0.8752930 0.9832652 0.9768418 1.0280270 0.9601773 1.0117053
2006 0.9201656 0.8765347 0.9777956 0.9726826 1.0289716 0.9581603 1.0081204
2007 0.9300553 0.8790183 0.9740826 0.9695183 1.0292379 0.9562496 1.0029410
Aug Sep Oct Nov Dec
2000 1.0085662 0.9786149 1.0171068 0.9562276 1.2641280
2001 1.0081584 0.9786166 1.0170109 0.9571359 1.2660946
2002 1.0087976 0.9797572 1.0165767 0.9581184 1.2697734
2003 1.0081513 0.9798217 1.0174593 0.9601495 1.2744830
2004 1.0079612 0.9807484 1.0167661 0.9633637 1.2794881
2005 1.0061358 0.9803528 1.0171512 0.9654955 1.2838366
2006 1.0057274 0.9802777 1.0162996 0.9675606 1.2849235
2007 1.0043865 0.9791421 1.0166976 0.9695748 1.2835641
[ reached getOption("max.print") -- omitted 12 rows ]
$d11
Jan Feb Mar Apr May Jun Jul
2000 38.94016 39.52152 39.48226 40.27187 41.02116 41.91343 40.55981
2001 37.66416 37.19486 37.99908 37.78664 37.69766 36.38404 38.10896
2002 39.61040 39.28905 38.74981 38.56085 37.75048 37.11832 36.75493
2003 35.05287 36.50330 36.30527 36.77192 36.10707 36.87491 37.46621
2004 38.74347 39.64975 41.04643 41.38121 43.40463 43.28423 44.57580
2005 42.72017 44.37800 45.20760 44.76756 45.47413 45.97429 46.95139
2006 46.18599 46.27191 45.70312 45.49896 46.76380 46.70067 46.74212
2007 50.87148 53.71658 51.53950 52.96640 53.03003 53.20548 53.27034
Aug Sep Oct Nov Dec
2000 38.07864 37.80135 37.40660 37.09808 37.49697
2001 39.51094 39.25567 38.90024 37.15284 37.05806
2002 37.20806 36.91869 37.38811 36.85031 36.41807
2003 37.79272 37.89510 37.98110 39.06804 38.70324
2004 42.46425 42.87633 43.27535 43.02175 44.06523
2005 46.52449 46.75183 45.82897 45.63073 46.80973
2006 47.85600 48.25914 49.98146 50.77285 50.19857
2007 54.55622 56.28419 55.05139 56.33871 57.00165
[ reached getOption("max.print") -- omitted 12 rows ]
$d12
Jan Feb Mar Apr May Jun Jul
2000 39.25023 39.62251 39.92326 40.18129 40.29172 40.11278 39.59129
2001 37.39369 37.52701 37.63034 37.75919 37.94367 38.19110 38.46100
2002 39.19149 39.05001 38.76017 38.31961 37.82704 37.41450 37.15470
2003 36.48083 36.36462 36.34856 36.45092 36.64742 36.91495 37.25079
2004 39.28169 39.96581 40.77917 41.58926 42.27129 42.71549 42.91333
2005 44.04604 44.40269 44.78256 45.21840 45.67910 46.07001 46.33730
2006 46.06740 46.02514 46.01329 46.05751 46.21240 46.58407 47.17710
2007 51.13835 51.57142 51.98692 52.42638 52.89041 53.34831 53.82108
Aug Sep Oct Nov Dec
2000 38.86156 38.13750 37.59052 37.32135 37.28906
2001 38.70456 38.90732 39.06320 39.16051 39.20916
2002 37.02996 36.96966 36.89949 36.79467 36.64373
2003 37.61429 37.93953 38.21491 38.47558 38.79510
2004 42.97120 43.00580 43.12265 43.35672 43.69121
2005 46.44638 46.44121 46.36851 46.24868 46.13891
2006 47.89670 48.67835 49.42208 50.08576 50.65539
2007 54.37618 54.99737 55.60643 56.19250 56.73171
[ reached getOption("max.print") -- omitted 12 rows ]
$d13
Jan Feb Mar Apr May Jun Jul
2000 0.9921003 0.9974513 0.9889540 1.0022543 1.0181039 1.0448895 1.0244629
2001 1.0072331 0.9911491 1.0097990 1.0007272 0.9935164 0.9526837 0.9908468
2002 1.0106888 1.0061213 0.9997328 1.0062956 0.9979761 0.9920838 0.9892404
2003 0.9608572 1.0038134 0.9988089 1.0088064 0.9852555 0.9989154 1.0057829
2004 0.9862985 0.9920917 1.0065539 0.9949975 1.0268109 1.0133146 1.0387401
2005 0.9698981 0.9994438 1.0094913 0.9900298 0.9955130 0.9979224 1.0132527
2006 1.0025743 1.0053614 0.9932593 0.9878728 1.0119318 1.0025031 0.9907798
2007 0.9947814 1.0415959 0.9913936 1.0103006 1.0026397 0.9973227 0.9897672
Aug Sep Oct Nov Dec
2000 0.9798536 0.9911858 0.9951072 0.9940176 1.0055757
2001 1.0208341 1.0089534 0.9958281 0.9487321 0.9451379
2002 1.0048096 0.9986214 1.0132419 1.0015120 0.9938418
2003 1.0047437 0.9988288 0.9938818 1.0153983 0.9976321
2004 0.9882026 0.9969894 1.0035410 0.9922741 1.0085606
2005 1.0016817 1.0066885 0.9883643 0.9866386 1.0145393
2006 0.9991501 0.9913880 1.0113184 1.0137181 0.9909817
2007 1.0033110 1.0233980 0.9900183 1.0026019 1.0047582
[ reached getOption("max.print") -- omitted 12 rows ]
$d16
Jan Feb Mar Apr May Jun Jul
2000 0.9039510 0.9007751 0.9928509 1.0056648 1.0141108 0.9638916 1.0059218
2001 0.9080251 0.8657111 1.0000241 0.9924142 1.0292415 0.9619601 1.0076371
2002 0.9189507 0.8653811 1.0064565 0.9802687 1.0304506 0.9510130 1.0121091
2003 0.9186125 0.8656753 0.9695563 1.0007637 1.0385777 0.9437311 1.0249235
2004 0.9240266 0.8902957 0.9793788 0.9980375 1.0114129 0.9610890 1.0297067
2005 0.9012135 0.8675471 1.0020438 0.9739194 1.0159622 0.9635820 1.0116845
2006 0.9093666 0.8687777 0.9758633 0.9780443 1.0221582 0.9700075 0.9948201
2007 0.9238968 0.8712393 0.9895323 0.9534346 1.0371483 0.9641864 0.9911706
Aug Sep Oct Nov Dec
2000 1.0163178 0.9867373 1.0051702 0.9596183 1.2641021
2001 1.0174398 0.9731077 1.0102766 0.9689704 1.2493909
2002 1.0239717 0.9642811 1.0243898 0.9660707 1.2548715
2003 1.0081306 0.9763796 1.0268264 0.9547447 1.2660438
2004 0.9961319 0.9842260 1.0167452 0.9599795 1.2912674
2005 0.9994736 0.9924744 1.0037318 0.9664539 1.3031478
2006 1.0134571 0.9884139 1.0043725 0.9709915 1.2848972
2007 1.0136332 0.9736304 1.0099654 0.9815631 1.2666299
[ reached getOption("max.print") -- omitted 12 rows ]
$e18
Jan Feb Mar Apr May Jun Jul
2000 0.9039510 0.9007751 0.9928509 1.0056648 1.0141108 0.9638916 1.0059218
2001 0.9080251 0.8657111 1.0000241 0.9924142 1.0292415 0.9619601 1.0076371
2002 0.9189507 0.8653811 1.0064565 0.9802687 1.0304506 0.9510130 1.0121091
2003 0.9186125 0.8656753 0.9695563 1.0007637 1.0385777 0.9437311 1.0249235
2004 0.9240266 0.8902957 0.9793788 0.9980375 1.0114129 0.9610890 1.0297067
2005 0.9012135 0.8675471 1.0020438 0.9739194 1.0159622 0.9635820 1.0116845
2006 0.9093666 0.8687777 0.9758633 0.9780443 1.0221582 0.9700075 0.9948201
2007 0.9238968 0.8712393 0.9895323 0.9534346 1.0371483 0.9641864 0.9911706
Aug Sep Oct Nov Dec
2000 1.0163178 0.9867373 1.0051702 0.9596183 1.2641021
2001 1.0174398 0.9731077 1.0102766 0.9689704 1.2493909
2002 1.0239717 0.9642811 1.0243898 0.9660707 1.2548715
2003 1.0081306 0.9763796 1.0268264 0.9547447 1.2660438
2004 0.9961319 0.9842260 1.0167452 0.9599795 1.2912674
2005 0.9994736 0.9924744 1.0037318 0.9664539 1.3031478
2006 1.0134571 0.9884139 1.0043725 0.9709915 1.2848972
2007 1.0136332 0.9736304 1.0099654 0.9815631 1.2666299
[ reached getOption("max.print") -- omitted 12 rows ]
$rsd
Jan Feb Mar Apr May
2000 -1.469292e-03 4.835738e-03 -1.534311e-03 1.627078e-02 9.921831e-03
2001 7.167179e-05 -2.243456e-02 1.533620e-02 -1.248602e-02 -1.839170e-02
2002 5.281442e-02 5.842271e-03 -1.969108e-02 -1.885580e-02 -2.974529e-02
2003 -7.598416e-02 2.661862e-02 -7.944684e-05 4.466163e-03 -3.131327e-03
2004 -8.068610e-03 1.047022e-02 3.316107e-02 4.126374e-03 7.263069e-02
2005 -3.100684e-02 1.255537e-02 -1.093514e-03 -2.006605e-02 1.606480e-02
2006 2.796022e-03 -2.878522e-02 -4.796052e-02 -1.805357e-02 2.558457e-02
2007 3.101395e-02 3.419434e-02 -5.226078e-02 1.533409e-02 1.265810e-04
Jun Jul Aug Sep Oct
2000 2.267089e-02 -2.374413e-02 -5.570412e-02 -1.886054e-02 -1.127732e-02
2001 -4.760195e-02 4.667018e-02 7.954335e-02 1.875368e-02 2.082020e-03
2002 -1.307248e-02 -2.588059e-02 1.313358e-02 1.549619e-03 1.883125e-02
2003 3.421933e-02 1.611461e-02 1.399672e-02 1.367018e-02 5.469448e-03
2004 1.630768e-02 1.833928e-02 -4.390433e-02 3.140341e-03 7.403573e-03
2005 1.342106e-02 1.175008e-03 1.018570e-02 8.240707e-03 -2.217813e-02
2006 -2.933758e-03 -2.375897e-02 3.592220e-02 1.657227e-02 4.329607e-02
2007 -3.505522e-03 -1.811378e-02 2.575531e-02 3.417674e-02 -2.247700e-02
Nov Dec
2000 -7.443153e-04 6.171883e-03
2001 -3.475852e-02 -1.757276e-02
2002 1.567423e-02 -8.771326e-03
2003 5.214205e-02 9.366336e-03
2004 3.568018e-03 3.233773e-02
2005 -1.265565e-03 2.205898e-02
2006 3.687999e-02 -1.472108e-02
2007 1.946050e-02 9.801785e-03
[ reached getOption("max.print") -- omitted 12 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/d11 # conferencia de e18
print(cbind(varejoms, d11, teste, e18, fit$data, d16))
varejoms d11 teste e18 fit$data.final
Jan 2000 35.2 38.94016 0.9039510 0.9039510 38.94016
Feb 2000 35.6 39.52152 0.9007751 0.9007751 39.52152
Mar 2000 39.2 39.48226 0.9928509 0.9928509 39.48226
Apr 2000 40.5 40.27187 1.0056648 1.0056648 40.27187
May 2000 41.6 41.02116 1.0141108 1.0141108 41.02116
Jun 2000 40.4 41.91343 0.9638916 0.9638916 41.91343
Jul 2000 40.8 40.55981 1.0059218 1.0059218 40.55981
Aug 2000 38.7 38.07864 1.0163178 1.0163178 38.07864
Sep 2000 37.3 37.80135 0.9867373 0.9867373 37.80135
fit$data.seasonal fit$data.seasonaladj fit$data.trend
Jan 2000 0.9160363 38.94016 39.25023
Feb 2000 0.8738743 39.52152 39.62251
Mar 2000 0.9948168 39.48226 39.92326
Apr 2000 1.0001516 40.27187 40.18129
May 2000 1.0208706 41.02116 40.29172
Jun 2000 0.9521191 41.91343 40.11278
Jul 2000 1.0193705 40.55981 39.59129
Aug 2000 1.0085662 38.07864 38.86156
Sep 2000 0.9786149 37.80135 38.13750
fit$data.irregular fit$data.adjustfac d16
Jan 2000 0.9921003 0.9039510 0.9039510
Feb 2000 0.9974513 0.9007751 0.9007751
Mar 2000 0.9889540 0.9928509 0.9928509
Apr 2000 1.0022543 1.0056648 1.0056648
May 2000 1.0181039 1.0141108 1.0141108
Jun 2000 1.0448895 0.9638916 0.9638916
Jul 2000 1.0244629 1.0059218 1.0059218
Aug 2000 0.9798536 1.0163178 1.0163178
Sep 2000 0.9911858 0.9867373 0.9867373
[ reached getOption("max.print") -- omitted 225 rows ]
Pode-se ver acima (conferir) que os valores calculados em teste são iguais aos de e18 e de d16 e de fit$data.adjustfac
. Abaixo, pode-se de forma semelhante conferir que a tendência pela decomposição clássica (obtido pelo ‘decompose()’) difere da tendencia obtida pelo x11 em fit$data[,'trend'])
. Isso ocorre porque o método da dessazonalização do X11 é superior ao da decomposição clássica (e mais moderno que a clássica).
print(cbind(tend, decomposicao.ad$trend, fit$data[, "trend"]))
tend decomposicao.ad$trend fit$data[, "trend"]
Jan 2000 NA NA 39.25023
Feb 2000 NA NA 39.62251
Mar 2000 NA NA 39.92326
Apr 2000 NA NA 40.18129
May 2000 NA NA 40.29172
Jun 2000 NA NA 40.11278
Jul 2000 39.11667 39.11667 39.59129
Aug 2000 38.93333 38.93333 38.86156
Sep 2000 38.74167 38.74167 38.13750
Oct 2000 38.56667 38.56667 37.59052
Nov 2000 38.32500 38.32500 37.32135
Dec 2000 37.98333 37.98333 37.28906
Jan 2001 37.65833 37.65833 37.39369
Feb 2001 37.62083 37.62083 37.52701
Mar 2001 37.72083 37.72083 37.63034
Apr 2001 37.82917 37.82917 37.75919
May 2001 37.91667 37.91667 37.94367
Jun 2001 37.88750 37.88750 38.19110
Jul 2001 37.93333 37.93333 38.46100
Aug 2001 38.10000 38.10000 38.70456
Sep 2001 38.21667 38.21667 38.90732
Oct 2001 38.27083 38.27083 39.06320
Nov 2001 38.28750 38.28750 39.16051
Dec 2001 38.30417 38.30417 39.20916
Jan 2002 38.26667 38.26667 39.19149
Feb 2002 38.12917 38.12917 39.05001
Mar 2002 37.93333 37.93333 38.76017
Apr 2002 37.78333 37.78333 38.31961
May 2002 37.72500 37.72500 37.82704
Jun 2002 37.68333 37.68333 37.41450
Jul 2002 37.48333 37.48333 37.15470
Aug 2002 37.20833 37.20833 37.02996
Sep 2002 36.95000 36.95000 36.96966
[ reached getOption("max.print") -- omitted 201 rows ]
Agora então faço o gráfico das série da decomposição X11 para visualização.
autoplot(varejoms, 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.