R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents.

SELIC X INFLAÇÃO: uma aplicação com tidyverse

Neste trabalho vamos visualizar a relação entre a Selic e a inflação (IPCA) como ilustração para uso do pacote tidyverse.

Os dados da Selic e inflação serão pegados no site do Banco Central, módulo de séries temporais (SGC), por meio do pacote de raspagem GetBCBData, desenvolvido por Marcelo Perlin (ver Análise de dados financeiros e econômicos do Brasil, 3ª edição, Porto Alegre, Publicação Independente, 2021).

No site do Banco Central, em estatísticas SGS, deve-se procurar pelos números das tabelas desejadas. No caso desse exeplo, são elas:

Os pacotes necessários são os seguintes:

library(GetBCBData)
library(dplyr)
library(ggplot2)
library(scales)
library(ggthemes)
library(tidyverse)

O primeiro pacote é o programa de raspagem desenvolvido por Perlin. Os pacotes dplyr e tidyverse serão úteis no manuseio da base dados baixada. O pacote ggplot2 será usado no desenho do gráfico das séries. O pacote scales será usado na montagem do eixo horizontal no ggplot. O pacote ggthemes será usado para definir um plano de fundo para o gráfico (o tema escolhido será “economist”.

Raspando os dados

sel<- gbcbd_get_series (id = c(selic = 4390, inf = 0433),
                              first.date = '2010-01-01',
                              last.date = '2022-03-01',
                              use.memoise = FALSE)
## 
## Fetching selic [4390] from BCB-SGS from Online API 
##   Found 147 observations
## Fetching inf [433] from BCB-SGS from Online API 
##   Found 147 observations

Vocês podem visualizar a tabela criada (data frame) clicando no quadrado ao lado de seu nome (sel) no Environment do RStudio. Note que os dados de inflação estão abaixo dos dados da Selic.

Montando a tabela (data frame)

Do data frame sel, vamos separar os dados da Selic e os da inflação. Criando dois novos data frames que serão, em seguida, juntados em um só.

Para isso, vamos usar as seguintes funções do pacote tidyverse:

  • Pipe (%>%): ou pipeline, “canaliza” a tabela original, no caso, sel para o que queremos dela. Quando usamos o %>% estamos alterando a configuração original da tabela conforme instruções que vêm a seguir.

  • Filter(): esta função “filtra” ou separa as linhas da tabela de acordo com o nosso interesse. Se quiséssemos separar por colunas, a função que seria usada seria a **select*()**.

O comando, então, fica:

sels <- sel %>%
  filter(series.name == "selic") %>%
  select (ref.date, value)
colnames(sels) = c("Tempo", "Selic")

No comando acima, estamos chamando de sels a parte de sel constituída apenas pelas datas e por Selic. A função colnames() atribui nomes às colunas.

seli <- sel %>%
  filter(series.name == "inf") %>%
  select(value)
colnames(seli) = c("IPCA")

Acima, seli é a parte do data frame original, sel, com dados, apenas, da inflação.

Vamos juntar os dois:

dft <- data.frame(sels, seli)

Gráficos

Faramos dois tipos de gráficos. No primeiro as duas séries temporais são apresentadas com o uso do ggplot2. No segundo, é apresentado um gráfico de dispersão sem o recurso ao ggplot.

Gráfico com as séries temporais

ggplot(data = dft, aes(x = Tempo)) + theme_economist()+
  geom_line(aes(y= Selic, colour="SELIC"), size=.8) +
  geom_line(aes(y= IPCA, colour="IPCA"), size=.8) +
  theme(axis.text.x = element_text(face="bold", color="black", size=9, angle=45, hjust = .01)) + 
  theme(axis.text.y = element_text(face="bold", color="Black", size=9, angle=0)) + 
  theme(axis.line = element_line(colour = "black", size = 0.5, linetype = "solid"))+
  scale_x_date(date_labels = "%m / %Y", breaks = date_breaks("6 month"))+
  xlab('meses/anos')+ 
  ylab('% ao mês') +
  labs(title='Inflação x Selic',
       subtitle='2010-2022',
       caption='Turma de Fundamentos de Macro - 2022', color = "")

Gráfico com regressão linear

plot (x = dft$Selic, y = dft$IPCA,
      main = "Selic x Inflação (2010-2022)",
      ylab = "IPCA",
      xlab = "SELIC",
      pch = 16, col = "blue")
grid()
abline(a = 0.43564, b = 0.09742, col = "red")

No gŕafico acima, foi incluída uma reta (vermelha) que retrata a relação linear entre Selic (variável indendente) e Inflação (variável dependente). Essa reta é incluída com o recurso à função abline(), cujos parâmetros \(a\) e \(b\), são, respectivamente, os intercepto e coeficiente angular da reta de regressão.

Esses coeficientes, por sua vez, foram obtidos como resultado da aplicação da função lm(), cuja sintaxe é apresentada à seguir. Com a função summary() apresentamos os resultados da regressão. Notem o baixo \(R^2\) da regressão.

reg <- lm(IPCA~Selic, data = dft)
summary(reg)
## 
## Call:
## lm(formula = IPCA ~ Selic, data = dft)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.83902 -0.23990 -0.03824  0.24315  1.09376 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.43564    0.08126   5.361 3.19e-07 ***
## Selic        0.09742    0.10740   0.907    0.366    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3564 on 145 degrees of freedom
## Multiple R-squared:  0.005642,   Adjusted R-squared:  -0.001215 
## F-statistic: 0.8228 on 1 and 145 DF,  p-value: 0.3659