Tag

pib Archives - Análise Macro

Coletando dados do PIB com o R

By | Indicadores

O Produto Interno Bruto é o principal indicador para acompanhamento do nível de atividade no Brasil, medindo a soma final de todos os bens e serviços produzidos no país. Os dados do PIB podem ser acessados através do Sidra, sendo importados facilmente com o R através do pacote {sidrar}.  Mostramos no post de hoje como é possível extrair automaticamente e de forma totalmente reprodutível os dados do PIB da plataforma do Sidra utilizando o R.

O primeiro passo será carregar o pacote {sidrar}, que oferecerá a possibilidade de acessar a API do indicador obtido através do Sidra. Também carregamos o {tidyverse} para que possamos realizar limpezas nos dados.


Em seguida, com a API do indicador, utilizaremos a função sidrar::get_sidra() para obter os dados do indicador direto no R.

Por fim, realizamos algumas limpeza de forma que possamos trabalhar com os dados.

Agora temos em mãos a série do PIB com ajuste sazonal totalmente limpa para que possamos trabalhar!

________________________________________

Quer saber mais?

Veja nossos cursos de Macroeconomia através da nossa trilha de Macroeconomia Aplicada.

Modelagem e Previsão em 6 Passos: fluxo de trabalho com séries temporais

By | Data Science

Produzir modelos preditivos para séries temporais é uma tarefa difícil e bastante valorizada no mercado de trabalho. São diversos os procedimentos que um profissional dessa área precisa sempre ter no radar e, se generalizarmos isso em um fluxo, a distância entre a idealização do modelo e sua implementação pode ser mais curta e menos árdua. Neste texto descrevemos resumidamente o dia a dia de um profissional que trabalha com previsões e mostramos um exemplo de rotinas em R!

Fluxo de trabalho

O processo de desenvolver modelos preditivos para séries temporais pode ser generalizado e dividido em 6 etapas:

Fonte: Hyndman and Athanasopoulos (2021)

Este fluxo, em resumo, descreve como é o dia a dia de trabalho de modelagem e previsão em algumas etapas organizadas. São elas:

Preparar os dados

O primeiro passo é preparar os dados no formato correto para uso em modelos. Esse processo pode envolver a coleta e importação de dados, a identificação de valores ausentes, agregação/sumarização/ajustes/filtros nas séries e outras tarefas de pré-processamento (veja um post sobre coleta de dados aqui). O objetivo será, em geral, construir uma matriz de variáveis onde cada variável terá sua própria coluna, cada linha formará uma observação e os valores são armazenados nas células. Esse é o princípio de dados "tidy". A facilidade que o pacote {tsibble} e outros do {tidyverse} oferecem simplifica consideravelmente esta etapa usando o R.

Vale dizer que muitos modelos têm pressupostos e requisitos diferentes, sendo que você precisará levar isso em consideração ao preparar os dados. Alguns exigem que a série seja estacionária, outros exigem que não haja valores ausentes. Dessa forma, você precisará conhecer bem os seus dados enquanto os prepara e a análise exploratória é outra etapa que caminhará lado a lado.

Visualizar os dados

A visualização é uma etapa essencial para a compreensão dos dados. Suas séries temporais apresentam tendência? Possuem sazonalidade? Há quebras ou observações extremas nas séries (outliers)? Observar seus dados, através de uma análise exploratória (veja um post sobre aqui no blog) permite identificar estes padrões comuns e, posteriormente, especificar um modelo apropriado. Essa etapa pode andar em conjunto com a etapa de preparação dos dados, de modo que após entender os dados você talvez precise voltar a um passo anterior e aplicar uma transformação, por exemplo, nas séries. Os pacotes {ggplot2}, {feasts}, {fabletools} e outros oferecem formas elegantes e práticas de visualizar seus dados.

Definir o modelo

Existem muitos modelos de séries temporais diferentes que podem ser usados para previsão. Especificar um modelo apropriado para os dados é essencial para produzir previsões. Nesse sentido, além de conhecer os seus dados você precisará ter conhecimento sobre os modelos que pretende trabalhar. Papers publicados são, em geral, boas fontes para buscar esse conhecimento técnico.

