Introdução

Há diferentes formas de tabular dados armazenados em servidores API (Application Programming Interfaces), sem necessariamente consumir grande espaço na memória de seu computador. Esta nota visa demonstrar como integrar dados de uma pesquisa do IBGE, Produto Interno Bruto dos Municípios, à malha municipal do Estado do Mato Grosso do Sul, usando para isso, funções em R desenvolvidas para recuperação de dados API.

O IBGE armazena seu banco de dados na plataforma SIDRA (Sistema IBGE de Recuperação Automática). Inicialmente, ela foi criada para facilitar acesso a dados abertos fazendo consultas diretas no site. No entanto, essa pesquisa pode ser bastante exaustiva, especialmente para pesquisadores de trabalham com grande volume de informações. Visando essa questão, o pacote sidrar em R foi criado com o propósito de oferecer um método mais eficiente de recuperação. Nesse exercício, utilizaremos duas funções desse pacote: search_sidra e get_sidra. A primeira retorna uma consulta baseada em uma palavra chave. A segunda utiliza uma sequência de parâmetros para localizar e recuperar dados API.

Na sequência, usando o pacote geobr, demonstramos como recuperar arquivos shapefiles diretamente da plataforma Malha Municipal do IBGE. Após receber um tratamento simples, os dados da pesquisa PIB dos Municípios são inseridos nos arquivos vetoriais. Mapas exploratórios então são gerados com auxílio dos pacotes tidyverse, sf e ggspatial.

Faço aqui duas ponderações. Ao longo do texto, o leitor encontrará links de acesso a conteúdos e fontes de dados. Isso permite uma visão mais aprofundada especialmente sobre os pacotes utilizados. Presumo que leitor já tenha instalado os pacotes em seu computador. Caso contrário, use a função install.packages, como por exemplo: install.packages('sidrar').

Acessando API do IBGE com sidrar

Após carregar o pacote

library(sidrar)

use uma palavra chave para ter acesso as primeiras informações sobre a tabela de dados de interesse. Aqui, o procedimento de pesquisa foi introduzido da seguinte forma:

search_sidra(c("produto interno bruto"))
## [1] "Tabela 21 - Produto interno bruto a preços correntes, impostos, líquidos de subsídios, sobre produtos a preços correntes e valor adicionado bruto a preços correntes total e por atividade econômica, e respectivas participações - Referência 2002 (Série encerrada)"
## [2] "Tabela 599 - Índice de Gini do produto interno bruto a preços correntes e do valor adicionado bruto a preços correntes por atividade econômica - Referência 2002 (Série encerrada)"                                                                                   
## [3] "Tabela 902 - Intensidade energética"                                                                                                                                                                                                                                  
## [4] "Tabela 1193 - Produto Interno Bruto per capita, a preços de 1995"                                                                                                                                                                                                     
## [5] "Tabela 1194 - Produto Interno Bruto per capita"                                                                                                                                                                                                                       
## [6] "Tabela 2072 - Contas econômicas trimestrais"                                                                                                                                                                                                                          
## [7] "Tabela 5938 - Produto interno bruto a preços correntes, impostos, líquidos de subsídios, sobre produtos a preços correntes e valor adicionado bruto a preços correntes total e por atividade econômica, e respectivas participações - Referência 2010"                
## [8] "Tabela 5939 - Índice de Gini do produto interno bruto a preços correntes e do valor adicionado bruto a preços correntes por atividade econômica - Referência 2010"                                                                                                    
## [9] "Tabela 6784 - Produto Interno Bruto, Produto Interno Bruto per capita, População residente e Deflator"

Veja que a função retornou uma lista com nove tabelas. A Tabela 5939 traz informações sobre um conjunto de variáveis da pesquisa Produto Interno Bruto dos Municípios do IBGE.

A função a seguir info_sidra(5938, wb = TRUE) carrega a API SIDRA com os parâmetros necessários à especificação da get_sidra. Para o ano de 2019, a função foi carregada com os seguintes parâmetros.

dados <- get_sidra(x = 5938, 
                   variable = 497,
                   period = as.character(2019), 
                   geo = c("City"),
                   geo.filter = list("State" = 50),
                   header = TRUE,
                   format = 1)
head(dados)
##   Nível Territorial (Código) Unidade de Medida (Código) Valor
## 2                          6                          2  1.05
## 3                          6                          2  0.16
## 4                          6                          2  0.91
## 5                          6                          2  0.47
## 6                          6                          2  0.24
## 7                          6                          2  0.70
##   Município (Código) Ano (Código) Variável (Código)
## 2            5000203         2019               497
## 3            5000252         2019               497
## 4            5000609         2019               497
## 5            5000708         2019               497
## 6            5000807         2019               497
## 7            5000856         2019               497

