O objetivo deste tutorial é reproduzir o IDHM compreendendo as etapas de aglutinação presentes no índice.

Contextualização

Desenvolvimento Humano

Desenvolvimento humano é o processo de ampliação das liberdades das pessoas com relação às suas capacidades e oportunidades. Pode ser compreendido como o desenvolvimento das pessoas por meio da construção de capacidades humanas, com a participação ativa dos indivíduos no centro dos processos que possibilitam a valorização e a melhora da qualidade de suas vidas.

A abordagem do desenvolvimento humano coloca as pessoas no centro da análise do bem-estar, perspectiva oposta ao que sugere a ideia de desenvolvimento ancorada no crescimento econômico, redefinindo a maneira como pensamos e lidamos com o desenvolvimento em diferentes escalas territoriais. A popularização desta abordagem se deu com a criação e adoção do Índice de Desenvolvimento Humano (IDH) como medida do grau de desenvolvimento humano de um país, em alternativa ao Produto Interno Bruto (PIB), que à época era a principal medida de desenvolvimento.

O crescimento econômico de uma sociedade, de forma isolada, não se traduz automaticamente em qualidade de vida e, muitas vezes, o que se observa é um reforço das desigualdades. É preciso que este crescimento seja entendido como parte do processo de expansão das liberdades e transformado em conquistas concretas para as pessoas: crianças mais saudáveis, educação universal e de qualidade, ampliação da participação política dos cidadãos, preservação ambiental, equilíbrio da renda e oportunidades para todas as pessoas, maior liberdade de expressão, entre outras.

Fonte: Atlas do Desenvolvimento Humano

Base de dados

Leitura dos dados

Defina o diretório para o local onde está a base de dados:

# setwd("insira o caminho")

Importe a de dados fornecida. Todos os dados estão disponíveis no Atlas do Desenvolvimento Humano: http://www.atlasbrasil.org.br/. Uma versão organizada dos dados está disponível aqui.

options(scipen = 999) # opção para não exibir números científicos

# leitura das bibliotecas
library(readxl)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# leitura dos dados
atlas_mg <- read_excel("atlas_mg.xlsx")

Verificando variáveis

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)
## 
## Attaching package: 'dataMaid'
## The following object is masked from 'package:dplyr':
## 
##     summarize
makeDataReport(atlas_mg,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_atlas_mg.docx open on your computer? Please close it as fast as possible to avoid problems!

Calculando o índice

Dimensão longevidade

atlas_mg$i.longev <- (atlas_mg$`Esperança de vida ao nascer 2010`-25)/(85-25)

# Apresentando ranking
arrange(atlas_mg,desc(atlas_mg$i.longev))[1:10,c("Nome do Município","i.longev")]
## # A tibble: 10 × 2
##    `Nome do Município` i.longev
##    <chr>                  <dbl>
##  1 Passos                 0.886
##  2 Nova Lima              0.885
##  3 Tiradentes             0.885
##  4 Uberlândia             0.885
##  5 Itajubá                0.884
##  6 Viçosa                 0.883
##  7 Barbacena              0.881
##  8 Guaxupé                0.880
##  9 Lavras                 0.88 
## 10 Perdizes               0.88
arrange(atlas_mg,(atlas_mg$i.longev))[1:10,c("Nome do Município","i.longev")]
## # A tibble: 10 × 2
##    `Nome do Município`   i.longev
##    <chr>                    <dbl>
##  1 Santa Helena de Minas    0.723
##  2 Divisa Alegre            0.723
##  3 Palmópolis               0.738
##  4 Pedra Bonita             0.740
##  5 Setubinha                0.743
##  6 Pingo-d'Água             0.744
##  7 Felisburgo               0.744
##  8 Imbé de Minas            0.744
##  9 Congonhas do Norte       0.746
## 10 Mata Verde               0.749

Fazendo um mapa dessa dimensão.

library(geobr)  
mun <- read_municipality(code_muni = "MG", year = 2010,showProgress = FALSE)  

#Juntar coordenadas para criar o mapa 
base_mapa<- left_join(atlas_mg, mun , by = 'code_muni')

Agora, vamos plotar os resultados em um mapa estático.

# 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   
ggplot_obj_1 <- base_mapa %>% 
  ggplot() +   
  geom_sf(data = base_mapa$geom, aes(fill = base_mapa$i.longev, 
                                     text = paste("Município: ", base_mapa$nome_mun, "<br>IDHM Longevidade: ", base_mapa$i.longev))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'IDHM Longevidade', direction = -1) +
  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 = "IDHM - Longevidade - municípios de Minas Gerais - 2010", subtitle = "",caption = 'Fonte: FJP/IPEA/PNUD. Elaboração própria', size = 8)  
