1 Licença

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

License: CC BY-SA 4.0

2 Apresentação

O objetivo deste material é capacitar o estudante a realizar aplicações com séries temporais, previsões futuras e decomposição da sazonalidade, tendência e ciclos em séries econômicas. Também trabalha-se a modelagem multivariada de fenômenos econômicos temporais.

Faz-se a apresentação do histórico e a evolução do pensamento em séries temporais, além de detalhar alguns conceitos básicos em séries temporais. O leitor é encorajado a utilizar o RStudio, e desta forma, espera-se que já tenha instalado o R e o RStudio atualizados.

3 Iniciando um projeto em RStudio

Inicialmente o leitor deve baixar os programas e pacotes necessários ao projeto. Neste caso, sugere-se que utilize o RStudio e o R atualizados, a partir de: http://cran.r-project.org/bin/windows/base/ e https://www.rstudio.com/products/rstudio/download3/. Quando esta revisão foi feita, a versão do RStudio era a RStudio Desktop 1.1.423 e do R-3.5.1 for Windows (64 bit).

Primeiro instale o R () e posteriormente o RStudio, de modo que o segundo reconheça automaticamente o primeiro. Se tudo estiver perfeito, a tela inicial do RStudio mostrará corretamente a versão do R (Figura 2).

RStudio na tela inicial.

RStudio na tela inicial.

Considerando que o usuário já tenha instalado corretamente o R e o RStudio, o próximo passo recomendado é criar um projeto. A opção está no menu File \ New Project conforme a Figura 3.

RStudio File New Project

RStudio File New Project

Na sequência, o RStudio abre janelas para escolher se deseja o projeto em novo diretório ou em um diretório existente. Se escolher novo (New Directory), aparecerão as opções (Figura 4) de projeto vazio (Empty Project), ou um pacote ou uma aplicação Shiny, e escolhe-se a opção Empty Project. Assim, o software criará uma pasta de trabalho e dentro desta haverá a criação do novo projeto. A janela Create New Project permitirá que o usuário escolha onde será criada a nova pasta e o nome do diretório desejado. Feito isso, clica-se em Create Project e abrirá o novo projeto, em seu próprio ambiente (ou diretório) de trabalho.

RStudio: Janela de criação do novo projeto

RStudio: Janela de criação do novo projeto

O ambiente básico de trabalho, conforme a Figura 5, é separado em quadrantes: à esquerda superior estão os códigos e scripts; à direita superior estão os dados, valores e funções; à direita inferior têm-se abas para os arquivos (Files), gráficos (Plots), Pacotes (Packages), ajuda (Help) e visualização (Viewer); à esquerda inferior, tem-se o console e as saídas da execução do script. No topo da tela pode-se visualizar o caminho ou diretório de trabalho.

RStudio: Novo projeto

RStudio: Novo projeto

O próximo passo sugerido é colocar, por meio do Explorador de Arquivos do Windows, o arquivo xlsx (ou outro formato) no diretório onde está o projeto. Feito isto, ele aparecerá na janela Files (Figura 6).

RStudio: Arquivos no ambiente de trabalho

RStudio: Arquivos no ambiente de trabalho

Agora chame um script para ajustar ao seu objetivo. Abra em File/Open file e escolha um script (o arquivo com extensão .R). Como dica, escolha um script que se assemelhe ao que pretende fazer (Figura 7).

RStudio: escolhendo o script

RStudio: escolhendo o script

Abra-o e salve em seu diretório de trabalho (Figura 8).

RStudio: salvando o script

RStudio: salvando o script

Feito isto, inicie as alterações em seu script conforme seu objetivo. O ajuste do script depende do que pretende fazer Neste caso, pretendemos abrir os dados do Consumo do varejo de São Paulo utilizado no livro de Morettin e Toloi (2006), que está no Excel (xlsx), que colocamos numa planilha chamada “dados”. Uma dica: arrume o Excel antes de começar o script do R.

4 Pacotes e dados