Em que, variable = 479 é o código da variável de interesse (participação do produto interno bruto a preços correntes no produto interno bruto a preços correntes da unidade da federação), geo = c("City") identifica o nível geográfico municipal, geo.filter = list("State" = 50) filtra apenas o Mato Grosso do Sul, código 50, header e format são parâmetros triviais.

O objeto dados é composto por seis variáveis. Na sequência, apenas Município (Código) e Valor são utilizadas na integração com a malha municipal do estado do Mato Grosso do Sul.

Acessando a Malha Municipal com geobr

A Malha Municipal é uma representação vetorial com a Divisão Político Administrativa (DPA) dos municípios, estados e regiões brasileiras. A leitura dos vetores se dá por meio do pacote geobr.

Carregando os pacote

library(geobr)
library(tidyverse)
library(sf)
library(ggspatial)

Para produzir mapas sofisticados, os pacotes tidyverse, sf e ggspatial também foram carregados.

Lendo primeiro a malha municipal do estado do Mato Grosso do Sul; na sequência, a malha territorial dos estados brasileiros.

map_mun <- read_municipality(code_muni = "MS", year=2019)
map_uf <- read_state(code_state = "all", year=2019)

Plotando agora um mapa com a localização do Mato Grosso do Sul no contexto do território brasileiro.

ggplot() +
  geom_sf(data = map_uf, size = .5, colour="grey40", fill = NA)+
  geom_sf(data = map_mun, size = .3, colour = "black", fill = NA) +
  annotation_scale(location = "bl", width_hint = 0.5) +
  annotation_north_arrow(location = "bl", which_north = "true", 
                         pad_x = unit(0.75, "in"), pad_y = unit(0.25, "in"),
                         style = north_arrow_fancy_orienteering)

Este mapa não contém informações adicionais sobre a participação municipal na formação do produto interno bruto a preços correntes do estado do Mato Grosso do Sul. Assim, o código do município foi usado como controle na integração dos dados da pesquisa PIB dos Municípios com o shapefile. O procedimento de junção foi realizado pela função left_join, do pacote tidyverse.

Observe que antes disso, porém, uma variável categórica cat foi introduzida no objeto bmap. Ela relaciona a participação de cada município aos decis da distribuição espacial e será importante para análise da formação do PIB municipal.

bmap <- data.frame(code_muni=as.numeric(dados[,4]), valor=dados[,3])
cat <- quantile(x=bmap$valor, probs = seq(0,1,0.1))
bmap$cat <- cut(bmap$valor, breaks = cat, labels = c("D1","D2","D3","D4","D5","D6","D7","D8","D9","D10"), include.lowest=TRUE)
map_mun <- left_join(map_mun,bmap,by="code_muni")
head(map_mun)
## Simple feature collection with 6 features and 9 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -56.18264 ymin: -23.56677 xmax: -52.35474 ymax: -17.9088
## Geodetic CRS:  SIRGAS 2000
##   code_muni    name_muni code_state abbrev_state         name_state code_region
## 1   5000203   Água Clara         50           MS Mato Grosso do Sul           5
## 2   5000252  Alcinópolis         50           MS Mato Grosso do Sul           5
## 3   5000609      Amambai         50           MS Mato Grosso do Sul           5
## 4   5000708    Anastácio         50           MS Mato Grosso do Sul           5
## 5   5000807 Anaurilândia         50           MS Mato Grosso do Sul           5
## 6   5000856     Angélica         50           MS Mato Grosso do Sul           5
##    name_region valor cat                           geom
## 1 Centro Oeste  1.05  D8 MULTIPOLYGON (((-53.46823 -...
## 2 Centro Oeste  0.16  D1 MULTIPOLYGON (((-54.13136 -...
## 3 Centro Oeste  0.91  D8 MULTIPOLYGON (((-55.41156 -...
## 4 Centro Oeste  0.47  D5 MULTIPOLYGON (((-55.83278 -...
## 5 Centro Oeste  0.24  D3 MULTIPOLYGON (((-53.0876 -2...
## 6 Centro Oeste  0.70  D7 MULTIPOLYGON (((-53.83051 -...
tapply(bmap$valor,bmap$cat,sum)
##    D1    D2    D3    D4    D5    D6    D7    D8    D9   D10 
##  0.89  1.49  1.90  2.92  3.54  3.16  5.63  8.27 13.04 59.13

