Nesta atividade serão construídos alguns mapas interativos utilizando os pacotes leaflet(geração do mapa), rgdal(importação de arquivos para criação do mapa) além do dplyr(manipulação de data.frames), stringr(manipulação de strings) e algumas funções do pacote base(nativo do R).

A base de dados que será utilizada será dos microdados do censo (amostra complexa) a partir da base de dados Pessoas do estado de Pernambuco.

A base de dados que será utilizada será dos microdados do censo (amostra complexa) a partir da base de dados Pessoas do estado de Pernambuco.

Para este exercício a base de dados não será ponderada, porém, o ideal é que este procedimento seja feito para que nossos resultados não fiquem viesados.

Inicialmente a base de dados é carregada para a memória do R tal como os pacotes a serem utilizados:

# Pacotes
suppressMessages(library(dplyr))
suppressMessages(library(leaflet))
suppressMessages(library(rgdal))
suppressMessages(library(stringr))
pes10 <- readr::read_csv("Amostra_Pessoas_26.txt", 
                  col_names = FALSE)
## Parsed with column specification:
## cols(
##   X1 = col_character()
## )

Após carregar a base, será retirada uma amostra de 1% do total para facilitar nossos cálculos e, em seguida, será feito um tratamento já que a base possui o formato mais “bruto” possível escolhendo as variáveis de interesse que são o código do munícipio e o código do nível de instrução.

es10_5 <- pes10 %>% sample_frac(0.01)

pes10_1 <- pes10 %>% 
  transmute(cod_muni = str_sub(X1, start = 1, end = 7),
            cod_nvl_inst = str_sub(X1, start = 158, end = 158),
            rendimento = str_sub(X1, start = 263, end = 269) %>%
                       as.integer)

Escolhidas as variáveis, os arquivos com o “esqueleto” do mapa serão carregados através da função readOGR do pacote rgdal.

shapePE <- rgdal::readOGR("26MUE250GC_SIR.shp",
                          stringsAsFactors=FALSE,
                          encoding="UTF-8")
## OGR data source with driver: ESRI Shapefile 
## Source: "/home/heitor/Estatistica_computacional/18.04.2018/PE/26MUE250GC_SIR.shp", layer: "26MUE250GC_SIR"
## with 185 features
## It has 2 fields

Agora, algumas manipulações serão feitas para encontrar o indicador de interesse, que neste caso será a proporção de pessoas com curso superior no estado de Pernambuco dispostos por município.

A seguir o código com as manipulações e a geração do mapa:

# pessoas com nvl superior
supPE <- pes10_1 %>% 
  group_by(cod_nvl_inst,cod_muni) %>% 
  summarise(total = n()) %>% 
  mutate(nSUP = if_else(cod_nvl_inst=="5",total,as.integer(0))) %>% 
  group_by(cod_muni) %>% 
  mutate(propSUP = (nSUP/sum(total))*100) %>% 
  ungroup() %>% 
  dplyr::filter(cod_nvl_inst=="5") %>% 
  select(cod_muni,propSUP,total)

# nivel superior
shapePEcs <- merge(shapePE,supPE,by.x = "CD_GEOCMU", by.y = "cod_muni")

