O objetivo deste tutorial é explorar os dados do produto interno bruto dos municípios com apresentações em mapas, bem como revisar regressão linear.
PIB representa o total dos bens e serviços produzidos pelas unidades produtoras residentes destinados aos usos finais, sendo, portanto, equivalente à soma dos valores adicionados pelas diversas atividades econômicas acrescida dos impostos, líquidos de subsídios, sobre produtos (PIB pela ótica da produção).
Defina o diretório para o local onde está a base de dados e importe a bse completa:
options(scipen = 999) # opção para não exibir números científicos
library(readxl)
pib_mun <- read_excel("PIB dos Municípios - base de dados 2010-2020.xls")
Ao visulizar a estrutura dos dados, o nomes das colunas não está na melhor forma para manipulação. Assim, é recomendado algumas alterações:
O pacote DataMaid é uma ferramenta valiosa no ambiente R para a verificação, limpeza e organização eficiente de conjuntos de dados. Desenvolvido com o objetivo de aprimorar a qualidade e confiabilidade dos dados, o DataMaid oferece funcionalidades que auxiliam na identificação de valores ausentes, erros de digitação, inconsistências e outras anomalias nos dados. Além disso, permite a criação de relatórios detalhados, facilitando a compreensão das estruturas e conteúdo dos datasets, promovendo assim uma exploração mais assertiva. Com suas capacidades automatizadas de geração de sumários e gráficos descritivos, o DataMaid é uma ferramenta para cientistas de dados e analistas que desejam garantir a qualidade e integridade dos seus dados, tornando todo o processo de análise mais eficiente e confiável.
library(dataMaid)
makeDataReport(pib_mun,replace = TRUE)
## The default of 'doScale' is FALSE now for stability;
## set options(mc_doScale_quiet=TRUE) to suppress this (once per session) message
## Data report generation is finished. Please wait while your output file is being rendered.
##
## Is dataMaid_pib_mun.docx open on your computer? Please close it as fast as possible to avoid problems!
O que foi possível verificar com o relatório produzido anteriormente?
O principal indicador, PIB e o valor adicionado por atividades já foi calculado, assim vamos pensar na apresentação e análise desses dados tentando responder as seguintes perguntas?
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ tibble 3.2.1 ✔ dplyr 1.1.2
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.3 ✔ forcats 0.5.2
## ✔ purrr 0.3.5
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::summarize() masks dataMaid::summarize()
pib_mun_mg <- pib_mun %>% filter(cod_uf == 31) %>%
mutate(p.agro = va_agro/va *100,
p.ind = va_ind/va*100,
p.serv = va_serv/va*100,
p.admin = va_admin/va*100
) %>% group_by(ano) %>% mutate(p.pib = pib/sum(pib)*100)
library(tidyr)
# organiza base com os dados necessários e calcula a diferença
base1 <- pib_mun_mg %>% select(ano,code_muni, nome_mun,p.pib) %>% spread(ano,p.pib) %>% mutate(dif_2019_2010 = round(`2019`-`2010`,2))
# organiza tabela com os dez municípios que mais ganharam participação
arrange(base1,desc(base1$dif_2019_2010))[1:10,c("code_muni","nome_mun","dif_2019_2010")]
## # A tibble: 10 × 3
## code_muni nome_mun dif_2019_2010
## <dbl> <chr> <dbl>
## 1 3125101 Extrema 1.02
## 2 3117504 Conceição do Mato Dentro 0.56
## 3 3152501 Pouso Alegre 0.46
## 4 3170206 Uberlândia 0.38
## 5 3170107 Uberaba 0.31
## 6 3144805 Nova Lima 0.29
## 7 3147006 Paracatu 0.27
## 8 3104007 Araxá 0.26
## 9 3103504 Araguari 0.24
## 10 3148004 Patos de Minas 0.19
# organiza tabela com os dez municípios que mais perderam participação
arrange(base1,base1$dif_2019_2010)[1:10,c("code_muni","nome_mun","dif_2019_2010")]
## # A tibble: 10 × 3
## code_muni nome_mun dif_2019_2010
## <dbl> <chr> <dbl>
## 1 3106705 Betim -2.36
## 2 3106200 Belo Horizonte -1.95
## 3 3118601 Contagem -0.78
## 4 3140001 Mariana -0.74
## 5 3146107 Ouro Preto -0.58
## 6 3131307 Ipatinga -0.33
## 7 3118007 Congonhas -0.24
## 8 3167202 Sete Lagoas -0.19
## 9 3105400 Barão de Cocais -0.14
## 10 3134400 Iturama -0.12
Fazendo um mapa dos que ganharam mais participação e aqueles que mais perderam:
library(geobr)
mun <- read_municipality(code_muni = "MG", year = 2019,showProgress = FALSE)
#Juntar coordenadas para criar o mapa
base_mapa<- left_join(base1, mun , by = 'code_muni')
Agora, vamos plotar os resultados em um mapa estático e um interativo.
# Carregar bibliotecas
library(ggplot2)
library(plotly)
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggspatial)
# Criar o gráfico ggplot com o PIB
ggplot_obj_1 <- base_mapa %>%
ggplot() +
geom_sf(data = base_mapa$geom, aes(fill = base_mapa$dif_2019_2010,
text = paste("Município: ", base_mapa$nome_mun, "<br>Diferença participação: ", base_mapa$dif_2019_2010, "%"))) +
scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'Diferença part.') +
annotation_scale(location = "bl", width_hint = 0.3) +
annotation_north_arrow(location = "bl", which_north = "true",
pad_x = unit(0.3, "in"), pad_y = unit(0.3, "in"),
style = north_arrow_fancy_orienteering) +
theme(panel.grid = element_line(colour = "transparent"),panel.background = element_blank(),axis.text = element_blank(),axis.ticks = element_blank()) +
labs(title = "Diferença de participação do PIB dos Municípios de MG - 2019-2010 (%)", subtitle = "",caption = 'Fonte: IBGE. Elaboração própria', size = 8)
ggplot_obj_1
Fazendo uma versão interativa:
# Converter o gráfico ggplot para plotly
interactive_plot_1 <- ggplotly(ggplot_obj_1, tooltip = "text")
# Exibir o gráfico interativo
interactive_plot_1