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').
sidrarApó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.
geobrA 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.