ggplot_obj_1

Dimensão educação

# Construindo o primeiro sub-índice
atlas_mg$si.escol <- (atlas_mg$`% de 18 anos ou mais de idade com ensino fundamental completo 2010`-0)/(100-0)

# Calculando o segundo sub-índice com uma média aritmética
atlas_mg$si.fluxo <- rowMeans(atlas_mg[,9:12])/100

# Aglutinando os dois sub-índices com uma média geométrica (peso 2 para o indicador de fluxo 1 para o de escolaridade)
atlas_mg$i.educ <- (atlas_mg$si.escol * atlas_mg$si.fluxo^2)^(1/3)

# Apresentando ranking
arrange(atlas_mg,desc(atlas_mg$i.educ))[1:10,c("Nome do Município","i.educ")]
## # A tibble: 10 × 2
##    `Nome do Município` i.educ
##    <chr>                <dbl>
##  1 Timóteo              0.779
##  2 Belo Horizonte       0.774
##  3 Montes Claros        0.773
##  4 Itajubá              0.762
##  5 Varginha             0.756
##  6 Nova Lima            0.755
##  7 Uberlândia           0.754
##  8 Lavras               0.753
##  9 Juiz de Fora         0.751
## 10 João Monlevade       0.746
arrange(atlas_mg,(atlas_mg$i.educ))[1:10,c("Nome do Município","i.educ")]
## # A tibble: 10 × 2
##    `Nome do Município`   i.educ
##    <chr>                  <dbl>
##  1 Araponga               0.398
##  2 Sericita               0.430
##  3 Fruta de Leite         0.437
##  4 Senhora do Porto       0.438
##  5 Nacip Raydan           0.447
##  6 Catuji                 0.449
##  7 Setubinha              0.451
##  8 Itaipé                 0.452
##  9 Ladainha               0.454
## 10 Novo Oriente de Minas  0.459
#Juntar coordenadas para criar o mapa 
library(dplyr)
base_mapa2<- left_join(atlas_mg, mun , by = 'code_muni')

# Criar o gráfico ggplot   
ggplot_obj_2 <- base_mapa2 %>% 
  ggplot() +   
  geom_sf(data = base_mapa2$geom, aes(fill = base_mapa2$i.educ, 
                                     text = paste("Município: ", base_mapa2$nome_mun, "<br>IDHM Educação: ", base_mapa2$i.educ))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'IDHM Educação', direction = -1) +
  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 = "IDHM - Educação - municípios de Minas Gerais - 2010", subtitle = "",caption = 'Fonte: FJP/IPEA/PNUD. Elaboração própria', size = 8)  
ggplot_obj_2

Dimensão renda

atlas_mg$i.renda <- (log(atlas_mg$`Renda per capita 2010`)-log(8))/(log(4033)-(log(8))) # usa o logaritmo!!!