Grande parte dos modelos econométricos é descrita em Hyndman and Athanasopoulos (2021) e podem ser implementados pelo pacote {fable} através de funções específicas como ARIMA(), TSLM(), VAR(), etc., cada uma usando uma interface de fórmula (y ~ x). As variáveis de resposta são especificadas à esquerda da fórmula e a estrutura do modelo, que pode variar, é escrita à direita. Para outros modelos fora do escopo do {fable} a lógica e sintaxe é semelhante, quase sempre utilizando uma interface de fórmula.

Estimar o modelo

Uma vez que um modelo apropriado é definido, passamos à estimação do modelo com os dados. Uma ou mais especificações de modelo podem ser estimadas usando a função model() do pacote {fabletools} — framework que contempla grande parte dos modelos econométricos; para outros modelos há pacotes e funções específicas, mas com sintaxe semelhante.

Avaliar a performance

Após termos um modelo estimado, é importante verificar o desempenho dele nos dados. Existem várias ferramentas de diagnóstico disponíveis para verificar o ajuste do modelo, assim como medidas de acurácia que permitem comparar um modelo com outro; o RMSE é a métrica mais comumente utilizada para a maioria dos problemas de previsão. Conforme o diagnóstico do modelo, em seguida possivelmente sejam necessárias readequações, seja na especificação ou até mesmo nos dados utilizados. Em outras palavras, o fluxo de trabalho não é simplesmente um amontoado de procedimentos a serem implementados sequencialmente, mas sim um processo de descobrimento que envolve, na vida real, sucessivas tentativas e erros.

Além disso, se o interesse é previsão, há técnicas como a validação cruzada que auxiliam na tomada de decisão entre mais de um modelo (veja um post sobre isso aqui no blog). É sempre preferível ter mais de um modelo "candidato" potencialmente usado para fazer previsões, além de modelos básicos para simples comparação.

Realizar previsões

Com um modelo especificado, estimado e diagnosticado, é hora de produzir as previsões fora da amostra. Para alguns modelos você poderá simplesmente chamar uma função, como a forecast() ou predict() no R, especificando o número de períodos (horizonte de previsão) que deseja obter previsões; para outros você precisará prover uma tabela com os valores futuros das variáveis regressoras utilizadas no modelo, que servirá para produzir as previsões da variável de interesse, ou seja, você precisará de cenários.

Exemplo no R

Com esse esquema em mente, vamos ilustrar o fluxo de trabalho com um exercício prático e didático: construir um modelo de previsão para a taxa de crescimento anual do PIB brasileiro.

Para reproduzir o exercício a seguir você precisará dos seguintes pacotes:

Preparar os dados

Por conveniência, utilizaremos o dataset global_economy armazenado como um objeto tsibble, trazendo variáveis econômicas em frequência anual para diversos países. Nosso interesse é a série da taxa de crescimento do PIB brasileiro:

Visualizar os dados

Visualização é uma etapa essencial para entender os dados, o que permite identificar padrões e modelos apropriados. No nosso exemplo, primeiro criamos um gráfico de linha para plotar a série do PIB brasileiro usando a função autoplot():

Podemos também plotar os correlogramas ACF e PACF para identificar o processo estocástico da série, obtendo alguns modelos candidatos:

Definir o modelo

Existem muitos modelos de séries temporais diferentes que podem ser usados para previsão, e especificar um modelo apropriado para os dados é essencial para produzir previsões. Nesse exercício didático focaremos em modelos univariados simples para explicar o PIB brasileiro.

Se formos analisar somente pelos correlogramas ACF e PACF, podemos identificar alguns modelos possivelmente candidatos: ARIMA(1,0,2), ARIMA(1,0,0) e ARIMA(0,0,2). Contudo, se nossa leitura estiver incorreta, podemos contar ainda com a tecnologia ao nosso favor utilizando a seleção automatizada da estrutura do modelo. Isso é possível graças ao algoritmo de seleção automatizada da especificação do ARIMA criado pelo prof. Rob Hyndman.

Por fim, além destes possíveis modelos candidatos, também estimaremos um modelo de benchmark na forma de um passeio aleatório, apenas para ter uma base de comparação de previsões dos modelos.

Estimar o modelo

Identificado um modelo (ou mais) apropriado, podemos em seguida fazer a estimação usando a função model()1. Existem diversas funções especiais para definir a estrutura do modelo e em ambos os lados da fórmula podem ser aplicadas transformações. Nesse caso definiremos apenas a estrutura básica do ARIMA; a função ARIMA() também define automaticamente a estrutura sazonal, mas você pode desabilitar isso (consulte detalhes da documentação do {fable}).

O objeto resultante é uma "tabela de modelo" ou mable, com a saída de cada modelo em cada coluna.

Diagnóstico do modelo

Para obter os critérios de informação use a função glance():

Os critérios de informação indicam que, dos modelos estimados, o modelo automatizado ARIMA(1,1,1) apresentou o menor valor de AICc — seguido pelos demais identificados pelos correlogramas ACF e PACF. Com a função gg_tsresiduals() podemos verificar o comportamento dos resíduos deste modelo, indicando que os resíduos se comportam como ruído branco:

Um teste de autocorrelação (Ljung Box) retorna um p-valor grande, também indicando que os resíduos são ruído branco:

Também pode ser interessante visualizar o ajuste do modelo. Utilize a função augment() para obter os valores estimados:

Outros diagnósticos e avaliações podem ser realizados. Se você estiver especialmente interessado em previsão, considere implementar o método de validação cruzada, como explicado neste post.

Realizar previsões

Com o modelo escolhido, previsões podem ser geradas com a função forecast() indicando um horizonte de escolha.

Perceba que os pontos de previsão médios gerados são bastante similares a um processo de passeio aleatório (equivalente a um ARIMA(0,1,0)). O trabalho adicional de especificar termos AR e MA trouxe pouca diferença para os pontos de previsão neste exemplo, apesar de ser perceptível que os intervalos de confiança do modelo auto ARIMA são mais estreitos do que de um passeio aleatório.

Além disso, a previsão fora da amostra gerada ficou bastante aquém dos dados reais para a taxa de crescimento do PIB brasileiro observados no horizonte em questão, configurando apenas um exercício didático.

Saiba mais

Este é apenas um exercício simples e didático demonstrando um fluxo de trabalho de modelagem e previsão. Existem diversos tópicos que podem ser aprofundados e se você quiser saber mais confira o curso de Modelos Preditivos da Análise Macro.

Confira também outros exercícios aplicados com pacotes do {tidyverts}:

Referências

Hyndman, R. J., & Athanasopoulos, G. (2021) Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. OTexts.com/fpp3. Accessed on 2022-04-01.

 


1A função suporta estimação dos modelos com computação paralela usando o pacote {future}, veja detalhes na documentação e este post para saber mais sobre o tema.

Coletando dados do SIDRA com o Python

By | Indicadores

O SIDRA (Sistema IBGE de Recuperação Automática) é uma plataforma do IBGE criada com o objetivo de consultar as pesquisas criados e disponibilizadas pelo Instituto. A interface permite que sejam acessado através de API's informações e dados sobre indicadores importantes. O objetivo do post de hoje será mostrar como é possível acessar estes dados utilizando o Python, utilizando a série do PIB como exemplo.

A API do SIDRA permite a extração dos dados disponibilizados. Por sorte, existe o {sidrapy} que permite acessar facilmente estes dados e realizar a importação direta para a linguagem.

Apesar de mais ser mais facilitado do que retirar diretamente da API do SIDRA, é necessário alguns conhecimentos de uso da biblioteca e o posterior tratamento de dados. Nosso objetivo neste post será de elencar os procedimento necessário, bem como ensinar como realizar a limpeza.

sidrapy

A biblioteca oferece uma única função, get_table(), que permite através de seus argumentos especificar a série e seus parâmetros para a importação.

Os diferente tipos de parâmetros definem a tabela e suas dimensões (períodos, variáveis, unidades territoriais e classificações/categorias). Iremos elencar a baixo cada parâmetro, como obter e onde se insere na função (para mais observações ver a página de ajuda da API do SIDRA).

  • t (table_code) - é o código da tabela referente ao indicador e a pesquisa;
  • p (period) - utilizado para especificar o período;
  • v (variable) - para especificar as variáveis desejadas;
  • n (territorial_level) - especifica os níveis territoriais;
  • n/ (ibge_territorial_code) - inserido dentro do nível territorial, especificar o código territorial do IBGE;
  • c/ (classification/categories) - especifica as classificações da tabela e suas respectivas categorias.

Para obter a tabela e os códigos, o primeiro passo será entrar na interface do SIDRA e buscar a pesquisa/indicador de interesse através do site e em seu buscador https://sidra.ibge.gov.br/home/

Escolhemos como exemplo a série do PIB sem ajuste sazonal e com ajuste sazonal, referente a tabela 1620 e 1621, respectivamente, que se trata da série das Contas Nacionais Trimestrais.

Através da interface, selecionamos a variável "Série encadeada do índice de volume trimestral (Base: média 1995 = 100) (Número índice)"; Setores e subsetores (categorias) "PIB a preços de mercado"; Trimestre (período) - todo o período; Unidade Territorial "Brasil".

Com efeito, será gerado os parâmetros para API no quadro de links (localizado ao fim da página). No caso da tabela 1620, foi produzido a seguinte API: https://apisidra.ibge.gov.br/values/t/1620/n1/all/v/all/p/all/c11255/90707/d/v583%202

 

O que nos interessa, entretanto, serão os códigos posteriores a /t/, sendo representados pelos parâmetros necessários para utilizar a função get_table() do {sidrapy} de acordo com os caracteres do parâmetros listados acima.

/t/1620/n1/all/v/all/p/all/c11255/90707/d/v583%202

Sendo assim, temos que:

  • t (table_code) = 1620
  • n (territorial_level) = 1
  • n/ (ibge_territorial_code) = all
  • v (variable) = all
  • p (period) = all
  • c/ (categories) = 11255/90707

PIB sem ajuste sazonal

Abaixo, mostraremos como é possível retirar os dados com o get_table() utilizando os parâmetros acima. Veja como cada argumento se insere no contexto de cada parâmetro.

Após a importação, vemos que o dados não estão da forma que gostaríamos, sendo necessário, portanto, a realização de uma limpeza.

O primeiro passo será alterar o nomes da colunas com os nomes da primeira observação, e retirar estes dados do data frame. Também é necessário alterar o tipo de dados da coluna "Valor" para float.

Devemos então alterar os nomes das colunas de interesse e remover o restante das colunas. Deixemos as variáveis que representam o valor da série e o código do trimestre.

Através de uma inspeção no data frame, vemos que a coluna de trimestre está em formato de ano e trimestre numérico (199601, 199602...), devemos realizar um procedimento para que o Python reconheça esta coluna como data.

Para lidar com isto, removemos da coluna o valor numérico referente ao trimestre e alteramos para um valor que se aproxime de um mês relacionado em período de trimestres. Juntamos novamente com o ano em uma nova coluna.

Por fim, utilizamos a função to_datetime() para transformar em formato de data e inserir dentro do índice.

PIB com ajuste sazonal

Realizamos os mesmo procedimento utilizando a tabela 1620 referente ao PIB com ajuste Sazonal.

Criar o gráfico

Por fim, com os dados devidamente tratados, criamos um gráfico de ambas as séries. Antes, porém, iremos unir os data frames e o manipular para o formato long de forma que facilite o uso da função lineplot().

Quer saber mais?

Fazendo o deploy de um dashboard de Shiny de nível de atividade

By | Indicadores

Um dashboard é um painel que oferece uma interface gráfica (normalmente dinâmica), que permite o usuário interagir com os elementos visuais, permitindo que controle as entradas de informações. É possível construir um painel interativo totalmente reprodutível com atualizações automáticas de diversos dados econômicos com o R. No post de hoje, mostraremos como é possível realizar o deploy de um dashboard de nível de atividade econômica, construído através do nosso Curso de Análise de Conjuntura com o R.

Um ponto interessante do R, como muitos sabem, é a sua capacidade de análise de dados a partir da análise gráfica, e não obstante, diversos pacotes da linguagem, bem como Rstudio, facilitam o trabalho para a construção de uma dashboard de diferentes formas para diversas áreas de conhecimento.

Aqui na Análise Macro ensinamos com maestria a construção desses dashboards dentro da área de economia e finanças através dos nossos cursos. Além de um curso próprio para a construção de painéis interativos no R, também possuímos os cursos de Análise de Conjuntura, Modelo Preditivos aplicado à Macroeconomia e R para o Mercado Financeiro, que ensinam a criação de dashboards. Também realizamos postagens mostrando formas de se construir dashboards e no qual os códigos podem acessados através do Clube AM.

Após a construção do dashboard, um passo interessante é não manter somente salvo localmente consigo, afinal, é interessante que todos possam ver os projetos que foram construídos através da internet. Por isso, ensinaremos como realizar o deploy (implantação) do dashboard em páginas web. A forma mais simples de realizar esse processo é através do Shiny apps, através do site https://www.shinyapps.io/.

  • Shiny apps: Plataforma do Rstudio para implantação de dashboards na web.

Nível de atividade de econômica

Utilizaremos como exemplo de deploy o dashboard criado através do nosso curso de Análise de Conjuntura, que acompanha os principais indicadores econômicos do nível de atividade do Brasil. Com códigos totalmente reprodutíveis, essa dashboard permite acompanhar diversos indicadores em tempo real.

 

Caso tenha interesse em acessar e visualizar o dashboard criado, você pode fazer através do site https://analisemacro.shinyapps.io/dashboard_atividade/ - no qual fizemos o deploy através do Shiny App para manter o dashboard acessível.

Ensinaremos a seguir todos os passos para realizar o deploy em um site no Shiny App.

Realizando o deploy no Shinyapps.io

Para realizar o deploy seguiremos os seguintes passos de forma que seja possível ter uma compreensão.

  1. Criar um dashboard com o R através dos Cursos da Análise Macro
  2. Criar uma conta no https://www.shinyapps.io/
  3. Configurar autenticação - nesta parte será conectado o seu Rstudio local com o servidor do Shiny app, de forma que seja possível exportar da máquina o Dashboard para uma aplicação web.
    1. No canto superior direito, clique no nome de perfil e selecione "Token"
    2. Crie um novo Token, e ao criar um novo, clique em "Show". Com isso, aparecerá uma função do R, do pacote {rsconnect}, no qual deverá ser o ponto de conexão entre o Rstudio da sua máquina com o Shiny app.
    3. Clique em "Copy to clipboard", cole no console o conteúdo e aperte enter.
    4. Feito isso, deveremos somente realizar o deploy do Dashboard no Shiny, como já foi realizado a conexão, apenas deverá ser feito o deploy. Para isso, digite no console
      rsconnect::deployApp()

      e aperte enter (o processo pode demorar).

    5. O dashboard será exportado para os servidores do Shiny app e poderá ser acessado por sua conta no navegador.

Feito os passos, você poderá ter acesso a url de seu dashboard na web, podendo compartilhar para qualquer lugar que queira. Caso queira atualizar o dashboard, você pode abrir novamente o Rstudio com o arquivo do script do dashboard aberto e utilizar novamente

rsconnect::deployApp()

Aparecerá uma mensagem perguntando se realmente deseja atualizar, digite y e aperte enter, com efeito, será atualizado seu dashboard no Shiny App.

 

 

 

Relatório AM #39 - Análise de Dados de Economia Internacional no R

By | Indicadores

Ao realizar análises de conjuntura econômica, devemos ter em mente diversos indicadores em diferentes áreas, e o cenário externo deve ter um espaço especial nessas análises. O foco é acompanhar indicadores econômicos das principais economias internacionais, de forma a tirar conclusões sobre os seus efeitos sobre o Brasil e na economia mundial. No Relatório AM de hoje iremos mostrar como é possível acompanhar esses indicadores no R. Você também pode aprender a como realizar uma análise completa através do nosso Curso de Análise de Conjuntura com o R.

Pacotes

Para coletar, tratar e visualizar os dados, devemos utilizar alguns pacotes importantes. Utilizaremos o pacote {OECD} para retirar os dados de Economias Internacionais através da base de dados do site de OECD.  Para tratamento, usaremos a família de pacotes do tidyverse.


library(tidyverse)
library(OECD)
library(lubridate)

Parâmetros da OECD

Retiramos os parâmetros dos dados através do site da OECD. Como exemplo, iremos utilizar dois indicadores, o PIB pela ótica da despesa e a Inflação de diversos países.


## Parâmetros e códigos para coleta de dados
parametros <- list(
# Contas Nacionais Trimestrais (código do dataset na OECD)
dataset_qna = "QNA",

# Main Economic Indicators - dataset com principais indicadores (código do dataset na OECD)
dataset_mei = "MEI",
# PIB - Ótica da despesa (lista de países e variáveis para filtro no dataset QNA)
filter_gdp = "AUS+CHL+JPN+MEX+USA+EA19+CHN+IND+RUS+SAU.B1_GE.GYSA+GPSA.Q",
# Taxa de Inflação (lista de países e variáveis para filtro no dataset MEI)
filter_inflation = "AUS+CHL+JPN+MEX+USA+EA19+CHN+IND+RUS+SAU.CPALTT01.GPSA+GY.M"
)

Coleta dos dados

Coletamos os indicadores através do pacote {OECD}.


# Coleta dos dados

# PIB - Ótima da despesa
str_gdp <- OECD::get_data_structure(parametros$dataset_qna)
raw_gdp_oecd <- OECD::get_dataset(
dataset = parametros$dataset_qna,
filter = list(parametros$filter_gdp),
pre_formatted = TRUE
)

# Taxa de Inflação
str_inflation <- OECD::get_data_structure(parametros$dataset_mei)
raw_inflation_oecd <- OECD::get_dataset(
dataset = parametros$dataset_mei,
filter = list(parametros$filter_inflation),
pre_formatted = TRUE
)

Tratamento

Realizamos os tratamentos utilizando o universo do tidyverse para visualizarmos os dois indicadores.


## Tratamento dos dados

# PIB - Ótica da despesa
gdp_oecd <- raw_gdp_oecd %>%
dplyr::filter(FREQUENCY == "Q") %>%
dplyr::select(
date = obsTime,
location = LOCATION,
measure = MEASURE,
value = obsValue,
status = dplyr::contains("OBS_STATUS")
) %>%
dplyr::left_join(
str_gdp$LOCATION,
by = c("location" = "id")
) %>%
dplyr::mutate(
dplyr::across(
dplyr::any_of("status"),
~dplyr::recode(
status,
"E" = "Estimated value",
"P" = "Provisional value"
)
),
value = as.numeric(value),
measure = dplyr::recode(
measure,
"GPSA" = "% change from same quarter of previous year",
"GYSA" = "% change from previous quarter"
),
label = stringr::str_remove_all(label, " \| \"),
date = lubridate::yq(date)
)



# Taxa de Inflação
inflation_oecd <- raw_inflation_oecd %>%
dplyr::select(
date = obsTime,
location = LOCATION,
measure = MEASURE,
value = obsValue,
status = dplyr::contains("OBS_STATUS")
) %>%
dplyr::left_join(
str_inflation$LOCATION,
by = c("location" = "id")
) %>%
dplyr::mutate(
date = paste0(date, "-01") %>% lubridate::as_date(format = "%Y-%m-%d"),
dplyr::across(
dplyr::any_of("status"),
~dplyr::recode(
status,
"E" = "Estimated value",
"P" = "Provisional value"
)
),
value = as.numeric(value),
measure = dplyr::recode(
measure,
"GY" = "Growth rate same period previous year"
),
label = stringr::str_remove_all(label, " \| \")
)

Visualização

Visualizamos os gráficos através do ggplot2


# Cores dos gráficos

colors <- c(
blue = "#282f6b",
red = "#b22200",
yellow = "#eace3f",
green = "#224f20",
purple = "#5f487c",
orange = "#b35c1e",
turquoise = "#419391",
green_two = "#839c56",
light_blue = "#3b89bc",
gray = "#666666"
)

# Gerar gráfico
gdp_oecd %>%
dplyr::filter(
date >= max(date) %m-% lubridate::years(2),
measure == "% change from previous quarter",
!location %in% c("CHL", "RUS", "SAU", "AUS")
) %>%
ggplot(aes(x = date, y = value, colour = label))+
geom_line(size = .8)+
geom_hline(yintercept = 0, linetype = "dashed")+
ggplot2::scale_colour_manual(NULL, values = unname(colors))+
labs(x = "",
y = "%",
title = "PIB - Crescimento trimestral (TsT)",
subtitle = "Países selecionados, ótica da despesa",
caption = "Fonte: analisemacro.com.br com dados da OECD.")+
theme(
plot.title = ggplot2::element_text(size = 14, face = "bold", hjust = 0, vjust = 2),
plot.subtitle = ggplot2::element_text(size = 12, face = "italic", hjust = 0),
plot.caption = ggplot2::element_text(size = 10, hjust = 1),
panel.background = ggplot2::element_rect(fill = "white", colour = "white"),
axis.line.x.bottom = ggplot2::element_line(colour = "black"),
axis.line.y.left = ggplot2::element_line(colour = "black"),
legend.position = "top",
legend.direction = "horizontal",
strip.background = ggplot2::element_rect(fill = "transparent", colour = NA),
strip.text = ggplot2::element_text(face = "bold")
)+
facet_wrap(~label, scales = "free_y") +
ggplot2::theme(legend.position = "none")


# Gerar gráfico
inflation_oecd %>%
dplyr::filter(
date >= max(date) %m-% lubridate::years(2),
!location %in% c("CHL", "RUS", "SAU", "AUS")
) %>%
ggplot(aes(x = date, y = value, colour = label))+
geom_line(size = .8)+
geom_hline(yintercept = 0, linetype = "dashed")+
ggplot2::scale_colour_manual(NULL, values = unname(colors))+
labs(x = "",
y = "%",
title = "Inflação - Variação interanual (AsA)",
subtitle = "Países selecionados",
caption = "Fonte: analisemacro.com.br com dados da OECD.")+
theme(
plot.title = ggplot2::element_text(size = 14, face = "bold", hjust = 0, vjust = 2),
plot.subtitle = ggplot2::element_text(size = 12, face = "italic", hjust = 0),
plot.caption = ggplot2::element_text(size = 10, hjust = 1),
panel.background = ggplot2::element_rect(fill = "white", colour = "white"),
axis.line.x.bottom = ggplot2::element_line(colour = "black"),
axis.line.y.left = ggplot2::element_line(colour = "black"),
legend.position = "none",
legend.direction = "horizontal",
strip.background = ggplot2::element_rect(fill = "transparent", colour = NA),
strip.text = ggplot2::element_text(face = "bold")
)+
facet_wrap(~label, scales = "free_y")

Quer saber mais?

Veja nosso Curso de R para Economistas, e nosso Curso de Análise de Conjuntura com o R. A partir do conhecimento obtido com os cursos, você pode realizar análises completas sobre a economia nacional e internacional.

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

Assinar Gratuitamente