Tag

sidra 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.

Análise de Dados da Inflação utilizando o Python

By | Indicadores

A inflação é conhecida como o termo que representa a taxa de crescimento do nível geral de preços entre dois períodos distintos. No Brasil, o indicador que consolidou-se como o principal índice de preços é o Índice de Preços ao Consumidor Amplo (IPCA), divulgado pelo IBGE e amplamente utilizado pela autoridade monetária como referência para realizar o controle da inflação. No post de hoje, mostraremos como podemos realizar a importação dos dados do IPCA e visualizar como forma de obter um análise.

O IPCA é divulgado mensalmente pelo IBGE, portanto, podemos importar diretamente do SIDRA os dados do indicador utilizando a biblioteca {sidrapy}. Primeiro, iremos buscar a série que diz respeito a variação mensal, acumulada em 3 meses, acumulada em 6 meses, acumulada em 12 meses e acumulado no ano, que diz respeito a tabela 1737.

Em um segundo momento, buscaremos a série de pesos e variação de cada grupo do IPCA, e veremos a contribuição de cada grupo sobre o IPCA, através da tabela 7060.

Para importar as séries com a função get_table do {sidrapy}, buscamos a API das tabelas, com os parâmetros configurados, de forma a obter os códigos. Ensinamos este processo em um post anterior: Coletando dados do SIDRA com o Python.

Variações do IPCA: tabela 1737



 

IPCA Contribuição por grupo: tabela 7060



Quer saber mais?

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

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 limpeza de dados Macroeconômicos com R e o Python

By | Hackeando o R, Python

O processo de limpeza de dados é extremamente importante para a análise de dados. Sem esta etapa, seria impossível lidar com dados "sujos", dos quais possuem formatos, classes e estruturas não compatíveis com o R e o Python, principalmente para o modo de lidar com dados Macroeconômicos. O objetivo do post de hoje será mostrar os pontos principais que devem ser levados em consideração ao realizar o processo de limpeza de dados.

Ao realizar a importação de dados Macroeconômicos, é comum enfrentar alguns desafios para efetivamente lidar com o dataset, sendo eles:

  • Nomes de colunas indesejadas;
  • Colunas (variáveis) não necessárias;
  • Filtragem;
  • Formatos/tipos dos dados de variáveis não corretos;
  • Problemas com o formato de data

Cada problema listado acima pode ser resolvido facilmente utilizando o R e o Python. Elencaremos cada problema em ambas as linguagens

Limpeza de dados Macroeconômicos no R

Tomaremos como exemplo a série do PIB a preços de mercado em milhões retirado do Ipeadata utilizando o pacote {ipeadatar}. O primeiro passo será investigar o data frame e sua estrutura

Vemos que o data frame já é importado em classe tibble com cinco colunas, representando o código, a data, o valor da série, o nome do território e o código territorial, respectivamente. Não há motivos para manter as colunas que não sejam a de data e do valor da série, portanto, iremos remover estas colunas utilizando a função select().

O próximo passo, este mais a gosto do usuário, será renomear as colunas do objeto. Como queremos que sejam facilmente reconhecidos as variáveis, utilizaremos nomes que sugerem o seu significado.

Um ponto interessante do R é a facilidade de manipulação com séries temporais. Ao inspecionar o tibble, vemos que há um intervalo trimestral para as observações, seria interessante, portanto, utilizar um formato de data mais conveniente para o caso. Podemos realizar a mudança utilizando a função yearquarter() do pacote {tsibble}.

Fácil até então, certo? Porém, nem sempre pode ser tão facilitado assim. Um caso em que as variáveis não são importadas com seus devidos formatos ocorre ao utilizar o pacote {sidrar} para obter dados do Sidra - IBGE.

Como exemplo podemos utilizar a Pesquisa Mensal de Serviços da Tabela 6442. Obtemos sua API através do site do Sidra.

Ao analisar o data frame importado, não parece tão simples, certo? O primeiro passo para a limpeza, será definir quais variáveis necessitamos e destas, quais devem ser realizadas as manipulações. Para o momento, queremos o valor da variável, a coluna que define a categoria que o valor se encaixa, uma representado se o valor possui ou não ajuste sazonal, uma coluna definindo qual medida se refere a variável, sendo os valores a receita nominal ou o volume, e não menos importante, a data das observações.

O processo será selecionar estas colunas citadas, mudar seus nomes, filtrar a categoria de interesse da medida, mudar de long para wide e por fim, realizar as mudanças necessárias para a data.