A tabela exibe o padrão de distribuição de renda no Mato Grosso do Sul. Ela mostra, por exemplo, que 59,13% do PIB foi formado em oito municípios (último decil da distribuição). Tomando a mediana como uma referência de ponto, então, metade (41) dos municípios do Mato Grosso do Sul, contribuíram apenas com 10,74% na formação do PIB total. Os municípios do primeiro e último decis são listados a seguir.

Municípios com as menores participações no PIB do Mato Grosso do Sul.

map_mun %>% 
  filter(cat == "D1") %>% 
  select(code_muni,name_muni, valor)
## Simple feature collection with 8 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -57.51683 ymin: -23.93109 xmax: -53.22032 ymax: -17.9088
## Geodetic CRS:  SIRGAS 2000
##   code_muni   name_muni valor                           geom
## 1   5000252 Alcinópolis  0.16 MULTIPOLYGON (((-54.13136 -...
## 2   5002803     Caracol  0.11 MULTIPOLYGON (((-57.25501 -...
## 3   5003108   Corguinho  0.10 MULTIPOLYGON (((-54.75532 -...
## 4   5003504   Douradina  0.12 MULTIPOLYGON (((-54.67269 -...
## 5   5003900   Figueirão  0.10 MULTIPOLYGON (((-54.19107 -...
## 6   5004809      Japorã  0.10 MULTIPOLYGON (((-54.60091 -...
## 7   5007307   Rio Negro  0.10 MULTIPOLYGON (((-55.05525 -...
## 8   5007976  Taquarussu  0.10 MULTIPOLYGON (((-53.44059 -...

Municípios com as maiores participações no PIB do Mato Grosso do Sul.

map_mun %>% 
  filter(cat == "D10") %>% 
  select(code_muni,name_muni, valor)
## Simple feature collection with 8 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -58.16843 ymin: -22.76543 xmax: -51.34355 ymax: -17.16635
## Geodetic CRS:  SIRGAS 2000
##   code_muni     name_muni valor                           geom
## 1   5002704  Campo Grande 28.26 MULTIPOLYGON (((-54.63729 -...
## 2   5003207       Corumbá  2.60 MULTIPOLYGON (((-57.6932 -1...
## 3   5003702      Dourados  8.86 MULTIPOLYGON (((-55.05364 -...
## 4   5005400      Maracaju  2.38 MULTIPOLYGON (((-55.76938 -...
## 5   5006606    Ponta Porã  3.01 MULTIPOLYGON (((-55.7468 -2...
## 6   5007208 Rio Brilhante  2.18 MULTIPOLYGON (((-54.98766 -...
## 7   5007802      Selvíria  2.16 MULTIPOLYGON (((-51.98767 -...
## 8   5008305   Três Lagoas  9.68 MULTIPOLYGON (((-51.92748 -...

Segue agora o mapa com a distribuição espacial do PIB do Mato Grosso do Sul.

ggplot() +
  geom_sf(data = map_mun, aes(fill=cat), size = .3, color = "grey30") +
  scale_fill_brewer(palette = "RdYlGn", direction = 1) +
  geom_sf_text(data = map_mun[which(map_mun$cat=="D10"), ], aes(label = name_muni), size = 2) +
  labs(fill="Decil", title = "Participação municipal no PIB do Mato Grosso do Sul (2019)", x="Longitude", y="Latitude", caption = "Fonte: PIB dos municípios/IBGE")+
  geom_sf(data = map_uf, size = .5, colour="black", fill = NA) +
  annotation_scale(location = "bl", width_hint = 0.5) +
  annotation_north_arrow(location = "bl", which_north = "true", 
                         pad_x = unit(0.65, "in"), pad_y = unit(0.25, "in"),
                         style = north_arrow_fancy_orienteering)+
  coord_sf(xlim = c(-60, -50), ylim = c(-15, -25))

Cabe tecer breves comentários sobre as funções utilizadas. Por meio da geom_sf_text, apenas os nomes dos municípios pertecentes ao último decil foram selecionados. A escala geográfica foi anotada por meio da função annotation_scale; enquanto a direção Norte foi anotada pela annotation_north_arrow. Ambas são do pacote ggspatial. Usando limites das coordenadas geográficas, a função coord_sf oferece uma aproximação do objeto de análise.

Com relação aos padrões espaciais, fica claro que municípios com maior participação na formação da renda, compartilham fronteira comum. Grosso modo, eles estão localizados nas proximidades da capital Campo Grande. No outro extremo da curva, dado que municípios com baixa participação no PIB também são fronteira comum, o efeito proximidade também aparenta restringir o dinamismo dos municípios pobres.