Trabalhando com séries temporais no R – Parte I

O principal objeto para armazenamento de dados no software R é o data.frame, que representa uma estrutura retangular onde cada coluna pode abrigar informações de diferentes tipos (números, textos, datas, etc.). Embora o R seja uma ferramenta poderosa para se trabalhar com qualquer tipo de dado, no seu estado natural (ou seja, sem a ajuda das bibliotecas criadas pela comunidade de usuários), manejar séries de tempo pode ser frustrante, sobretudo se os dados não seguirem um padrão fixo de espaçamento – como ocorre, por exemplo, com séries intraday do mercado financeiro.

O pacote básico do R inclui duas classes para operações com séries de tempo: a ts para dados univariados e a mts para dados multivariados, que são úteis para trabalhar com dados mensais e trimestrais (de espaçamento fixo), mas que contam com poucas funções (métodos) de manipulação e processamento dos dados, além de uma interface gráfica bem pobre.

A partir dessas limitações, diversos pacotes foram criados para tornar mais fácil a vida dos que querem brincar com séries temporais no R. Os mais conhecidos são o zoo e o xts, que basicamente armazenam os dados em dois componentes: (i) um vetor de datas e/ou tempo e (ii) um data.frame com as observações (dados). Os pacotes de séries de tempo servem para combinar estes dois elementos e possibilitar a aplicação de diversas funções.

Mas antes de começarmos a trabalhar com as séries de tempo, serão necessárias mais algumas bibliotecas (nesse caso, o XLConnect e o lubridate), visto que precisaremos importar os dados de interesse para o R e muito provavelmente padronizar o vetor de datas. Aliás, em um típico processo de análise, a qualquer momento as etapas podem incluir alguma transformação dos dados, imputação de valores inexistentes, adicionar/deletar variáveis e recomeçar o processo inteiro novamente (como mostrado na figura abaixo).

fig 1

Nesse momento você deve estar se perguntando: por que diabos preciso me preocupar em padronizar o vetor de datas? A resposta passa pelo fato de que, no Brasil, cada fonte divulga seus dados da forma como acha conveniente e, na maioria das vezes, este formato não é o mais apropriado. Um exemplo clássico é o Ipeadata (link) – repositório gratuito de dados macroeconômicos, regionais e sociais de diversas fontes domésticas e internacionais -, que divulga o vetor de datas como texto (COMO TEXTO!). Em séries mensais o formato utilizado pelo Ipea é o “YYYY.MM”. Ou seja, a referência para set/15, que deveria ser 01/09/2015, é armazenada na coluna A como “2015.09”. Aí dificulta a vida do cidadão! Mas não se preocupe… com uma linha de comando o R resolve isso.

Neste post mostrarei como importar uma base para o R, transformar dados em séries temporais e também os primeiros passos de como gerar gráficos mais elegantes e elaborados. Nas próximas publicações partiremos para análises de decomposição, construção/avaliação de modelos de previsão e projeções de valores futuros.

No nosso exemplo, utilizaremos os dados do IBC-Br (indicador proxy do PIB, criado pelo Banco Central do Brasil), baixados lá no site Ipeadata. Basta acessar o link e digitar no campo de pesquisa o termo “IBC-Br” (sem as aspas). A série que nos interessa é a “Índice de Atividade Econômica do Banco Central (IBC-Br) (2002=100)”. Agora é só exportar em formato “xls”. De preferência, nomeie a planilha como “IBCBR.xls”, pois é este o nome que utilizaremos no código.

A tabela abaixo resume as funções e pacotes que utilizaremos no código.

fig 2

library(zoo)
library(XLConnect)
library(lubridate)
library(ggplot2)

#Importando os dados e renomeando as colunas
setwd("C:\\Users\\Tho\\Google Drive\\Blog\\201509\\")
wb <- loadWorkbook("IBCBR.xls")
  Matriz <- readWorksheet(wb, sheet = "Séries", startRow = 0, startCol = 0)

#alterando o vetor de datas para o formato correto   
  names(Matriz) <- c("Data", "IBCBr")

  Matriz$Data <- parse_date_time(Matriz$Data, "%Y.%m")

#transformando dados em time-series     
  tsIBCBr <- zoo(Matriz$IBCBr, Matriz$Data)

O resultado final é o destacado no gráfico abaixo.

#gerando gráficos mais elaborados      
  lc <- qplot(Data, IBCBr, data = Matriz, geom = "line") + 
    geom_line(colour = "red", size = .7)
  lc + ggtitle("IBC-Br (2002=100, Banco Central do Brasil) \n Elaboração: dadosdadosdados") + 
    theme(plot.title = element_text(lineheight=.9, face="bold"))

plot of chunk unnamed-chunk-3

Advertisements

One thought on “Trabalhando com séries temporais no R – Parte I

  1. Pingback: Trabalhando com séries temporais no R – Parte II (estatísticas fiscais) | Dados Dados Dados

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s