# primeiro chamamos os packages necessarios. Outra opcao é chama-los na
# medida do necessario seguirei os passos semelhante ao livro do Hyndman no
# https://www.otexts.org/fpp/2/1 fpp: Data for 'Forecasting: principles and
# practice' install.packages('fpp')
library(fpp)

# vou puxar os libraries que tenho costume de usar: destaque para o readxl e
# tseries
library(readxl)
library(foreign)
library(dynlm)
library(sandwich)
library(lmtest)
library(car)
library(tseries)
library(lattice)

dados <- structure(list(obs = structure(c(441763200, 444441600, 446947200, 449625600, 
    452217600, 454896000, 457488000, 460166400, 462844800, 465436800, 468115200, 
    470707200, 473385600, 476064000, 478483200, 481161600, 483753600, 486432000, 
    489024000, 491702400, 494380800, 496972800, 499651200, 502243200, 504921600, 
    507600000, 510019200, 512697600, 515289600, 517968000, 520560000, 523238400, 
    525916800, 528508800, 531187200, 533779200, 536457600, 539136000, 541555200, 
    544233600, 546825600, 549504000, 552096000, 554774400, 557452800, 560044800, 
    562723200, 565315200, 567993600, 570672000, 573177600, 575856000, 578448000, 
    581126400, 583718400, 586396800, 589075200, 591667200, 594345600, 596937600, 
    599616000, 602294400, 604713600, 607392000, 609984000, 612662400, 615254400, 
    617932800, 620611200, 623203200, 625881600, 628473600, 631152000, 633830400, 
    636249600, 638928000, 641520000, 644198400, 646790400, 649468800, 652147200, 
    654739200, 657417600, 660009600, 662688000, 665366400, 667785600, 670464000, 
    673056000, 675734400, 678326400, 681004800, 683683200, 686275200, 688953600, 
    691545600, 694224000, 696902400, 699408000, 702086400, 704678400, 707356800, 
    709948800, 712627200, 715305600, 717897600, 720576000, 723168000, 725846400, 
    728524800, 730944000, 733622400, 736214400, 738892800, 741484800, 744163200, 
    746841600, 749433600, 752112000, 754704000, 757382400, 760060800, 762480000, 
    765158400, 767750400, 770428800, 773020800, 775699200, 778377600, 780969600, 
    783648000, 786240000, 788918400, 791596800, 794016000, 796694400, 799286400, 
    801964800, 804556800, 807235200, 809913600, 812505600, 815184000, 817776000, 
    820454400, 823132800, 825638400, 828316800, 830908800, 833587200, 836179200, 
    838857600, 841536000, 844128000), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
    t = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
        20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 
        37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 
        54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 
        71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 
        88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 
        104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 
        118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 
        132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 
        146, 147, 148, 149, 150, 151, 152, 153, 154), consumo = c(114.13, 110.79, 
        116.46, 111.57, 120.66, 121.15, 121.27, 127.02, 129.04, 133.3, 130.6, 
        179.39, 120.64, 114.05, 130.6, 118.26, 145.54, 135.13, 153.35, 159.95, 
        150.01, 164.93, 170.37, 220.96, 134.26, 133.11, 147.84, 164.46, 181.86, 
        170.44, 186.64, 174.21, 181.62, 194.16, 181.9, 232.01, 140.16, 130.78, 
        119.04, 120.73, 129.81, 111.04, 122.75, 133.95, 125.41, 132.05, 129.54, 
        176.37, 110.09, 113.25, 124.03, 110.63, 116.72, 124.63, 124.38, 130.27, 
        119.87, 115.75, 122.44, 162.43, 105.89, 115.59, 147, 131.7, 131.32, 
        136.66, 126.43, 134.88, 128.26, 125.32, 124.61, 166.11, 116.25, 96.93, 
        89.27, 101.87, 125.57, 113.31, 109.39, 127.33, 120.56, 117.73, 113.81, 
        147.25, 100.15, 95.11, 112.26, 109.39, 114.2, 113.8, 126.47, 128.36, 
        115.71, 116.09, 99.53, 127.27, 87.08, 85.67, 82.02, 98.2, 96.44, 90.23, 
        97.15, 95.08, 94, 93, 96.09, 129.21, 75.39, 77.7, 97.34, 84.97, 87.55, 
        86.64, 90.52, 95.4, 95.2, 95.8, 101.23, 128.49, 85.63, 82.77, 96.55, 
        81.33, 96.91, 83.76, 90.19, 114.84, 108.4, 106.05, 109.71, 143.86, 99.12, 
        99.28, 114.75, 106.13, 110.02, 108.07, 112.52, 113.87, 107.84, 112.12, 
        112.03, 139.37, 92.24, 93.56, 107.37, 102.89, 114.78, 102.88, 118.41, 
        119.23, 117.36, 122.06)), row.names = c(NA, -154L), class = c("tbl_df", 
    "tbl", "data.frame"))
