Tag

gridExtra Archives - Análise Macro

Hackeando o R: agrupando gráficos no R

By | Hackeando o R

Uma das etapas mais importante da análise de dados é a apresentação visual. Sabe-se que tanto para quem necessita tirar conclusões a partir dos dados, e também para ouvintes de outros segmentos, a parte visual demonstra-se como essencial para o entendimento do tópico que está sendo discutido. No Hackeando o R de hoje, iremos mostrar como podemos encaixar gráficos de forma que se tenha uma apresentação amigável, simples e rápida, combinando gráficos em apenas uma única figura.

O pacote mais importante no R para a visualização de dados, como todos sabem, é o pacote {ggplot2}. Apesar de suas inumeráveis funcionalidades, alguns pacotes o ajudam a potencializar seu uso. Como mostraremos, os pacotes {patchwork} e o {gridExtra} o ajudam na tarefa especifica de combinar múltiplos gráficos.

library(gridExtra)
library(patchwork)
library(tidyverse)

Para começarmos com os exemplos, primeiro devemos atribuir a um objeto um gráfico feito a partir do {ggplot2}. Utilizaremos o dataset Economics como exemplo, criando três gráficos diferentes.

# Gráfico de linha

psav_line <- economics %>% 
  ggplot(aes(x = date, y = psavert))+
  geom_line()+
  theme_minimal()+
  labs(x = "",
       y = "",
       title = "Personal savings rate - USA")

# Histograma

psav_des <- economics %>% 
  ggplot(aes(psavert))+
  geom_density(binwidth = .1, 
                 fill = "darkblue",
                 colour = "black")+
  theme_minimal()+
  labs(x = "",
       y = "",
       title = "Personal savings rate - USA")

# Gráfico de linha

pce_line <- economics %>% 
  ggplot(aes(x = date, y = pce))+
  geom_line()+
  theme_minimal()+
  labs(x = "",
       y = "",
       title = "Personal consumption expenditures",
       subtitle = "in billions of dollars - USA")

Salvado nossos gráficos, podemos utilizar o pacote {patchwork}, no qual funciona utilizando operadores matemáticos. O "+" é utilizado para deixar os gráficos lado a lado, como uma coluna. O uso de "()" serve para agrupar os gráficos e o "/" para empilhar um em outro.

pce_line + (psav_line / psav_des)+
  plot_annotation(
    title = "Economics Dataset")

Veja como podemos mudar a orientação dos gráficos mudando os operadores:

pce_line + psav_line + psav_des +
  plot_annotation(
    title = "Economics Dataset")

Outro pacote que pode ajudar na combinação de gráficos é o {gridExtra}, que diferentemente do {patchwork}, utiliza-se a função grid.arrange para ordernar os gráficos.

Veja que por padrão, a função empilha os gráficos, como se fosse em formato de linhas.


grid.arrange(psav_line, psav_des)

Também pode se especificar para que sejam ordenados em formato de colunas, podendo também escolher quantas queira.


grid.arrange(pce_line, psav_line, psav_des, ncol= 3)

(*) Quer aprender mais sobre a linguagem R e como construir gráficos? confira nosso Curso de Introdução ao R para análise de dados.

________________________

Selic deve ir a 4,25%

By | Indicadores

A semana é marcada pela decisão do Banco Central sobre a taxa básica de juros. O consenso de mercado espera por mais uma queda de 25 pontos-base, o que levaria a taxa para 4,25%, menor patamar da série histórica. A trajetória do hiato do produto e da inflação, diga-se, são condizentes com essa expectativa.

Para além disso, a semana conta com a divulgação da produção industrial referente a dezembro amanhã e do IPCA de janeiro na sexta-feira.

_______________



(***) Uma apresentação em RMarkdown do boletim Focus está disponível aqui.

A influência do TOP5 nas expectativas do boletim Focus

By | Indicadores

O boletim Focus divulgado agora há pouco trouxe correção importante na taxa básica de juros esperada pelo mercado para o fim de 2020. Antes estacionada em 4,5%, agora há a expectativa de mais um corte de 25 pontos-base, em linha com o que era esperado pelo grupo TOP 5 Médio Prazo desde o início de dezembro. De fato, como pode ser visto no gráfico abaixo, há uma correlação positiva entre as expectativas.

Através de testes estatísticos, que são ensinados no nosso Curso de Séries Temporais usando o R, inclusive, é possível mostrar que essa correlação é também uma causalidade, no sentido das expectativas do TOP5 para as expectativas do Focus. Ou seja, o grupo TOP5 influencia as expectativas dos demais agentes.

Em relação às demais variáveis, houve também correção na inflação esperada - de 3,56% para 3,47% - e no câmbio - de 4,05 R$/US$ para 4,10 R$/US$.

A semana, por fim, é marcada pela divulgação da taxa de desemprego medida pela PNAD Contínua na sexta-feira.

_______________



(***) Uma apresentação em RMarkdown do boletim Focus está disponível aqui.

Relação entre inflação e expectativa ainda é forte no Brasil

By | Indicadores

O boletim Focus divulgado agora há pouco mostra leve correção para baixo na inflação esperada para esse ano. De 3,58% para 3,56%. Mais importante do que o tamanho da correção, porém, é o sinal, dado que o mesmo mostra uma expectativa do mercado de que os choques recentes que afetaram o índice cheio não devem comprometer a trajetória da inflação ao longo de 2020.  Em outros termos, espera-se que os choques se dissipem no curto prazo.