# Apresentando ranking
arrange(atlas_mg,desc(atlas_mg$i.renda))[1:10,c("Nome do Município","i.renda")]
## # A tibble: 10 × 2
##    `Nome do Município` i.renda
##    <chr>                 <dbl>
##  1 Nova Lima             0.864
##  2 Belo Horizonte        0.841
##  3 Juruaia               0.794
##  4 Lagoa Santa           0.790
##  5 Juiz de Fora          0.784
##  6 Jequitibá             0.777
##  7 Uberlândia            0.776
##  8 Uberaba               0.772
##  9 Caxambu               0.770
## 10 Poços de Caldas       0.768
arrange(atlas_mg,(atlas_mg$i.renda))[1:10,c("Nome do Município","i.renda")]
## # A tibble: 10 × 2
##    `Nome do Município`     i.renda
##    <chr>                     <dbl>
##  1 São João das Missões      0.502
##  2 Santo Antônio do Retiro   0.504
##  3 Bonito de Minas           0.514
##  4 Cristália                 0.518
##  5 Frei Lagonegro            0.519
##  6 Pai Pedro                 0.520
##  7 Monte Formoso             0.523
##  8 Ninheira                  0.525
##  9 Santa Helena de Minas     0.531
## 10 Catuji                    0.534
#Juntar coordenadas para criar o mapa 
library(dplyr)
base_mapa3<- left_join(atlas_mg, mun , by = 'code_muni')

# Criar o gráfico ggplot   
ggplot_obj_3 <- base_mapa3 %>% 
  ggplot() +   
  geom_sf(data = base_mapa3$geom, aes(fill = base_mapa3$i.renda , 
                                     text = paste("Município: ", base_mapa3$nome_mun, "<br>IDHM Renda: ", base_mapa3$i.renda ))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'IDHM Renda', direction = -1) +
  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 = "IDHM - Renda - municípios de Minas Gerais - 2010", subtitle = "",caption = 'Fonte: FJP/IPEA/PNUD. Elaboração própria', size = 8)  
ggplot_obj_3

IDHM

atlas_mg$idhm <- (atlas_mg$i.longev * atlas_mg$i.educ * atlas_mg$i.renda)^(1/3)

# Apresentando ranking
arrange(atlas_mg,desc(atlas_mg$idhm))[1:10,c("Nome do Município","idhm")]
## # A tibble: 10 × 2
##    `Nome do Município`  idhm
##    <chr>               <dbl>
##  1 Nova Lima           0.833
##  2 Belo Horizonte      0.823
##  3 Uberlândia          0.803
##  4 Itajubá             0.803
##  5 Varginha            0.795
##  6 Lagoa Santa         0.795
##  7 Lavras              0.794
##  8 Poços de Caldas     0.793
##  9 Juiz de Fora        0.792
## 10 Pouso Alegre        0.789
arrange(atlas_mg,(atlas_mg$idhm))[1:10,c("Nome do Município","idhm")]
## # A tibble: 10 × 2
##    `Nome do Município`   idhm
##    <chr>                <dbl>
##  1 São João das Missões 0.564
##  2 Setubinha            0.564
##  3 Araponga             0.565
##  4 Frei Lagonegro       0.566
##  5 Monte Formoso        0.568
##  6 Ladainha             0.569
##  7 Bonito de Minas      0.569
##  8 Catuji               0.569
##  9 Fruta de Leite       0.574
## 10 Itaipé               0.580
#Juntar coordenadas para criar o mapa 
library(dplyr)
base_mapa4<- left_join(atlas_mg, mun , by = 'code_muni')

# Criar o gráfico ggplot   
ggplot_obj_4 <- base_mapa4 %>% 
  ggplot() +   
  geom_sf(data = base_mapa4$geom, aes(fill = base_mapa4$idhm , 
                                     text = paste("Município: ", base_mapa4$nome_mun, "<br>IDHM: ", base_mapa4$idhm ))) +   
  scale_fill_viridis_c(option = 15, begin = 0.2, end = 0.8, name = 'IDHM', direction = -1) +
  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 = "IDHM - municípios de Minas Gerais - 2010", subtitle = "",caption = 'Fonte: FJP/IPEA/PNUD. Elaboração própria', size = 8)  
ggplot_obj_4