# contem NA
summary(as.factor(shapePEcs$propSUP))
##   0.16116035455278 0.0387146728610143 0.0395413206801107 
##                  2                  1                  1 
## 0.0429553264604811 0.0441696113074205 0.0451875282422052 
##                  1                  1                  1 
## 0.0469263256687001 0.0511247443762781 0.0511901714870745 
##                  1                  1                  1 
## 0.0515198351365276 0.0527565286204168 0.0577034045008656 
##                  1                  1                  1 
## 0.0629326620516048 0.0637836458731981   0.06765899864682 
##                  1                  1                  1 
## 0.0726216412490922 0.0757862826828344 0.0773933906044424 
##                  1                  1                  1 
##  0.078064012490242 0.0784313725490196 0.0909090909090909 
##                  1                  1                  1 
## 0.0917010545621275 0.0933706816059757 0.0947418285172904 
##                  1                  1                  1 
##  0.104058272632674  0.106044538706257  0.107028184088477 
##                  1                  1                  1 
##  0.107944732297064  0.110314396028682  0.114580349470066 
##                  1                  1                  1 
##  0.117693213024716  0.118483412322275  0.121580547112462 
##                  1                  1                  1 
##  0.122448979591837  0.127877237851662  0.129032258064516 
##                  1                  1                  1 
##  0.132415254237288  0.132802124833997   0.13531799729364 
##                  1                  1                  1 
##  0.136128505309012   0.13953488372093  0.140845070422535 
##                  1                  1                  1 
##  0.142196942765731  0.142348754448399  0.144404332129964 
##                  1                  1                  1 
##  0.161290322580645  0.162179695102173   0.16273393002441 
##                  1                  1                  1 
##  0.168067226890756  0.171232876712329  0.172488141440276 
##                  1                  1                  1 
##  0.183150183150183  0.185873605947955  0.194120909595119 
##                  1                  1                  1 
##  0.209324452901998  0.211595429538722  0.212224108658744 
##                  1                  1                  1 
##  0.216182828906733  0.221729490022173  0.222002960039467 
##                  1                  1                  1 
##  0.222518914107699  0.222788033099936  0.233879051119278 
##                  1                  1                  1 
##  0.235769619400472  0.240456868049294  0.244584206848358 
##                  1                  1                  1 
##   0.24603608529251  0.246575342465753  0.248292985723153 
##                  1                  1                  1 
##  0.248756218905473  0.254560882477726  0.258249641319943 
##                  1                  1                  1 
##  0.263435194942044  0.265839610101905  0.268006700167504 
##                  1                  1                  1 
##  0.283375314861461  0.293960448957777  0.294525294525295 
##                  1                  1                  1 
##  0.297492562685933  0.303490136570561   0.30839367122553 
##                  1                  1                  1 
##  0.311249444197421  0.312907431551499  0.320366132723112 
##                  1                  1                  1 
##  0.321027287319422  0.322450624748085  0.323325635103926 
##                  1                  1                  1 
##  0.332336324360253  0.332520505431168  0.340425531914894 
##                  1                  1                  1 
##  0.344827586206897  0.346129641283826  0.347463516330785 
##                  1                  1                  1 
##  0.349344978165939   0.35020694046482  0.356633380884451 
##                  1                  1                  1 
##  0.360750360750361  0.366780193869531            (Other) 
##                  1                  1                 82 
##               NA's 
##                  4
# Trocar onde tem NA para zero
shapePEcs$propSUP[is.na(shapePEcs$propSUP)==TRUE] = 0

palcs <- colorBin("RdYlGn", domain = shapePEcs$propSUP, n = 5)
# popup nvl superior
state_popupdoc_cs <- paste0("<strong>Municipio: </strong>", 
                         shapePE$NM_MUNICIP, 
                         "<br><strong>Propor??o: </strong>", 
                         shapePEcs$propSUP %>% round(3))
# Mapa curso superior
shapePEcs %>%
  leaflet() %>% 
  addProviderTiles("CartoDB.Positron") %>%
  addPolygons(fillColor = ~palcs(shapePEcs$propSUP), 
              fillOpacity = 0.8, 
              color = "#BDBDC3", 
              weight = 1,
              popup = state_popupdoc_cs) %>%
  addLegend("bottomright", pal = palcs, values = ~shapePEcs$propSUP,
            opacity = 1, title = paste0("<strong>Prop. de pessoas com </strong>","<br><strong>curso superior</strong>"))

Agora o mesmo procedimento será realizados, porém, para aqueles que não possuem instrução.

seminstPE <- pes10_1 %>% 
  group_by(cod_nvl_inst,cod_muni) %>% 
  summarise(total = n()) %>% 
  mutate(nSUP = if_else(cod_nvl_inst=="1",total,as.integer(0))) %>% 
  group_by(cod_muni) %>% 
  mutate(propSUP = (nSUP/sum(total))*100) %>% 
  ungroup() %>% 
  dplyr::filter(cod_nvl_inst=="1") %>% 
  select(cod_muni,propSUP,total)

shapePEsi <- merge(shapePE,seminstPE,by.x = "CD_GEOCMU", by.y = "cod_muni")

shapePEsi$propSUP[is.na(shapePEsi$propSUP)==TRUE] = 0

palsi <- colorBin("RdYlGn", domain = shapePEsi$propSUP,
                       reverse = TRUE)

state_popupdoc_si <- paste0("<strong>Municipio: </strong>", 
                            shapePE$NM_MUNICIP, 
                            "<br><strong>Propor??o: </strong>", 
                            shapePEsi$propSUP %>% round(3))

# Mapa sem instrucao
shapePEsi %>%
  leaflet() %>% 
  addProviderTiles("CartoDB.Positron") %>%
  addPolygons(fillColor = ~palsi(shapePEsi$propSUP), 
              fillOpacity = 0.8, 
              color = "#BDBDC3", 
              weight = 1,
              popup = state_popupdoc_si) %>%
  addLegend("bottomright", pal = palsi, values = ~shapePEsi$propSUP,
            opacity = 1, title = paste0("<strong>Prop. de pessoas sem </strong>",
                                        "<br><strong>instru??o ou fundamental</strong>",
                                        "<br><strong>incompleto </strong>"))