This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

Dados Macroeconômicos com o R

O uso do web scraping

Na segunda aula vimos como é possível alimentar o R com dados do SIDRA-IBGE. Primeiro, selecionamos a tabela que desejamos, depois escolhemos o leiaute e a variáveis que nos interessam e a salvamos como arquivo CSV.BR.

Na aula de hoje veremos como é possível pegar a tabela desejada diretamente do SIDRA, recorrendo a um pacote que faz interface diretamente com o API da daquela plataforma do IBGE.

Nesse exercício usaremos alguns pacotes que precisam ser instalados com a função install.packages e carregados, com a função library. Os pacotes são: tidyverse (uma importante suíte para data science); ggplot2 (que vai nos permitir fazer gráficos bem legais); sidrar (que vai fazer o web scraping do Sidra); scales (um pacote que vai ajudar a separar datas no gráfico). Vejam o exemplo de instalação e carregamento do pacote scales:

install.packages("scales")
#### carregando os outros previamente instalados.
library(scales)
library(sidrar)
library(ggplot2)

Atenção: vocês devem repetir o procedimento acima, install.packages e library para os pacotes que listei: tidyverse, ggplot2, sidrar. Como eu já tinha intalados no meu PC os programas, apenas os carreguei.

É bem prático usar o sidrar. Sua única função é o get_sidra. Primeiro procuramos no Sidra uma tabela que nos interessa. Neste exercício, vamos usar a tabela 6784, que apresenta valores para o PIB. Ainda no Sidra, escolhemos as variáveis e o período que nos interessam. No caso, queremos PIB - variação em volume (%), como variável e todos os anos disponiveis. Essa tabela só apresenta valores para o Brasil.

Vamos agora capturar o parâmetro do API Sidra da tabela para a função get_sidra. Isso é feito clicando no botão Links de Compartilhar. O parâmetro da API desejada é a primeira opção na janela que se abre.

Devemos copiar, então, do “/t” até o fim da linha. Colamos este trecho no comando abaixo:

PIBvolume <- get_sidra(api='/t/6784/n1/all/v/9810/p/all/d/v9810%201')
class(PIBvolume)
## [1] "data.frame"

Podemos ver a tabela criada clicando no objeto (que é um data-frame) no Environment do RStudio. Você vai ver que há muita informação na tabela (no data-frame) que não nos interessa.

Agora vamos criar um sequência de datas para montar um objeto (a sequência de datas mais o PIB) que facilitará a visualização do gráfico que faremos.

tempo = seq(as.Date('1996-01-31'), as.Date('2017-01-31'), by='year')

No comando acima, a sequência é criada usando a função as.Date. Repare os argumentos que usamos. A data inicial e a final. Mas note que estamos trabalhando com dados anuais.

Vamos montar nosso novo objeto (um novo data-frame, menos confuso que o primeiro) da seguinte maneira:

txPIBvolume <- data.frame(Ano=tempo, Volume=PIBvolume$Valor)
txPIBvolume
##           Ano Volume
## 1  1996-01-31    2.2
## 2  1997-01-31    3.4
## 3  1998-01-31    0.3
## 4  1999-01-31    0.5
## 5  2000-01-31    4.4
## 6  2001-01-31    1.4
## 7  2002-01-31    3.1
## 8  2003-01-31    1.1
## 9  2004-01-31    5.8
## 10 2005-01-31    3.2
## 11 2006-01-31    4.0
## 12 2007-01-31    6.1
## 13 2008-01-31    5.1
## 14 2009-01-31   -0.1
## 15 2010-01-31    7.5
## 16 2011-01-31    4.0
## 17 2012-01-31    1.9
## 18 2013-01-31    3.0
## 19 2014-01-31    0.5
## 20 2015-01-31   -3.5
## 21 2016-01-31   -3.3
## 22 2017-01-31    1.3

Reparem nos argumentos da função data.frame. Uma coluna de anos mais o valores do PIB de nosso primeiro data-frame, aquele que foi extraído do Sidra pelo web scraping. Daquela primeira tabela, só nos interessa a coluna com o nome de “Valor”.

Agora vamos cria nosso gráfico usando o rico pacote ggplot2.

ggplot(txPIBvolume, aes(x=Ano, y=Volume))+
  geom_line(size=.8, colour='red')+
  scale_x_date(breaks = date_breaks("1 years"),
               labels = date_format("%Y"))+
  theme(axis.text.x=element_text(angle=90, hjust=1))+
  geom_point(size=9, shape=21, colour="blue", fill="white")+
  geom_text(aes(label=round(Volume,1)), size=3, 
            hjust=0.5, vjust=0.5, colour="darkgreen")+
  xlab('Anos')+ylab('%')+
  labs(title='Taxa de Crescimento',
       subtitle='Variação em volume do PIB',
       caption='Fonte: Turma de Macro II.')

Como vocês podem ver, são muitos argumentos para serem explicados. Vamos resumí-los, afinal, só com a prática do dia a dia vocês vão conseguir trabalhar bem esses gráficos.

O primeiro argumento é no nome do que criamos por último.

Através da função aes especificamos o que queremos ilustrar graficamente.

Em seguida, acrescentamos outras definições gráficas (+).

A função geom_line nos diz o tipo de linha que queremos.

A função scale_x_date nos ajuda a separar as informações por ano e nomear os anos de nosso gráfico (%Y).

Usamos a função theme para observar que o eixo do x está na forma de texto (no caso os anos) e que esses anos devem ser dispostos verticalmente (angle=90); além disso, essa função define a grossura dos anos (hjust=1).

Por meio da função geom_point nós destacamos os números no gráfico. Queremos bolas (shape=21) com um certo tamanho (9). A cor da linha da bola é azul (colour=“blue”) e seu interior é branco (fill=“white”).

Já a função geom_text vai definir o tipo de número para as bolas. Queremos valores do PIB arredondados em uma casa decimal (round(Volume,1)). Queremos que os números com um certo tamanho nas bolas (size=3), centralizados horizontalmente (hjust=0.5) e verticalmente (vjust=0.5). Finalmente, a cor dos números (colour=“red”).

Os comandos xlab e ylab definem, em aspas simples, os nomes dos eixos.

O comando labs é meio, evidente, não é? Só lembrando que o termo caption designa a nota de rodapé do gráfico.

Cores no R: http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

Formas (shapes) no R: http://sape.inf.usi.ch/quick-reference/ggplot2/shape