attach(dados)
dados2 <- matrix(consumo)
dados.ts <- ts(dados2, start = c(1984, 1), frequency = 12)

4.1 Plot da série temporal do objeto ts

plot(dados.ts, main = "Consumo do varejo de São Paulo, 
     Morettin e Toloi (2006)", 
    xlab = "Ano", ylab = "índice")

4.2 Plot comum sem objeto ts

plot(consumo, main = "Consumo do varejo de São Paulo, 
     Morettin e Toloi (2006)")

4.3 Figura no pacote lattice

xyplot.ts(dados.ts, main = "Consumo do varejo de São Paulo, 
     Morettin e Toloi (2006)")

4.4 Figura no ggplot2

library(ggplot2)
datas <- seq(as.Date(paste(c(start(dados.ts), 1), collapse = "/")), by = "month", 
    length.out = length(consumo))
dados.df <- data.frame(date = datas, value = consumo)
ggplot(data = dados.df) + geom_line(aes(date, consumo)) + ggtitle("Consumo do varejo de São Paulo, 
         Morettin e Toloi (2006)")

4.5 Figura no dygraph

Opção muito interessante para movimentar o mouse sobre o gráfico.

library(dygraphs)
dygraph(dados.ts)

5 Decomposição clássica

library(ggfortify)
autoplot(decompose(ts(dados2, start = c(1984, 1), frequency = 12)), ts.colour = "blue")

6 Seasonal plots

Agora faremos um exemplo acompanhando a indicação de Hyndman e Athanasopoulus (2014).

# seasonal plots do Hyndman aplicado ao consumo do Morettin e Toloi:
seasonplot(dados.ts, ylab = "indice", xlab = "Ano", main = "Seasonal plot: Consumo do varejo de São Paulo,
           Morettin e Toloi (2006)", 
    year.labels = TRUE, year.labels.left = TRUE, col = 1:20, pch = 19)

7 Monthplot

# Seasonal subseries plots: consumo do Morettin e Toloi:
monthplot(ts(dados2, start = c(1984, 1), frequency = 12), ylab = "indice", xlab = "Mês", 
    xaxt = "n", main = "Seasonal deviation plot: 
Consumo do varejo de São Paulo,
          Morettin e Toloi (2006)")
axis(1, at = 1:12, labels = month.abb, cex = 0.8)

8 Correlogram plots

Gráficos da função de autocorrelação da série de consumo do varejo de São Paulo, com intervalos de confiança de 95%.

autoplot(acf(ts(dados2, start = c(1984, 1), frequency = 12)), conf.int.fill = "#0000FF", 
    conf.int.value = 0.9, conf.int.type = "ma")

9 Spectrum plots

autoplot(spec.ar(ts(dados2, start = c(1984, 1), frequency = 12), plot = FALSE))

10 Referências

HYNDMAN, Rob J.; ATHANASOPOULOS, George . Forecasting: principles and practice. Otexts, 2014. Disponível em: https://www.otexts.org/fpp.

MORETTIN, Pedro A.; TOLOI, Clélia M.C. Análise de Séries Temporais. São Paulo: Edgard Blucher/ABE, 2006.