Essa é, de fato, uma boa notícia uma vez que a expectativa de inflação no Brasil guarda (ainda) forte correlação com a inflação observada. Como é possível ver no gráfico acima, a expectativa dos agentes 12 meses à frente segue colada à inflação efetivamente observada ao longo do tempo. A seguir, plotamos um gráfico de correlação entre as variáveis.

Como é possível verificar, na região de um dígito, essa correlação é mais forte, indicando que a partir de um determinado nível, os agentes perdem o guidance gerado pela meta de inflação. A amostra do gráfico contém 218 observações mensais, para o período entre novembro de 2001 e dezembro de 2019. Os dados estão disponíveis no Banco Central.

É esperado, com efeito, que choques na inflação tenham impacto sobre as expectativas dos agentes. Hipótese que testaremos na Edição 73 do Clube do Código, a ser divulgada na próxima sexta-feira para membros do Clube e alunos do plano premium dos nossos Cursos Aplicados de R.

______________________

(***) Uma apresentação em RMarkdown do boletim Focus está disponível aqui.

Produção Industrial é o patinho feio da recuperação

By | Comentário de Conjuntura

A produção industrial tem sofrido com os choques que afetaram a economia brasileira nos últimos anos mais do que os demais setores. De modo a ilustrar esse ponto, nós importamos, tratamos e visualizamos os dados desagregados da pesquisa, com base nas atividades industriais. Os dados são importados a partir do SIDRA, com o pacote sidrar.


# Pacotes utilizados no script

library(tidyverse)
library(sidrar)
library(xtable)
library(forecast)
library(grid)
library(png)
library(gridExtra)
library(scales)
library(tstools)


# Importação dos dados
## Produção Física por Seção e Atividades
table1 = get_sidra(api='/t/3653/n1/all/v/3134,3135/p/all/c544/all/d/v3134%201,v3135%201')
## Produção Física por grandes categorias econômicas
table2 = get_sidra(api='/t/3651/n1/all/v/3134,3135/p/all/c543/129278,129283,129300,129301,129305/d/v3134%201,v3135%201')
## Ponderações
pond = read_csv2('ponderacao.csv',
locale = locale(encoding = 'Latin1'))


## Atividades com ajuste sazonal
series = as.numeric(table1$`Seções e atividades industriais (CNAE 2.0) (Código)`[1:28])

names = pond$Atividades

atividades_sa <- matrix(NA, ncol=length(series),
nrow=nrow(table1)/length(series)/2)

for(i in 1:length(series)){

atividades_sa[,i] <- table1$Valor[table1$`Variável (Código)`==3134 & table1$`Seções e atividades industriais (CNAE 2.0) (Código)`==series[i]]

}

colnames(atividades_sa) = names


## Atividades sem ajuste sazonal
atividades <- matrix(NA, ncol=length(series),
nrow=nrow(table1)/length(series)/2)

for(i in 1:length(series)){

atividades[,i] <- table1$Valor[table1$`Variável (Código)`==3135 & table1$`Seções e atividades industriais (CNAE 2.0) (Código)`==series[i]]

}

colnames(atividades) = names

Uma vez importados os dados, podemos criar algumas métricas.


vmensal = acum_i(atividades_sa, 1)
colnames(vmensal) = names

vanual = acum_i(atividades, 12)
colnames(vanual) = names

interanual = (atividades/dplyr::lag(atividades,12)-1)*100
colnames(interanual) = names

trimestral <- (((atividades_sa+dplyr::lag(atividades_sa,1)+
dplyr::lag(atividades_sa,2))/3)/
((dplyr::lag(atividades_sa,1)+
dplyr::lag(atividades_sa,2)+
dplyr::lag(atividades_sa,3))/3)-1)*100
colnames(trimestral) = names

E começar a visualizar os dados...

Os gráficos acima trazem o número índice (com ajuste sazonal) completo de quatro indicadores. Observe que houve uma queda forte da produção industrial no período da greve dos caminhoneiros em maio de 2018. Desde então, a produção industrial tem sofrido para crescer. Em particular, a produção de veículos sofre com os problemas da Argentina, principal comprador de carros brasileiros.

A Pesquisa Industrial Mensal - Produção Física, divulgada pelo IBGE, é a principal pesquisa do setor. São avaliados 805 produtos das indústrias extrativa e de transformação. Nesta, há 25 atividades industriais pesquisadas. O peso de cada uma na indústria geral é dado pelo Valor de Transformação Industrial (VTI), sendo as maiores participações dadas pela fabricação de produtos alimentícios, indústria extrativa, derivados de petróleo produção de veículos. O gráfico a seguir ilustra a participação de cada uma das atividades industriais.

A seguir nós ilustramos as métricas que construímos para uma janela mais recente. Primeiro, damos uma olhada na variação mensal.

A seguir, ilustramos a variação interanual...

Por fim, mostramos a variação acumulada em 12 meses desses índices selecionados.

Como se vê, a produção industrial mostra grandes dificuldades de voltar a crescer. É, de fato, o setor que mais sofreu com os choques recentes. Em particular, com a greve dos caminhoneiros e com os problemas na Argentina. Ao longo das próximas semanas, divulgaremos um exercício de modelagem e previsão, no âmbito do Clube do Código, que nos permitirá fazer uma análise prospectiva do setor em 2020.

_____________________

(*) Os códigos completos desse comentário estarão disponíveis logo mais no Clube do Código.

(**) Aprenda a construir análises como essa em nossos Cursos Aplicados de R:

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente