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

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.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como usar automação com Python e IA na análise de ações

No cenário atual, profissionais de finanças buscam formas mais rápidas, eficientes e precisas para analisar dados e tomar decisões. Uma das grandes revoluções para isso é o uso combinado de Python, automação e modelos de linguagem grande (LLMs), como o Google Gemini. O dashboard que criamos é um ótimo exemplo prático dessa integração, reunindo dados, cálculos, visualizações e análise textual em um único ambiente.

Análise de ações com IA - um guia inicial

Neste artigo, você vai aprender a integrar IA na análise de ações de forma automatizada utilizando Python. Ao final, você terá um pipeline completo capaz de coletar dados de mercado, gerar gráficos, elaborar relatórios com linguagem natural.

Quais são as ferramentas de IA?

Um aspecto crucial dos Agentes de IA é a sua capacidade de tomar ações, que acontecem por meio do uso de Ferramentas (Tools). Neste artigo, vamos aprender o que são Tools, como defini-las de forma eficaz e como integrá-las ao seu Agente por meio da System Prompt. Ao fornecer as Tools certas para o seu Agente — e ao descrever claramente como essas Tools funcionam — você pode aumentar drasticamente o que sua IA é capaz de realizar.

Boletim AM

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

Boletim AM

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

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.