Limpeza de dados Macroeconômicos no Python

Todos os procedimentos acima podem ser feitos também utilizando o Python. Seremos mais diretos desta vez, importando a tabela 1442 do Sidra com a biblioteca {sidrapy} que se refere aos dados do IPCA.

O primeiro procedimento será avaliar  o data frame importado e realizar os ajustes necessários.

Veja que os dados importados possuem colunas com nomes diferentes daqueles importados pelo R, a diferença estão que as colunas com os verdadeiros nomes estão localizados na primeiro observação do data frame, ou seja, precisamos substituir as colunas pela primeira observação.

O segundo passo será selecionar apenas as variáveis de interesse, bem como alterar os seus nomes para algo mais útil.

Por fim, devemos realizar o filtro para a variação do IPCA mensal, de acordo com a categoria inserida na coluna 'variable' e em seguida, alterar a coluna de data para o tipo datetime e a realocar para o índice do data frame.

Quer saber mais sobre R e Python?

Veja nossos cursos de:

Relatório AM #37 - Produção Industrial

By | Indicadores

A produção industrial é uma pesquisa realizada mensalmente pelo IBGE, como forma de acompanhar o comportamento das indústrias do Brasil. A pesquisa revela informações importantes sobre o nível de atividade e os rumos do crescimento econômico do país. No relatório AM de hoje mostramos como pode ser fácil capturar os dados, tratá-los e comunicar os resultados de forma automática e reprodutível dentro do R.

## Cria função para calcular variação dos índices

var_indice <- function(x, lag) {
w <- (x/dplyr::lag(x, lag) - 1)*100
return(w)
}


## Cria função para calcular a variação acumulada dos índices

acum_i <- function(data, n){

data_ma_n <- RcppRoll::roll_meanr(data, n)

data_lag_n <- dplyr::lag(data_ma_n, n)

data_acum_n = (((data_ma_n/data_lag_n)-1)*100)

return(data_acum_n)

}

# Cria um vetor de cores para utilizar nos gráficos

colours <- c("#282f6b", "#b22200", "#eace3f", "#224f20")

# Pacotes utilizados
library(tidyverse)
library(sidrar)
library(RcppRoll)


# Coleta a PIM com ajuste sazonal

pim_aj <- get_sidra(api='/t/3653/n1/all/v/3134/p/all/c544/all/d/v3134%201') %>%
mutate(date = parse_date(`Mês (Código)`, format = "%Y%m")) %>%
select(date,
atividades = "Seções e atividades industriais (CNAE 2.0)",
value = "Valor") %>%
pivot_wider(names_from = atividades,
values_from = value) %>%
as_tibble()


## variação na margem

var_marg <- pim_aj %>%
mutate(across(where(is.numeric), ~ var_indice(.x, lag = 1))) %>%
slice(-1)

var_marg_long <- var_marg %>%
pivot_longer(cols = -date,
names_to = "variable")

# Variação Marginal {-}

## Visualização dos dados - Variação Marginal
filter(var_marg_long, date > "2018-12-31" &
variable %in% c('1 Indústria geral',
'2 Indústrias extrativas',
'3 Indústrias de transformação',
"3.29 Fabricação de veículos automotores, reboques e carrocerias")) %>%
ggplot(aes(x= date, y = value, colour = variable))+
geom_line(aes(colour= variable))+
scale_fill_manual(values=colours)+
scale_colour_manual(values=colours)+
geom_hline(yintercept = 0, colour='black', linetype='dashed')+
facet_wrap(~variable, scales = 'free')+
theme(legend.position = 'none',
strip.text = element_text(size=7, face='bold'),
axis.text.x = element_text(size=6),
plot.title = element_text(size=10, face='bold'),
plot.subtitle = element_text(size=8, face='italic'))+
scale_x_date(breaks = date_breaks("3 month"),
labels = date_format("%m/%y"))+
theme(axis.text.x=element_text(angle=45, hjust=1))+
labs(x='', y='',
title='Produção Industrial',
subtitle = 'Variação contra o mês imediatamente anterior (%)',
caption='Fonte: analisemacro.com.br com dados do IBGE')

É extremamente fácil coletar, tratar e visualizar dados no R. Além de gráficos da variação mensal da PIM, é possível também criar gráficos da variação interanual e variação acumulada no R. Também é fácil a criação de tabelas bem formatas e estilizadas. Tudo isso você pode aprender com o nosso Curso de Análise de Conjuntura, onde ensinamos a teoria e prática com o R.

___________________________

 

 

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

Assinar Gratuitamente