Inicializar

Carregar bibliotecas

Carregar bibliotecas necessárias

pacman::p_load(tidyverse, viridis, plotly, ggridges, gridExtra, 
               geobr, DT, paletteer, ggcorrplot, formattable)

Carregar dados

Disponíveis na Base Munics-IPs. Consultá-la no repositório github

setwd("C:\\r_files\\my_academic_projects\\ippc_project_r_final")

#### Carregar os dados das Munics-IPs
Munics_IPs <- read_csv2("Munics_IPs.csv")

#### variaveis auxiliares
var_aux <- Munics_IPs %>% 
    select(A1:B6)

#### Carregar Legenda
Munics_IPs.legenda <- read.csv2("Legenda.csv", header=FALSE, stringsAsFactors=FALSE, encoding = "UTF-8")

## Selecionar unicamente o que corresponde a Munic 2013 e 2014
# filtrar linhas pela posição na base

Legenda_Munic <- slice(Munics_IPs.legenda,c(695:767, 786:899, 910:920, 1107:1152))

# Base
Munics_IPs <- select(Munics_IPs, c(A1, A545:A606, A623:A722, A732:A740, A891:A912))
# O conselho de segurança alimentar aparecia duplicado # Agora excluído o código "A913".
# Excluir tb "A607": Alimentação escolar, "A615": transporte escolar, "A724": defesa civil

# Bases suas
suas <- read_csv2("censo_suas.csv", 
                  locale(encoding = "latin1"),
                  col_names = T,
                  col_types = NULL) %>% 
  select(IBGE, Porte_pop2010, Pop_Total2010)

# IDH
idh <- read_csv2("idh_census.csv")

Funções de ajuda

Paridade

Criar função de ajudar para verificar a existência de paridade nos conselhos

##existencia de paridade
paridade <- function(x){
  ifelse(x%in%c("Paritário","Sim", "É paritário", "Tem maior representação da sociedade civil"),1,ifelse(x%in%c("Não", "Não paritário", "Não aplicável","Não informado", "Não soube informar", "Não sabe informar", "Recusa", "Tem maior representação governamental", "Não está em funcionamento"), 0,NA))
}

Caráter

Criar função de ajudar para verificar o caráter dos conselhos

  • Deliberativos e/ou consultivos
# Função válida para deliberativos, consultivos, fiscalizadores e normativos
carater <- function(x){
  ifelse(x=="Sim",1,ifelse(x%in%c("Não", "Não aplicável","Não informado", "Recusa", "Não soube informar", "Não sabe informar"), 0, NA))
}

Tema histograma

Criar tema para plotar histogramas

theme_hist <- theme(axis.text.x = element_text(size = 20, face = "bold"),
                    axis.text.y = element_text(size = 20,  face = "bold"),  
                    axis.title.x = element_text(size = 20,  face = "bold"),
                    axis.title.y = element_text(size = 20,  face = "bold"),
                    legend.position="bottom",
                    legend.text = element_text(size = 20),
                    legend.title = element_text(size = 20))

Tema boxplot

Criar tema para plotar boxplots

theme_box <- theme(axis.text.x = element_text(size = 20),
                    axis.text.y = element_text(size = 20),  
                    axis.title.x = element_text(size = 20),
                    axis.title.y = element_text(size = 20))

Tema mapa Brasil

Criar tema para plotar mapa

theme_map_br <- theme(panel.background = element_rect(fill = "transparent"), 
        panel.grid.major = element_line(color = "transparent"), 
        axis.text.x = element_blank(), 
        axis.text.y = element_blank(), 
        axis.ticks = element_blank(),
        legend.position = c(0.34, 0.4),  #0.4, 0.4
        legend.justification = c(1, 1),
        legend.background = element_blank(),
        legend.text = element_text(size = 20),
        legend.title = element_text(size=20),
        plot.title=element_text( hjust=0, vjust=-5, face='bold'))

01. Número de conselhos

Verificar número de conselhos por município

Selecionar variáveis

Visualizar nomes e códigos dos conselhos

## Criar índice para selecionar unicamente a pergunta "O municipio possui Conselho Municipal...?"
##Coluna V3
  index_cons <- str_which(Legenda_Munic$V3,"possui Conselho Municipal")   
  
  ### Usar o índice para selecionar as linhas.
  Conselhos_lista <- slice(Legenda_Munic,index_cons) 
  
  ## Usar a coluna V17 que possui os códigos da base de dados
  Conselhos_codigo_nomes <- Conselhos_lista %>% 
    select(V3, V17)
  
  # Usar V3 para extrair o nome do conselho 
   Conselhos_codigo_nomes <- Conselhos_codigo_nomes %>% 
    mutate(nome_IBGE = str_remove(V3, "O município possui "),
           nome_IBGE = str_remove(nome_IBGE, "\\?"),
           nome_abr = str_remove(nome_IBGE, "Conselho Municipal d(e?o?s?) "),
           nome_abr = str_remove(nome_abr, " ou similar"),
           nome_abr = str_replace(nome_abr, "Direitos", "D."),
           nome_abr = str_replace(nome_abr, "Lésbicas, Gays, Bissexuais, Travestis e Transexuais", "LGBTT"),            nome_abr = str_trunc(nome_abr, 25),
           nome_abr = str_trim(nome_abr, side = "both")) %>% 
     select(nome_IBGE, nome_abr, cod = V17) 

   
Conselhos_codigo_nomes %>% 
   datatable(extensions = 'FixedColumns',
            rownames = F,
            options = list(autoFill = TRUE,
                           fixedHeader = TRUE,
                           autowidth = TRUE,
                           paging = F,
                           scrollX = TRUE,
                           scrollY = "400px"))

Selecionar variáveis do Banco “existência dos conselhos”

##Selecionamos apenas as colunas correspondentes a "possui Conselho?"
Munic_Conselhos <- select(Munics_IPs,A1, Conselhos_codigo_nomes$cod)

Munic_Conselhos %>% 
   datatable(extensions = 'FixedColumns',
            rownames = F,
            options = list(autoFill = TRUE,
                           fixedHeader = TRUE,
                           autowidth = TRUE,
                           paging = F,
                           scrollX = TRUE,
                           scrollY = "400px"))

Cacular número de conselhos

Operação básica: Sim = 1; Não (e demais opções) = 0

  • Plotar:

    Visão geral

    Verificação da aplicação

    Sumário da distribuição do número de conselhos

    Tabela simples da distribuição do número de conselhos

##Transformar os dados em indicadores. 
# Efetuar soma para determinar o número de conselhos de cada municipio
  Numero_conselhos <- Munic_Conselhos %>% 
    mutate_at(vars(2:15), funs(ifelse(.=="Sim",1,0))) %>%
    mutate(Num_conselhos = rowSums(select(., -A1)))

# Visão geral
glimpse(Numero_conselhos)
## Observations: 5,570
## Variables: 16
## $ A1            <dbl> 110001, 110002, 110003, 110004, 110005, 110006, 11000...
## $ A545          <dbl> 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1,...
## $ A553          <dbl> 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,...
## $ A587          <dbl> 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0,...
## $ A623          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
## $ A633          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,...
## $ A641          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
## $ A649          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,...
## $ A657          <dbl> 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0,...
## $ A665          <dbl> 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0,...
## $ A673          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ A681          <dbl> 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ A715          <dbl> 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,...
## $ A732          <dbl> 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0,...
## $ A891          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
## $ Num_conselhos <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6, 6, 5, 9, ...
# Verificar aplicação (se todas as variaveis contem apenas os números 0 e 1)
apply(Numero_conselhos[2:15], 2, unique)
##      A545 A553 A587 A623 A633 A641 A649 A657 A665 A673 A681 A715 A732 A891
## [1,]    1    0    0    1    0    1    0    1    0    0    0    1    1    1
## [2,]    0    1    1    0    1    0    1    0    1    1    1    0    0    0
# Verificar valores
summary(Numero_conselhos$Num_conselhos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   5.000   6.000   6.163   7.000  14.000
# Tabular valores para verificação
data.frame(table(Numero_conselhos$Num_conselhos))
##    Var1 Freq
## 1     0    1
## 2     1    1
## 3     2    6
## 4     3  180
## 5     4  664
## 6     5 1377
## 7     6 1380
## 8     7  850
## 9     8  529
## 10    9  283
## 11   10  136
## 12   11  106
## 13   12   44
## 14   13   10
## 15   14    3

Distribuição do número de conselhos

Visualização com histograma

hist_1 <- ggplot(Numero_conselhos, aes(Num_conselhos)) +
  geom_histogram(binwidth = 1, fill = "white", color = "black") +
  ggtitle("Histogram 1", subtitle = "Number of councils per municipality")+
  xlab("Number of councils") + ylab("Number of municipalities")+
  scale_y_continuous(limits = c(0,1550), breaks = seq(0,1500, 250))+
  theme_classic() +
  theme_hist

hist_1

Tabela do número de conselhos

Visualização com tabela simples

table_Num_Conselhos <- Numero_conselhos %>%
  select(-A1) %>% 
  summarise_all(sum) %>% 
  gather() %>% 
  arrange(desc(value)) %>% 
  left_join(Conselhos_codigo_nomes, by = c("key" = "cod")) %>% 
  select(nome_abr, key, N_conselhos = value)

table_Num_Conselhos
## # A tibble: 15 x 3
##    nome_abr                  key           N_conselhos
##    <chr>                     <chr>               <dbl>
##  1 <NA>                      Num_conselhos       34329
##  2 Assistência Social        A891                 5562
##  3 Saúde                     A623                 5556
##  4 D. da Criança e do Ado... A641                 5481
##  5 Educação                  A587                 4874
##  6 Meio Ambiente             A545                 3785
##  7 D. do Idoso               A657                 3450
##  8 Segurança Alimentar       A732                 1629
##  9 D. da Pessoa com Defic... A665                 1093
## 10 D. da Mulher              A553                  976
## 11 Segurança Pública         A715                  691
## 12 D. da Juventude           A681                  608
## 13 D. Humanos                A633                  323
## 14 Igualdade Racial          A649                  280
## 15 D. de LGBTT               A673                   21

Juntar dados com auxiliares

Visualização da operação

# IDH
idh <- idh %>% 
  filter(ANO == "2010") %>% 
    select(Codmun6, IDHM) %>% 
    mutate(Codmun6 = as.numeric(Codmun6))

# #seleção das variaveis auxiliares 
# Junção da suas 
# Junção do idh
Conselhos_Munic <- var_aux %>% 
    left_join(suas, by = c("A1" = "IBGE")) %>% 
    left_join(idh, by = c("A1" = "Codmun6"))

#Junção das bases
Conselhos_Munic <- Conselhos_Munic %>% 
  left_join(select(Numero_conselhos, A1, Num_conselhos))

glimpse(Conselhos_Munic)
## Observations: 5,570
## Variables: 12
## $ A1            <dbl> 110001, 110002, 110003, 110004, 110005, 110006, 11000...
## $ A1a           <dbl> 1100015, 1100023, 1100031, 1100049, 1100056, 1100064,...
## $ B1            <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIXI", "CACOA...
## $ B2            <dbl> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1...
## $ B3            <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO",...
## $ B4            <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 - Norte", "...
## $ B5            <chr> "4 - 20001 até 50000", "6 - 100001 até 500000", "2 - ...
## $ B6            <dbl> 25578, 104401, 6355, 87226, 17986, 18817, 8842, 16651...
## $ Porte_pop2010 <chr> "Pequeno II", "Médio", "Pequeno I", "Médio", "Pequeno...
## $ Pop_Total2010 <dbl> 24392, 90353, 6313, 78574, 17029, 18591, 8783, 13678,...
## $ IDHM          <dbl> 0.641, 0.702, 0.650, 0.718, 0.692, 0.685, 0.613, 0.61...
## $ Num_conselhos <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6, 6, 5, 9, ...

02. Paridade

Calcular a existência de paridade nos conselhos

Verificar os rótulos existentes

## Criar índice para selecionar unicamente a pergunta "O conselho e paritario?"
  index_pari <- str_which(Legenda_Munic$V4,"paritário") ##Coluna V4
  
  ## usar a coluna V17 que possui os codigos da base de dados
  Paridade_lista <- slice(Legenda_Munic,index_pari) 
  
  #identificar os codigos de pergunta
  Paridade_codigo <- Paridade_lista %>% 
    select(V17) %>% 
    mutate(cod_nomes = Conselhos_codigo_nomes$cod)

  ## Sel. apenas as colunas correspondentes a "O Conselho e paritario?"
  Munic_Paridade <- select(Munics_IPs, A1, Paridade_codigo$V17)

  # Verificar rótulos
  #sapply(Munic__Paridade[2:18], FUN = unique) # Há um erro de digitação Naão sabe 
  
  Munic_Paridade$A547[1] <- "Não sabe informar"

sapply(Munic_Paridade[2:15], 2, FUN = unique)
## $A547
## [1] "Não sabe informar" "Sim"               "Não aplicável"    
## [4] "Não"               "Recusa"           
## 
## $A555
## [1] "Não aplicável"     "Sim"               "Não"              
## [4] "Recusa"            "Não sabe informar"
## 
## $A589
## [1] "Não aplicável" "Paritário"     "Não paritário" "Não informado"
## [5] "Recusa"       
## 
## $A625
## [1] "Paritário"     "Não aplicável" "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A635
## [1] "Não aplicável" "Paritário"     "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A643
## [1] "Paritário"     "Não aplicável" "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A651
## [1] "Não aplicável" "Paritário"     "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A659
## [1] "Paritário"     "Não aplicável" "Não paritário" "Não informado"
## [5] "Recusa"       
## 
## $A667
## [1] "Não aplicável" "Paritário"     "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A675
## [1] "Não aplicável" "Recusa"        "Paritário"     "Não paritário"
## [5] "Não informado"
## 
## $A683
## [1] "Não aplicável" "Paritário"     "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A717
## [1] "Não paritário"             "Paritário"                
## [3] "Não aplicável"             "Recusa"                   
## [5] "Não está em funcionamento" "Não informado"            
## 
## $A734
## [1] "Paritário"     "Não aplicável" "Não paritário" "Recusa"       
## [5] "Não informado"
## 
## $A893
## [1] "É paritário"                               
## [2] "Tem maior representação da sociedade civil"
## [3] "Tem maior representação governamental"     
## [4] "Não aplicável"                             
## [5] "Recusa"

Calcular paridade

Operação: Existência de paridade = 1; Não existência = 0

  • Plotar:

    Visão geral

    Verificação da aplicação

    Sumário da distribuição do número de conselhos

    Tabela simples da distribuição do número de conselhos

##Transformar dados em indicadores.
# Efetuamos a soma para determinar o numero de conselhos paritarios de cada municipio
Paridade_pond <- Munic_Paridade %>% 
  mutate_at(vars(2:15), funs(paridade(.))) %>%  
  mutate(Paridade = rowSums(select(., -A1))) 

### Juntar estes valores de paridade com a suas repectivos municipios
# Utilizar a tabela anterior 'Conselhos _Munic' que ja contem o numero de conselhos (deve primerio correr o indicador 1)
Paridade_Munic <- Conselhos_Munic %>%
  left_join(select(Paridade_pond, A1, Paridade))

Paridade_Munic <- Paridade_Munic %>% 
  mutate(A1 = as.character(A1))

# Visão geral
glimpse(Paridade_Munic)
## Observations: 5,570
## Variables: 13
## $ A1            <chr> "110001", "110002", "110003", "110004", "110005", "11...
## $ A1a           <dbl> 1100015, 1100023, 1100031, 1100049, 1100056, 1100064,...
## $ B1            <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIXI", "CACOA...
## $ B2            <dbl> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1...
## $ B3            <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO",...
## $ B4            <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 - Norte", "...
## $ B5            <chr> "4 - 20001 até 50000", "6 - 100001 até 500000", "2 - ...
## $ B6            <dbl> 25578, 104401, 6355, 87226, 17986, 18817, 8842, 16651...
## $ Porte_pop2010 <chr> "Pequeno II", "Médio", "Pequeno I", "Médio", "Pequeno...
## $ Pop_Total2010 <dbl> 24392, 90353, 6313, 78574, 17029, 18591, 8783, 13678,...
## $ IDHM          <dbl> 0.641, 0.702, 0.650, 0.718, 0.692, 0.685, 0.613, 0.61...
## $ Num_conselhos <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6, 6, 5, 9, ...
## $ Paridade      <dbl> 5, 11, 5, 9, 6, 3, 3, 5, 5, 7, 6, 8, 4, 6, 5, 3, 8, 4...
# Verificação da aplicação
apply(Paridade_pond[2:16], 2, FUN = unique)
## $A547
## [1] 0 1
## 
## $A555
## [1] 0 1
## 
## $A589
## [1] 0 1
## 
## $A625
## [1] 1 0
## 
## $A635
## [1] 0 1
## 
## $A643
## [1] 1 0
## 
## $A651
## [1] 0 1
## 
## $A659
## [1] 1 0
## 
## $A667
## [1] 0 1
## 
## $A675
## [1] 0 1
## 
## $A683
## [1] 0 1
## 
## $A717
## [1] 0 1
## 
## $A734
## [1] 1 0
## 
## $A893
## [1] 1 0
## 
## $Paridade
##  [1]  5 11  9  6  3  7  8  4  2 10  0 12 14  1 13
# Sumário
summary(Paridade_Munic$Paridade)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   5.000   6.000   5.834   7.000  14.000
# Tabela de frequencia
data.frame(table(Paridade_Munic$Paridade))
##    Var1 Freq
## 1     0    1
## 2     1    2
## 3     2   30
## 4     3  276
## 5     4  833
## 6     5 1479
## 7     6 1316
## 8     7  774
## 9     8  462
## 10    9  214
## 11   10  106
## 12   11   50
## 13   12   23
## 14   13    2
## 15   14    2

Distribuição da paridade dos conselhos

Visualização com histograma

# Histograma
hist_2 <- ggplot(Paridade_Munic, aes(Paridade)) +
  geom_histogram(binwidth = 1, fill = "white", color = "black") +
  ggtitle("Histogram 2", subtitle = "Num. Cons. paritários, qtdd por Município")+
  xlab("Núm. de cons. paritários") + ylab("")+
  scale_y_continuous(limits = c(0,1550), breaks = seq(0,1500, 250))+
  #scale_x_continuous(limits = c(0,18), breaks = seq(0, 20, 5))+
  theme_classic()+
  theme_hist

hist_2

Tabela paritários

Visualização com tabela simples

table_Num_pari <- Paridade_pond %>% 
  select(-A1) %>%
  summarise_all(sum)%>% 
  gather() %>% 
  arrange(desc(value)) %>% 
  left_join(Paridade_codigo, by = c("key" = "V17")) %>%
  left_join(Conselhos_codigo_nomes, by = c("cod_nomes" = "cod")) %>% 
  select(nome_abr, key, N_Paritários = value)

table_Num_pari 
## # A tibble: 15 x 3
##    nome_abr                  key      N_Paritários
##    <chr>                     <chr>           <dbl>
##  1 <NA>                      Paridade        32493
##  2 Assistência Social        A893             5515
##  3 Saúde                     A625             5429
##  4 D. da Criança e do Ado... A643             5378
##  5 Educação                  A589             4496
##  6 Meio Ambiente             A547             3503
##  7 D. do Idoso               A659             3365
##  8 Segurança Alimentar       A734             1199
##  9 D. da Pessoa com Defic... A667             1042
## 10 D. da Mulher              A555              890
## 11 Segurança Pública         A717              561
## 12 D. da Juventude           A683              534
## 13 D. Humanos                A635              304
## 14 Igualdade Racial          A651              257
## 15 D. de LGBTT               A675               20

03. Caráter

3.1 Deliberativos

Visualização dos rótulos

#3.1. Criar indice para selecionar unicamente a pergunta "Deliberativo"
  
  ##Coluna V5 inclui o caráter do conselho
  index_deli <- str_which(Legenda_Munic$V5,"Deliberativo") 

  ## Usar a coluna V17 que possui os códigos da base de dados
  Delib_lista <- slice(Legenda_Munic,index_deli) 

  #identificar códigos de pergunta
  Delib_codigo <- Delib_lista$V17 
  
  # Nomes
  Delib_codigo_nomes <- Delib_lista %>% 
    select(V17) %>%
    mutate(cod_nomes = Conselhos_codigo_nomes$cod)  
  
  ##Selecionamos apenas as colunas correspondentes a "Deliberativo"
  Munic_Delib <- select(Munics_IPs, A1, Delib_codigo_nomes$V17)

  ### Excluir conselhos da alimentacao escolar, transporte escolar e defesa civil
  #Munic_Delib <- select(Munic_Delib) # -c(A611, A619, A728)
  
  sapply(Munic_Delib[2:15], 2, FUN = unique)
## $A549
## [1] "Sim"               "Não aplicável"     "Não"              
## [4] "Recusa"            "Não sabe informar"
## 
## $A557
## [1] "Não aplicável" "Sim"           "Não"           "Recusa"       
## 
## $A591
## [1] "Não aplicável" "Sim"           "Não"           "Não informado"
## [5] "Recusa"       
## 
## $A627
## [1] "Sim"           "Não"           "Não aplicável" "Recusa"       
## [5] "Não informado"
## 
## $A637
## [1] "Não aplicável" "Sim"           "Não"           "Recusa"       
## [5] "Não informado"
## 
## $A645
## [1] "Sim"           "Não"           "Não aplicável" "Recusa"       
## [5] "Não informado"
## 
## $A653
## [1] "Não aplicável" "Sim"           "Não"           "Recusa"       
## [5] "Não informado"
## 
## $A661
## [1] "Sim"           "Não aplicável" "Não"           "Não informado"
## [5] "Recusa"       
## 
## $A669
## [1] "Não aplicável" "Sim"           "Não"           "Recusa"       
## [5] "Não informado"
## 
## $A677
## [1] "Não aplicável" "Recusa"        "Sim"           "Não"          
## [5] "Não informado"
## 
## $A685
## [1] "Não aplicável" "Sim"           "Não"           "Recusa"       
## [5] "Não informado"
## 
## $A719
## [1] "Não"           "Sim"           "Não aplicável" "Recusa"       
## [5] "Não informado"
## 
## $A736
## [1] "Não"           "Sim"           "Não aplicável" "Recusa"       
## [5] "Não informado"
## 
## $A897
## [1] "Sim"           "Não"           "Não aplicável" "Recusa"

Calcular número de deliberativos

  • Plotar:

    Visão geral

    Verificação da aplicação

    Sumário da distribuição do número de conselhos

    Tabela simples da distribuição do número de conselhos

Delib_pond <- Munic_Delib %>% 
  mutate_at(vars(2:15), funs(carater(.)))%>%
  mutate(Deliberativos = rowSums(select(., -A1))) 

# Visão geral
glimpse(Delib_pond)
## Observations: 5,570
## Variables: 16
## $ A1            <dbl> 110001, 110002, 110003, 110004, 110005, 110006, 11000...
## $ A549          <dbl> 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1,...
## $ A557          <dbl> 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,...
## $ A591          <dbl> 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0,...
## $ A627          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1,...
## $ A637          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,...
## $ A645          <dbl> 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,...
## $ A653          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,...
## $ A661          <dbl> 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0,...
## $ A669          <dbl> 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0,...
## $ A677          <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ A685          <dbl> 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
## $ A719          <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,...
## $ A736          <dbl> 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0,...
## $ A897          <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,...
## $ Deliberativos <dbl> 5, 11, 5, 9, 5, 2, 3, 5, 6, 4, 4, 8, 3, 5, 5, 5, 8, 4...
# Verificação da aplicação
apply(Delib_pond[2:16], 2, unique)
## $A549
## [1] 1 0
## 
## $A557
## [1] 0 1
## 
## $A591
## [1] 0 1
## 
## $A627
## [1] 1 0
## 
## $A637
## [1] 0 1
## 
## $A645
## [1] 1 0
## 
## $A653
## [1] 0 1
## 
## $A661
## [1] 1 0
## 
## $A669
## [1] 0 1
## 
## $A677
## [1] 0 1
## 
## $A685
## [1] 0 1
## 
## $A719
## [1] 0 1
## 
## $A736
## [1] 0 1
## 
## $A897
## [1] 1 0
## 
## $Deliberativos
##  [1]  5 11  9  2  3  6  4  8 10  7  1  0 12 13
# Summary 
summary(Delib_pond$Deliberativos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.000   4.000   5.000   5.304   6.000  13.000
# Tabela 
data.frame(table(Delib_pond$Deliberativos))
##    Var1 Freq
## 1     0    5
## 2     1   47
## 3     2  160
## 4     3  556
## 5     4 1069
## 6     5 1428
## 7     6 1087
## 8     7  601
## 9     8  348
## 10    9  162
## 11   10   67
## 12   11   32
## 13   12    7
## 14   13    1

Juntar ao dados

Visualizar

##Adicionamos os valores da tabela "Paridade_Munic"
Delib_pond <- Delib_pond %>% 
  mutate(A1 = as.character(A1))

Delib_Munic <- Paridade_Munic %>%
  left_join(select(Delib_pond, A1, Deliberativos))

glimpse(Delib_Munic)
## Observations: 5,570
## Variables: 14
## $ A1            <chr> "110001", "110002", "110003", "110004", "110005", "11...
## $ A1a           <dbl> 1100015, 1100023, 1100031, 1100049, 1100056, 1100064,...
## $ B1            <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIXI", "CACOA...
## $ B2            <dbl> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1...
## $ B3            <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO",...
## $ B4            <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 - Norte", "...
## $ B5            <chr> "4 - 20001 até 50000", "6 - 100001 até 500000", "2 - ...
## $ B6            <dbl> 25578, 104401, 6355, 87226, 17986, 18817, 8842, 16651...
## $ Porte_pop2010 <chr> "Pequeno II", "Médio", "Pequeno I", "Médio", "Pequeno...
## $ Pop_Total2010 <dbl> 24392, 90353, 6313, 78574, 17029, 18591, 8783, 13678,...
## $ IDHM          <dbl> 0.641, 0.702, 0.650, 0.718, 0.692, 0.685, 0.613, 0.61...
## $ Num_conselhos <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6, 6, 5, 9, ...
## $ Paridade      <dbl> 5, 11, 5, 9, 6, 3, 3, 5, 5, 7, 6, 8, 4, 6, 5, 3, 8, 4...
## $ Deliberativos <dbl> 5, 11, 5, 9, 5, 2, 3, 5, 6, 4, 4, 8, 3, 5, 5, 5, 8, 4...

Distribuição

### Histogram deliberativos
hist_3 <- ggplot(Delib_pond, aes(Deliberativos)) +
  geom_histogram(binwidth = 1, fill= "white", color="black") +
  xlab("Núm. de cons. deliberativos") + ylab("")+
  scale_y_continuous(limits = c(0,1550), breaks = seq(0,1500, 250))+
  scale_x_continuous(limits = c(0,18), breaks = seq(0, 20, 5))+
  ggtitle("Histogram 3", subtitle = "Num. Cons. deliberativos, qtdd por Município")+
  theme_classic()+
  theme_hist

hist_3

Criar tabela deliberativos

table_Num_del <- Delib_pond %>% 
  select(-A1) %>% 
  summarise_all(sum)%>% 
  gather() %>% 
  arrange(desc(value))%>% 
  left_join(Delib_codigo_nomes, by = c("key" = "V17")) %>%
  left_join(Conselhos_codigo_nomes, by = c("cod_nomes" = "cod")) %>% 
  select(nome_abr, key, N_Deliberativos = value)

table_Num_del
## # A tibble: 15 x 3
##    nome_abr                  key           N_Deliberativos
##    <chr>                     <chr>                   <dbl>
##  1 <NA>                      Deliberativos           29541
##  2 Assistência Social        A897                     5335
##  3 Saúde                     A627                     5006
##  4 D. da Criança e do Ado... A645                     4916
##  5 Educação                  A591                     4101
##  6 Meio Ambiente             A549                     3238
##  7 D. do Idoso               A661                     2939
##  8 Segurança Alimentar       A736                      994
##  9 D. da Pessoa com Defic... A669                      907
## 10 D. da Mulher              A557                      731
## 11 Segurança Pública         A719                      436
## 12 D. da Juventude           A685                      434
## 13 D. Humanos                A637                      278
## 14 Igualdade Racial          A653                      211
## 15 D. de LGBTT               A677                       15

04. Número de reuniões

Visualizar distribuição

## indice para selecionar unicamente a pergunta "número de rueniões?"
index_reu <- str_which(Legenda_Munic$V4,"reuni") ##Coluna V4

Reuni_lista <- Legenda_Munic %>% 
  slice(index_reu) %>% 
  slice(-4) ## tirar fila 4. Conselho do Fundeb; porque é um "conselho de controle...", mas que não tem as outras caracteristicas para avalair, Ou seja, não pode ser avalaido da mesma forma que os outros conselhos, portanto tiro fora da lista

Reuni_codigo <- Reuni_lista$V17 #extraimos os códigos de cada pergunta

#
Reuni_codigo_nomes <- Reuni_lista %>% 
    select(V17)%>% 
    mutate(cod_nomes = Conselhos_codigo_nomes$cod)

##Selecionamos apenas as colunas correspondentes a "número de reuniões"
Munic_Reuni <- select(Munics_IPs,A1, Reuni_codigo_nomes$V17)

glimpse(Munic_Reuni[2:15])
## Observations: 5,570
## Variables: 14
## $ A552 <chr> "8", "9", "6", "Não aplicável", "8", "Não aplicável", "Não apl...
## $ A560 <chr> "Não aplicável", "2", "Não aplicável", "8", "6", "Não aplicáve...
## $ A594 <chr> "Não aplicável", "24", "Não aplicável", "21", "Não aplicável",...
## $ A630 <chr> "14", "16", "12", "12", "12", "12", "13", "14", "12", "10", "1...
## $ A640 <chr> "Não aplicável", "Não aplicável", "Não aplicável", "Não aplicá...
## $ A648 <chr> "2", "12", "4", "15", "4", "6", "8", "12", "13", "12", "12", "...
## $ A656 <chr> "Não aplicável", "Não aplicável", "Não aplicável", "Não aplicá...
## $ A664 <chr> "1", "5", "0", "12", "3", "Não aplicável", "Não aplicável", "1...
## $ A672 <chr> "Não aplicável", "0", "Não aplicável", "10", "Não aplicável", ...
## $ A680 <chr> "Não aplicável", "Não aplicável", "Não aplicável", "Não aplicá...
## $ A688 <chr> "Não aplicável", "0", "Não aplicável", "10", "Não aplicável", ...
## $ A722 <chr> "0", "7", "Não aplicável", "2", "Não aplicável", "Não aplicáve...
## $ A739 <chr> "0", "12", "Não aplicável", "0", "Não aplicável", "Não aplicáv...
## $ A895 <chr> "12", "18", "8", "18", "9", "7", "16", "12", "9", "8", "19", "...

# Solução simples # Introdução de NAs
Munic_Reuni <- Munic_Reuni %>% 
  mutate_if(is.factor, as.character) %>%  
  mutate_if(is.character, as.numeric)

glimpse(Munic_Reuni)
## Observations: 5,570
## Variables: 15
## $ A1   <dbl> 110001, 110002, 110003, 110004, 110005, 110006, 110007, 110008...
## $ A552 <dbl> 8, 9, 6, NA, 8, NA, NA, NA, 18, 0, 0, NA, NA, 12, 0, NA, NA, 1...
## $ A560 <dbl> NA, 2, NA, 8, 6, NA, NA, NA, NA, 12, NA, NA, NA, NA, NA, NA, 1...
## $ A594 <dbl> NA, 24, NA, 21, NA, NA, NA, 33, NA, 18, NA, 66, NA, NA, 10, 48...
## $ A630 <dbl> 14, 16, 12, 12, 12, 12, 13, 14, 12, 10, 12, 12, 12, 8, 12, 14,...
## $ A640 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 12, NA, NA, NA, NA...
## $ A648 <dbl> 2, 12, 4, 15, 4, 6, 8, 12, 13, 12, 12, 12, 12, 12, 12, 6, 12, ...
## $ A656 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ A664 <dbl> 1, 5, 0, 12, 3, NA, NA, 10, 0, 5, 8, 1, NA, 6, 12, NA, 12, NA,...
## $ A672 <dbl> NA, 0, NA, 10, NA, NA, NA, NA, NA, 10, NA, 12, NA, NA, NA, NA,...
## $ A680 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA...
## $ A688 <dbl> NA, 0, NA, 10, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,...
## $ A722 <dbl> 0, 7, NA, 2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1, NA...
## $ A739 <dbl> 0, 12, NA, 0, NA, NA, NA, NA, 0, NA, 5, 0, 3, 0, NA, NA, 6, NA...
## $ A895 <dbl> 12, 18, 8, 18, 9, 7, 16, 12, 9, 8, 19, 6, 6, 2, 17, 3, 15, 12,...
descr::descr(Munic_Reuni[2:15])
##       A552             A560             A594              A630      
##  Min.   : 0.000   Min.   : 0.000   Min.   :  0.000   Min.   : 0.00  
##  1st Qu.: 1.000   1st Qu.: 0.000   1st Qu.:  3.000   1st Qu.: 9.00  
##  Median : 3.000   Median : 4.000   Median :  6.000   Median :12.00  
##  Mean   : 4.455   Mean   : 5.304   Mean   :  7.804   Mean   :11.27  
##  3rd Qu.: 6.000   3rd Qu.:10.000   3rd Qu.: 12.000   3rd Qu.:12.00  
##  Max.   :60.000   Max.   :60.000   Max.   :120.000   Max.   :96.00  
##  NA's   :1832     NA's   :4619     NA's   :712       NA's   :32     
##       A640             A648              A656             A664        
##  Min.   : 0.000   Min.   :  0.000   Min.   : 0.000   Min.   :  0.000  
##  1st Qu.: 3.000   1st Qu.:  5.000   1st Qu.: 1.000   1st Qu.:  2.000  
##  Median : 8.000   Median :  8.000   Median : 6.000   Median :  5.000  
##  Mean   : 7.763   Mean   :  8.823   Mean   : 6.487   Mean   :  6.038  
##  3rd Qu.:12.000   3rd Qu.: 12.000   3rd Qu.:12.000   3rd Qu.: 11.000  
##  Max.   :34.000   Max.   :288.000   Max.   :24.000   Max.   :112.000  
##  NA's   :5253     NA's   :157       NA's   :5297     NA's   :2175     
##       A672             A680             A688             A722       
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 1.000   1st Qu.: 1.000   1st Qu.: 0.000   1st Qu.: 0.000  
##  Median : 6.000   Median : 2.000   Median : 4.000   Median : 4.000  
##  Mean   : 6.302   Mean   : 4.905   Mean   : 5.198   Mean   : 4.969  
##  3rd Qu.:12.000   3rd Qu.:10.000   3rd Qu.:10.000   3rd Qu.: 9.000  
##  Max.   :58.000   Max.   :14.000   Max.   :48.000   Max.   :24.000  
##  NA's   :4489     NA's   :5549     NA's   :4974     NA's   :4897    
##       A739             A895       
##  Min.   : 0.000   Min.   :  0.00  
##  1st Qu.: 0.000   1st Qu.:  6.00  
##  Median : 2.000   Median : 11.00  
##  Mean   : 3.843   Mean   : 10.28  
##  3rd Qu.: 6.000   3rd Qu.: 12.00  
##  Max.   :24.000   Max.   :150.00  
##  NA's   :3955     NA's   :36
boxplot(Munic_Reuni[2:15])

Manipular outliers

# Substituir outliers antes de somar o total por mun. 
#Substituir 5% dos maiores outliers 

# identificar outs.
out <- boxplot(Munic_Reuni[2:15])$out

summary(out) 
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0     4.0    20.0    22.2    26.0   288.0
length(out) # 1141
## [1] 1141
# idenficar 5% dos outs.
cinco_porc <- round(5*length(out)/100, 1) # 1141 casos, ~5% = 57 casos

# Guardar 5% dos outliers - Valores máximos
out_5 <- tail(sort(out), cinco_porc)
out_5
##  [1]  50  50  50  50  50  50  50  50  50  51  52  53  54  55  55  55  56  56  58
## [20]  60  60  60  60  60  63  64  66  66  67  69  75  88  88  88  88  88  88  92
## [39]  92  96  96  96  96  96 101 101 104 105 108 108 112 114 120 123 150 193 288
length(out_5)
## [1] 57
summary(out_5) # valor mínimo 50; subtituir todos os valores maiores por este;
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   50.00   55.00   67.00   82.18   96.00  288.00
######## Aplicar exclusão de outliers
Munic_Reuni <- Munic_Reuni %>% 
  mutate_at( vars(2:15),~ifelse(.x %in% out_5, 50, .x))

summary(Munic_Reuni) # Valor máximo 50;
##        A1              A552             A560             A594       
##  Min.   :110001   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:251213   1st Qu.: 1.000   1st Qu.: 0.000   1st Qu.: 3.000  
##  Median :314628   Median : 3.000   Median : 4.000   Median : 6.000  
##  Mean   :325359   Mean   : 4.452   Mean   : 5.293   Mean   : 7.667  
##  3rd Qu.:411919   3rd Qu.: 6.000   3rd Qu.:10.000   3rd Qu.:12.000  
##  Max.   :530010   Max.   :50.000   Max.   :50.000   Max.   :50.000  
##                   NA's   :1832     NA's   :4619     NA's   :712     
##       A630            A640             A648             A656       
##  Min.   : 0.00   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 9.00   1st Qu.: 3.000   1st Qu.: 5.000   1st Qu.: 1.000  
##  Median :12.00   Median : 8.000   Median : 8.000   Median : 6.000  
##  Mean   :11.25   Mean   : 7.763   Mean   : 8.716   Mean   : 6.487  
##  3rd Qu.:12.00   3rd Qu.:12.000   3rd Qu.:12.000   3rd Qu.:12.000  
##  Max.   :50.00   Max.   :34.000   Max.   :50.000   Max.   :24.000  
##  NA's   :32      NA's   :5253     NA's   :157      NA's   :5297    
##       A664             A672             A680             A688       
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 2.000   1st Qu.: 1.000   1st Qu.: 1.000   1st Qu.: 0.000  
##  Median : 5.000   Median : 6.000   Median : 2.000   Median : 4.000  
##  Mean   : 5.994   Mean   : 6.295   Mean   : 4.905   Mean   : 5.198  
##  3rd Qu.:11.000   3rd Qu.:12.000   3rd Qu.:10.000   3rd Qu.:10.000  
##  Max.   :50.000   Max.   :50.000   Max.   :14.000   Max.   :48.000  
##  NA's   :2175     NA's   :4489     NA's   :5549     NA's   :4974    
##       A722             A739             A895      
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.00  
##  1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 6.00  
##  Median : 4.000   Median : 2.000   Median :11.00  
##  Mean   : 4.969   Mean   : 3.843   Mean   :10.23  
##  3rd Qu.: 9.000   3rd Qu.: 6.000   3rd Qu.:12.00  
##  Max.   :24.000   Max.   :24.000   Max.   :50.00  
##  NA's   :4897     NA's   :3955     NA's   :36
boxplot(Munic_Reuni[2:15])

Calcular número de reuniões

## Somar
Reuni_pond <- Munic_Reuni %>% 
  mutate(Num_reunioes = rowSums(select(., -A1), na.rm = T))

### 
descr::descr(Reuni_pond)
##        A1              A552             A560             A594       
##  Min.   :110001   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.:251213   1st Qu.: 1.000   1st Qu.: 0.000   1st Qu.: 3.000  
##  Median :314628   Median : 3.000   Median : 4.000   Median : 6.000  
##  Mean   :325359   Mean   : 4.452   Mean   : 5.293   Mean   : 7.667  
##  3rd Qu.:411919   3rd Qu.: 6.000   3rd Qu.:10.000   3rd Qu.:12.000  
##  Max.   :530010   Max.   :50.000   Max.   :50.000   Max.   :50.000  
##                   NA's   :1832     NA's   :4619     NA's   :712     
##       A630            A640             A648             A656       
##  Min.   : 0.00   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 9.00   1st Qu.: 3.000   1st Qu.: 5.000   1st Qu.: 1.000  
##  Median :12.00   Median : 8.000   Median : 8.000   Median : 6.000  
##  Mean   :11.25   Mean   : 7.763   Mean   : 8.716   Mean   : 6.487  
##  3rd Qu.:12.00   3rd Qu.:12.000   3rd Qu.:12.000   3rd Qu.:12.000  
##  Max.   :50.00   Max.   :34.000   Max.   :50.000   Max.   :24.000  
##  NA's   :32      NA's   :5253     NA's   :157      NA's   :5297    
##       A664             A672             A680             A688       
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
##  1st Qu.: 2.000   1st Qu.: 1.000   1st Qu.: 1.000   1st Qu.: 0.000  
##  Median : 5.000   Median : 6.000   Median : 2.000   Median : 4.000  
##  Mean   : 5.994   Mean   : 6.295   Mean   : 4.905   Mean   : 5.198  
##  3rd Qu.:11.000   3rd Qu.:12.000   3rd Qu.:10.000   3rd Qu.:10.000  
##  Max.   :50.000   Max.   :50.000   Max.   :14.000   Max.   :48.000  
##  NA's   :2175     NA's   :4489     NA's   :5549     NA's   :4974    
##       A722             A739             A895        Num_reunioes   
##  Min.   : 0.000   Min.   : 0.000   Min.   : 0.00   Min.   :  0.00  
##  1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 6.00   1st Qu.: 32.00  
##  Median : 4.000   Median : 2.000   Median :11.00   Median : 42.00  
##  Mean   : 4.969   Mean   : 3.843   Mean   :10.23   Mean   : 48.32  
##  3rd Qu.: 9.000   3rd Qu.: 6.000   3rd Qu.:12.00   3rd Qu.: 57.00  
##  Max.   :24.000   Max.   :24.000   Max.   :50.00   Max.   :263.00  
##  NA's   :4897     NA's   :3955     NA's   :36
descr::freq(as.factor(Reuni_pond$Num_reunioes))

## as.factor(Reuni_pond$Num_reunioes) 
##       Frequência Percentual
## 0              1    0.01795
## 2              1    0.01795
## 3              2    0.03591
## 4              3    0.05386
## 6              2    0.03591
## 7              4    0.07181
## 8              7    0.12567
## 9              4    0.07181
## 10             2    0.03591
## 11            12    0.21544
## 12            12    0.21544
## 13            10    0.17953
## 14            14    0.25135
## 15            23    0.41293
## 16            29    0.52065
## 17            23    0.41293
## 18            35    0.62837
## 19            25    0.44883
## 20            54    0.96948
## 21            60    1.07720
## 22            75    1.34650
## 23            61    1.09515
## 24            75    1.34650
## 25            74    1.32855
## 26           106    1.90305
## 27           104    1.86715
## 28           126    2.26212
## 29           118    2.11849
## 30           140    2.51346
## 31           149    2.67504
## 32           120    2.15440
## 33           130    2.33393
## 34           134    2.40575
## 35           128    2.29803
## 36           184    3.30341
## 37           131    2.35189
## 38           150    2.69300
## 39           117    2.10054
## 40           139    2.49551
## 41           119    2.13645
## 42           142    2.54937
## 43           127    2.28007
## 44           128    2.29803
## 45           108    1.93896
## 46           108    1.93896
## 47            88    1.57989
## 48           109    1.95691
## 49            89    1.59785
## 50            99    1.77738
## 51            95    1.70557
## 52           101    1.81329
## 53            65    1.16697
## 54            79    1.41831
## 55            59    1.05925
## 56            70    1.25673
## 57            53    0.95153
## 58            81    1.45422
## 59            47    0.84381
## 60            49    0.87971
## 61            62    1.11311
## 62            40    0.71813
## 63            43    0.77199
## 64            48    0.86176
## 65            39    0.70018
## 66            37    0.66427
## 67            32    0.57451
## 68            34    0.61041
## 69            33    0.59246
## 70            30    0.53860
## 71            37    0.66427
## 72            31    0.55655
## 73            26    0.46679
## 74            26    0.46679
## 75            28    0.50269
## 76            25    0.44883
## 77            19    0.34111
## 78            25    0.44883
## 79            17    0.30521
## 80            12    0.21544
## 81            12    0.21544
## 82            13    0.23339
## 83            17    0.30521
## 84            18    0.32316
## 85            13    0.23339
## 86            13    0.23339
## 87            10    0.17953
## 88            17    0.30521
## 89            13    0.23339
## 90            15    0.26930
## 91            15    0.26930
## 92            11    0.19749
## 93            17    0.30521
## 94            11    0.19749
## 95            14    0.25135
## 96             7    0.12567
## 97            13    0.23339
## 98             8    0.14363
## 99            12    0.21544
## 100            9    0.16158
## 101            7    0.12567
## 102            8    0.14363
## 103            5    0.08977
## 104           10    0.17953
## 105            8    0.14363
## 106            5    0.08977
## 107            5    0.08977
## 108            9    0.16158
## 109            2    0.03591
## 110           14    0.25135
## 111            7    0.12567
## 112            4    0.07181
## 113            8    0.14363
## 114           12    0.21544
## 115            7    0.12567
## 116            3    0.05386
## 117            4    0.07181
## 118            2    0.03591
## 119            6    0.10772
## 120            7    0.12567
## 121           10    0.17953
## 122            3    0.05386
## 123            2    0.03591
## 124            2    0.03591
## 125            1    0.01795
## 126            4    0.07181
## 127            4    0.07181
## 128            5    0.08977
## 129            2    0.03591
## 130            2    0.03591
## 131            3    0.05386
## 132            2    0.03591
## 133            5    0.08977
## 134            4    0.07181
## 135            2    0.03591
## 136            5    0.08977
## 137            3    0.05386
## 138            5    0.08977
## 139            1    0.01795
## 140            2    0.03591
## 141            1    0.01795
## 142            1    0.01795
## 143            2    0.03591
## 144            3    0.05386
## 145            2    0.03591
## 146            3    0.05386
## 147            2    0.03591
## 148            2    0.03591
## 149            1    0.01795
## 150            2    0.03591
## 151            1    0.01795
## 152            3    0.05386
## 154            1    0.01795
## 155            2    0.03591
## 156            3    0.05386
## 158            2    0.03591
## 160            2    0.03591
## 163            1    0.01795
## 165            3    0.05386
## 166            2    0.03591
## 168            1    0.01795
## 170            2    0.03591
## 171            1    0.01795
## 172            2    0.03591
## 173            1    0.01795
## 175            1    0.01795
## 177            1    0.01795
## 180            1    0.01795
## 183            2    0.03591
## 188            1    0.01795
## 189            1    0.01795
## 191            1    0.01795
## 193            2    0.03591
## 194            1    0.01795
## 196            1    0.01795
## 197            1    0.01795
## 199            1    0.01795
## 201            2    0.03591
## 225            1    0.01795
## 237            1    0.01795
## 245            1    0.01795
## 247            1    0.01795
## 257            1    0.01795
## 263            1    0.01795
## Total       5570  100.00000
summary(Reuni_pond$Num_reunioes)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    0.00   32.00   42.00   48.32   57.00  263.00

Juntar dados

Visualizar

Reuni_pond <- Reuni_pond %>% 
  mutate(A1 = as.character(A1))

##Adicionamos os valores na tabela "Fisca_Munic"
Reuni_Munic <- Delib_Munic %>%
  left_join(select(Reuni_pond, A1, Num_reunioes))

glimpse(Reuni_Munic)
## Observations: 5,570
## Variables: 15
## $ A1            <chr> "110001", "110002", "110003", "110004", "110005", "11...
## $ A1a           <dbl> 1100015, 1100023, 1100031, 1100049, 1100056, 1100064,...
## $ B1            <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIXI", "CACOA...
## $ B2            <dbl> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1...
## $ B3            <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO",...
## $ B4            <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 - Norte", "...
## $ B5            <chr> "4 - 20001 até 50000", "6 - 100001 até 500000", "2 - ...
## $ B6            <dbl> 25578, 104401, 6355, 87226, 17986, 18817, 8842, 16651...
## $ Porte_pop2010 <chr> "Pequeno II", "Médio", "Pequeno I", "Médio", "Pequeno...
## $ Pop_Total2010 <dbl> 24392, 90353, 6313, 78574, 17029, 18591, 8783, 13678,...
## $ IDHM          <dbl> 0.641, 0.702, 0.650, 0.718, 0.692, 0.685, 0.613, 0.61...
## $ Num_conselhos <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6, 6, 5, 9, ...
## $ Paridade      <dbl> 5, 11, 5, 9, 6, 3, 3, 5, 5, 7, 6, 8, 4, 6, 5, 3, 8, 4...
## $ Deliberativos <dbl> 5, 11, 5, 9, 5, 2, 3, 5, 6, 4, 4, 8, 3, 5, 5, 5, 8, 4...
## $ Num_reunioes  <dbl> 37, 105, 30, 108, 42, 25, 37, 81, 52, 75, 56, 105, 33...

Tabela Número de reuniões

table_Num_Reuni <- Reuni_pond %>% 
  select(-A1) %>% 
  summarise_all(sum, na.rm = T)%>% 
  gather() %>% 
  arrange(desc(as.numeric(value)))%>% 
  left_join(Reuni_codigo_nomes, by = c("key" = "V17")) %>%
  left_join(Conselhos_codigo_nomes, by = c("cod_nomes" = "cod")) %>% 
  select(nome_abr, key, N_reuni = value)

table_Num_Reuni
## # A tibble: 15 x 3
##    nome_abr                  key          N_reuni
##    <chr>                     <chr>          <dbl>
##  1 <NA>                      Num_reunioes  269154
##  2 Saúde                     A630           62296
##  3 Assistência Social        A895           56620
##  4 D. da Criança e do Ado... A648           47179
##  5 Educação                  A594           37248
##  6 D. do Idoso               A664           20348
##  7 Meio Ambiente             A552           16641
##  8 D. da Pessoa com Defic... A672            6805
##  9 Segurança Alimentar       A739            6206
## 10 D. da Mulher              A560            5034
## 11 Segurança Pública         A722            3344
## 12 D. da Juventude           A688            3098
## 13 D. Humanos                A640            2461
## 14 Igualdade Racial          A656            1771
## 15 D. de LGBTT               A680             103
# write_excel_csv2(table_Num_Reuni, "table_Num_Reuni.csv")

05. Tabela dos indicadicores por área

tabela_indicadores <- table_Num_Conselhos %>% 
  select(-key) %>% 
  left_join(table_Num_pari, by = "nome_abr") %>% 
  select(-key) %>% 
  left_join(table_Num_del, by = "nome_abr") %>%
  select(-key) %>% 
  left_join(table_Num_Reuni, by = "nome_abr") %>% 
  select(-key) %>% 
  arrange(desc(N_conselhos))

tabela_indicadores %>% 
  datatable(extensions = 'FixedColumns',
            rownames = F,
            options = list(autoFill = TRUE,
                           fixedHeader = TRUE,
                           autowidth = TRUE,
                           paging = F,
                           scrollX = TRUE,
                           scrollY = "400px"))

06. Calculo do IPPC

Visualização

Distribuicao_conselhos <- Reuni_Munic

# Excluir Brasília e Fernando de Noronha
Distribuicao_conselhos <- Distribuicao_conselhos %>%
  filter(!B1 %in% c("BRASILIA", "FERNANDO DE NORONHA"))

glimpse(Distribuicao_conselhos)
## Observations: 5,568
## Variables: 15
## $ A1            <chr> "110001", "110002", "110003", "110004", "110005", "11...
## $ A1a           <dbl> 1100015, 1100023, 1100031, 1100049, 1100056, 1100064,...
## $ B1            <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIXI", "CACOA...
## $ B2            <dbl> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1...
## $ B3            <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO", "RO",...
## $ B4            <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 - Norte", "...
## $ B5            <chr> "4 - 20001 até 50000", "6 - 100001 até 500000", "2 - ...
## $ B6            <dbl> 25578, 104401, 6355, 87226, 17986, 18817, 8842, 16651...
## $ Porte_pop2010 <chr> "Pequeno II", "Médio", "Pequeno I", "Médio", "Pequeno...
## $ Pop_Total2010 <dbl> 24392, 90353, 6313, 78574, 17029, 18591, 8783, 13678,...
## $ IDHM          <dbl> 0.641, 0.702, 0.650, 0.718, 0.692, 0.685, 0.613, 0.61...
## $ Num_conselhos <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6, 6, 5, 9, ...
## $ Paridade      <dbl> 5, 11, 5, 9, 6, 3, 3, 5, 5, 7, 6, 8, 4, 6, 5, 3, 8, 4...
## $ Deliberativos <dbl> 5, 11, 5, 9, 5, 2, 3, 5, 6, 4, 4, 8, 3, 5, 5, 5, 8, 4...
## $ Num_reunioes  <dbl> 37, 105, 30, 108, 42, 25, 37, 81, 52, 75, 56, 105, 33...

Valores de referência

Cria uma variavel ficctícia para o valor IPPC = 1

# Criar valor de referência
Ref <- data.frame(A1 = "Ref",   A1a = "Ref",    B1 = "Ref", B2 = "Ref", B3 = "Ref", B4 = "Ref",     B5 = "Ref", B6 = "Ref", Porte_pop2010 = "Ref", Pop_Total2010 = "Ref", IDHM = "Ref",  Num_conselhos = 14,    Paridade = 14,  Deliberativos= 14, Num_reunioes = 263)

Distribuicao_conselhos <- rbind(Distribuicao_conselhos, Ref)

Pré-calculos do Índice

  • Perfil do conselho:

Soma:

Número de Conselhos +
Número de Conselhos paritários +
Número de Conselhos deliberativos +
  • Índice participativo:

    Número de reuniões/número de conselhos

Isto é, a média das reuniões

  • Plotar:

    Sumário do perfil

    10 primeiros casos

    10 últimos casos

    Sumário do Índice participativo

    10 primeiros casos

    10 últimos casos

## potencial participativo: valor ponderado a cada conselho.

# Como indicado no roteiro: 1 para cada conselho, 1 se paritário, 1 se deliberativo, 0.3 o resto.

# "Perfil do Conselho": descreve o a quatdade de conselhos e suas poderações
Potencial <- Distribuicao_conselhos %>%
  mutate(Perfil_Conselho = Num_conselhos + Paridade + Deliberativos)

summary(Potencial$Perfil_Conselho)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     0.0    14.0    17.0    17.3    20.0    42.0
Potencial %>% 
  arrange(desc(Perfil_Conselho)) %>% 
  head(10)
## # A tibble: 10 x 16
##    A1    A1a   B1    B2    B3    B4    B5    B6    Porte_pop2010 Pop_Total2010
##    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>         <chr>        
##  1 Ref   Ref   Ref   Ref   Ref   Ref   Ref   Ref   Ref           Ref          
##  2 2930~ 2930~ SERR~ 29    BA    2 - ~ 5 - ~ 83275 Médio         76762        
##  3 2208~ 2208~ PICOS 22    PI    2 - ~ 5 - ~ 76544 Médio         73414        
##  4 2303~ 2303~ CARI~ 23    CE    2 - ~ 3 - ~ 18810 Pequeno I     18567        
##  5 2900~ 2900~ ALAG~ 29    BA    2 - ~ 6 - ~ 1544~ Grande        141949       
##  6 3205~ 3205~ VITO~ 32    ES    3 - ~ 6 - ~ 3558~ Grande        327801       
##  7 3548~ 3548~ SAO ~ 35    SP    3 - ~ 6 - ~ 2413~ Grande        221950       
##  8 2910~ 2910~ FEIR~ 29    BA    2 - ~ 7 - ~ 6175~ Grande        556642       
##  9 3104~ 3104~ ARAXA 31    MG    3 - ~ 6 - ~ 1022~ Médio         93672        
## 10 3113~ 3113~ CARA~ 31    MG    3 - ~ 5 - ~ 90782 Médio         85239        
## # ... with 6 more variables: IDHM <chr>, Num_conselhos <dbl>, Paridade <dbl>,
## #   Deliberativos <dbl>, Num_reunioes <dbl>, Perfil_Conselho <dbl>
Potencial %>% 
  arrange(Perfil_Conselho) %>% 
  head(10)
## # A tibble: 10 x 16
##    A1    A1a   B1    B2    B3    B4    B5    B6    Porte_pop2010 Pop_Total2010
##    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>         <chr>        
##  1 2102~ 2102~ BREJ~ 21    MA    2 - ~ 2 - ~ 9166  Pequeno I     5577         
##  2 4309~ 4309~ HULH~ 43    RS    4 - ~ 2 - ~ 6478  Pequeno I     6043         
##  3 3109~ 3109~ BUGRE 31    MG    3 - ~ 1 - ~ 4134  Pequeno I     3992         
##  4 5106~ 5106~ NOVA~ 51    MT    5 - ~ 3 - ~ 12946 Pequeno I     11643        
##  5 5219~ 5219~ SANT~ 52    GO    5 - ~ 2 - ~ 5073  Pequeno I     4762         
##  6 1100~ 1100~ SANT~ 11    RO    1 - ~ 2 - ~ 8532  Pequeno I     8886         
##  7 2100~ 2100~ ALTA~ 21    MA    2 - ~ 3 - ~ 11616 Pequeno I     11063        
##  8 2101~ 2101~ BENE~ 21    MA    2 - ~ 2 - ~ 5519  Pequeno I     5469         
##  9 1100~ 1100~ CAST~ 11    RO    1 - ~ 1 - ~ 3617  Pequeno I     3575         
## 10 1300~ 1300~ ANORI 13    AM    1 - ~ 3 - ~ 19292 Pequeno I     16317        
## # ... with 6 more variables: IDHM <chr>, Num_conselhos <dbl>, Paridade <dbl>,
## #   Deliberativos <dbl>, Num_reunioes <dbl>, Perfil_Conselho <dbl>
# índice participativo: Número de reuniões/Número de Conselhos (média das reuniões)
Potencial <- Potencial %>% 
  mutate(Indice_participativo = round(Num_reunioes/Num_conselhos, 3))

summary(Potencial$Indice_participativo)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.500   5.800   7.472   7.754   9.375  24.625       1
Potencial %>% 
  arrange(desc(Indice_participativo)) %>% 
  head(10)
## # A tibble: 10 x 17
##    A1    A1a   B1    B2    B3    B4    B5    B6    Porte_pop2010 Pop_Total2010
##    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>         <chr>        
##  1 4202~ 4202~ BLUM~ 42    SC    4 - ~ 6 - ~ 3388~ Grande        309011       
##  2 4306~ 4306~ ELDO~ 43    RS    4 - ~ 4 - ~ 37794 Pequeno II    34343        
##  3 3151~ 3151~ POCO~ 31    MG    3 - ~ 6 - ~ 1636~ Grande        152435       
##  4 3304~ 3304~ RIO ~ 33    RJ    3 - ~ 7 - ~ 6476~ Metrópole     6320446      
##  5 4300~ 4300~ ALEG~ 43    RS    4 - ~ 5 - ~ 78499 Médio         77653        
##  6 1101~ 1101~ SAO ~ 11    RO    1 - ~ 3 - ~ 19002 Pequeno I     16035        
##  7 2902~ 2902~ AURE~ 29    BA    2 - ~ 3 - ~ 13089 Pequeno I     13595        
##  8 4314~ 4314~ PORT~ 43    RS    4 - ~ 7 - ~ 1476~ Metrópole     1409351      
##  9 1400~ 1400~ BOA ~ 14    RR    1 - ~ 6 - ~ 3207~ Grande        284313       
## 10 3205~ 3205~ VITO~ 32    ES    3 - ~ 6 - ~ 3558~ Grande        327801       
## # ... with 7 more variables: IDHM <chr>, Num_conselhos <dbl>, Paridade <dbl>,
## #   Deliberativos <dbl>, Num_reunioes <dbl>, Perfil_Conselho <dbl>,
## #   Indice_participativo <dbl>
Potencial %>% 
  arrange(Indice_participativo) %>% 
  head(10)
## # A tibble: 10 x 17
##    A1    A1a   B1    B2    B3    B4    B5    B6    Porte_pop2010 Pop_Total2010
##    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>         <chr>        
##  1 1200~ 1200~ ASSI~ 12    AC    1 - ~ 2 - ~ 6738  Pequeno I     6072         
##  2 4315~ 4315~ ROLA~ 43    RS    4 - ~ 1 - ~ 2542  Pequeno I     2546         
##  3 1303~ 1303~ SANT~ 13    AM    1 - ~ 4 - ~ 22404 Pequeno I     18146        
##  4 2915~ 2915~ ITAN~ 29    BA    2 - ~ 2 - ~ 8034  Pequeno I     7598         
##  5 2100~ 2100~ ALTA~ 21    MA    2 - ~ 3 - ~ 11616 Pequeno I     11063        
##  6 5106~ 5106~ PORT~ 51    MT    5 - ~ 1 - ~ 3354  Pequeno I     3649         
##  7 3504~ 3504~ BALS~ 35    SP    3 - ~ 2 - ~ 8773  Pequeno I     8160         
##  8 5220~ 5220~ SIMO~ 52    GO    5 - ~ 2 - ~ 6773  Pequeno I     6514         
##  9 1716~ 1716~ PARA~ 17    TO    1 - ~ 3 - ~ 10573 Pequeno I     10338        
## 10 2102~ 2102~ BURI~ 21    MA    2 - ~ 4 - ~ 28022 Pequeno II    27013        
## # ... with 7 more variables: IDHM <chr>, Num_conselhos <dbl>, Paridade <dbl>,
## #   Deliberativos <dbl>, Num_reunioes <dbl>, Perfil_Conselho <dbl>,
## #   Indice_participativo <dbl>

Calcular IPPC

  • IPPC: Perfil do conselho * Índice participativo
# Potencial participativo = média de reuniões * perfil dos conselhos.
Potencial <- Potencial %>% 
  mutate(Potencial_participativo = round(Perfil_Conselho * Indice_participativo, 3))

glimpse(Potencial)
## Observations: 5,569
## Variables: 18
## $ A1                      <chr> "110001", "110002", "110003", "110004", "11...
## $ A1a                     <chr> "1100015", "1100023", "1100031", "1100049",...
## $ B1                      <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIX...
## $ B2                      <chr> "11", "11", "11", "11", "11", "11", "11", "...
## $ B3                      <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "...
## $ B4                      <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 -...
## $ B5                      <chr> "4 - 20001 até 50000", "6 - 100001 até 5000...
## $ B6                      <chr> "25578", "104401", "6355", "87226", "17986"...
## $ Porte_pop2010           <chr> "Pequeno II", "Médio", "Pequeno I", "Médio"...
## $ Pop_Total2010           <chr> "24392", "90353", "6313", "78574", "17029",...
## $ IDHM                    <chr> "0.641", "0.702", "0.65", "0.718", "0.692",...
## $ Num_conselhos           <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6,...
## $ Paridade                <dbl> 5, 11, 5, 9, 6, 3, 3, 5, 5, 7, 6, 8, 4, 6, ...
## $ Deliberativos           <dbl> 5, 11, 5, 9, 5, 2, 3, 5, 6, 4, 4, 8, 3, 5, ...
## $ Num_reunioes            <dbl> 37, 105, 30, 108, 42, 25, 37, 81, 52, 75, 5...
## $ Perfil_Conselho         <dbl> 17, 33, 15, 28, 17, 8, 9, 15, 17, 19, 16, 2...
## $ Indice_participativo    <dbl> 5.286, 9.545, 6.000, 10.800, 7.000, 8.333, ...
## $ Potencial_participativo <dbl> 89.862, 314.985, 90.000, 302.400, 119.000, ...

Normalizar índice

Transformar índice para que sua variação seja entre 0, menor valor, e 1, maior.

O valor 1 corresponde a variável ficctítica criada acima

  • Plotar:

    Visão geral

    Sumário do perfil

    Boxplot

    10 primeiros casos

    10 últimos casos

# # Aplicar fórmula
# Normalizar 
# (x-min(x))/(max(x)-min(x))

#Checar NAs
#View(sapply(Potencial, function(x)all(any(is.na(x)))))

#sum(is.na(Potencial$Indice_participativo)) # Apenas 1 NA.

## Remover Na's
Potencial <- Potencial %>% 
  mutate(IPP_Norm = round((Potencial$Potencial_participativo - min(Potencial$Potencial_participativo, na.rm = T))/(max(Potencial$Potencial_participativo, na.rm = T)- min(Potencial$Potencial_participativo, na.rm = T)),3))

sum(is.na(Potencial$IPP_Norm)) # apenas 1 NA
## [1] 1
Potencial <- Potencial %>% 
  drop_na(IPP_Norm)

glimpse(Potencial$IPP_Norm)
##  num [1:5568] 0.107 0.395 0.107 0.379 0.144 0.077 0.134 0.303 0.181 0.22 ...
summary(Potencial$IPP_Norm)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##  0.0000  0.1070  0.1460  0.1657  0.1970  1.0000
ggplot(Potencial, aes(y = 1, x = IPP_Norm))+
  geom_boxplot()+
  theme_classic()+
  theme_box

Potencial %>% 
  arrange(desc(IPP_Norm)) %>% 
  head(10)
## # A tibble: 10 x 19
##    A1    A1a   B1    B2    B3    B4    B5    B6    Porte_pop2010 Pop_Total2010
##    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>         <chr>        
##  1 Ref   Ref   Ref   Ref   Ref   Ref   Ref   Ref   Ref           Ref          
##  2 3205~ 3205~ VITO~ 32    ES    3 - ~ 6 - ~ 3558~ Grande        327801       
##  3 3201~ 3201~ CARI~ 32    ES    3 - ~ 6 - ~ 3818~ Grande        348738       
##  4 4300~ 4300~ ALEG~ 43    RS    4 - ~ 5 - ~ 78499 Médio         77653        
##  5 3304~ 3304~ RIO ~ 33    RJ    3 - ~ 7 - ~ 6476~ Metrópole     6320446      
##  6 4314~ 4314~ PORT~ 43    RS    4 - ~ 7 - ~ 1476~ Metrópole     1409351      
##  7 2927~ 2927~ SALV~ 29    BA    2 - ~ 7 - ~ 2921~ Metrópole     2675656      
##  8 3205~ 3205~ VILA~ 32    ES    3 - ~ 6 - ~ 4727~ Grande        414586       
##  9 1400~ 1400~ BOA ~ 14    RR    1 - ~ 6 - ~ 3207~ Grande        284313       
## 10 4202~ 4202~ BLUM~ 42    SC    4 - ~ 6 - ~ 3388~ Grande        309011       
## # ... with 9 more variables: IDHM <chr>, Num_conselhos <dbl>, Paridade <dbl>,
## #   Deliberativos <dbl>, Num_reunioes <dbl>, Perfil_Conselho <dbl>,
## #   Indice_participativo <dbl>, Potencial_participativo <dbl>, IPP_Norm <dbl>
Potencial %>% 
  arrange(Perfil_Conselho) %>% 
  head(10)
## # A tibble: 10 x 19
##    A1    A1a   B1    B2    B3    B4    B5    B6    Porte_pop2010 Pop_Total2010
##    <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>         <chr>        
##  1 4309~ 4309~ HULH~ 43    RS    4 - ~ 2 - ~ 6478  Pequeno I     6043         
##  2 3109~ 3109~ BUGRE 31    MG    3 - ~ 1 - ~ 4134  Pequeno I     3992         
##  3 5106~ 5106~ NOVA~ 51    MT    5 - ~ 3 - ~ 12946 Pequeno I     11643        
##  4 5219~ 5219~ SANT~ 52    GO    5 - ~ 2 - ~ 5073  Pequeno I     4762         
##  5 1100~ 1100~ SANT~ 11    RO    1 - ~ 2 - ~ 8532  Pequeno I     8886         
##  6 2100~ 2100~ ALTA~ 21    MA    2 - ~ 3 - ~ 11616 Pequeno I     11063        
##  7 2101~ 2101~ BENE~ 21    MA    2 - ~ 2 - ~ 5519  Pequeno I     5469         
##  8 1100~ 1100~ CAST~ 11    RO    1 - ~ 1 - ~ 3617  Pequeno I     3575         
##  9 1300~ 1300~ ANORI 13    AM    1 - ~ 3 - ~ 19292 Pequeno I     16317        
## 10 1504~ 1504~ NOVA~ 15    PA    1 - ~ 4 - ~ 20663 Pequeno II    20158        
## # ... with 9 more variables: IDHM <chr>, Num_conselhos <dbl>, Paridade <dbl>,
## #   Deliberativos <dbl>, Num_reunioes <dbl>, Perfil_Conselho <dbl>,
## #   Indice_participativo <dbl>, Potencial_participativo <dbl>, IPP_Norm <dbl>

Classificar

Potencial <- filter(Potencial, IPP_Norm != 1)

# Classificação IPP-Norm
# summary(Potencial$IPP_Norm)
# p <- ggplot(Potencial, aes(x=1, y=IPP_Norm)) +
#     geom_boxplot()
# 
# ggplot_build(p)$data

p <- ggplot(Potencial, aes(x= IPP_Norm, y = 1)) +
  geom_boxplot(coef = 3)

ggplot_build(p)$data
## [[1]]
##   xmin xlower xmiddle xupper  xmax
## 1    0  0.107   0.146  0.197 0.467
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     outliers
## 1 0.533, 0.711, 0.490, 0.556, 0.510, 0.514, 0.532, 0.521, 0.475, 0.550, 0.593, 0.470, 0.496, 0.593, 0.496, 0.490, 0.629, 0.501, 0.716, 0.498, 0.481, 0.674, 0.473, 0.607, 0.578, 0.498, 0.593, 0.653, 0.522, 0.875, 0.475, 0.532, 0.625, 0.713, 0.901, 0.503, 0.567, 0.527, 0.767, 0.482, 0.505, 0.616, 0.505, 0.524, 0.500, 0.479, 0.511, 0.497, 0.522, 0.523, 0.471, 0.554, 0.636, 0.514, 0.559, 0.587, 0.471, 0.521, 0.568, 0.684, 0.588, 0.529, 0.578, 0.789, 0.489, 0.630, 0.492, 0.524, 0.495, 0.486, 0.655, 0.742, 0.506, 0.477, 0.472, 0.527, 0.613, 0.499, 0.582, 0.620, 0.472, 0.556, 0.470, 0.507
##   notchupper notchlower y flipped_aes PANEL group xmin_final xmax_final  ymin
## 1  0.1479059  0.1440941 1        TRUE     1    -1          0      0.901 0.625
##    ymax xid newx new_width weight colour  fill size alpha shape linetype
## 1 1.375   1    1      0.75      1 grey20 white  0.5    NA    19    solid
###
Potencial <- Potencial %>% 
  mutate(IPP_Class = case_when(
    IPP_Norm <= 0.107 ~ "muito baixo",
    IPP_Norm >= 0.108 & IPP_Norm <= 0.146 ~ "baixo",
    IPP_Norm >= 0.147 & IPP_Norm <= 0.197 ~ "médio",
    IPP_Norm >= 0.198 & IPP_Norm <= 0.467 ~ "alto",
    IPP_Norm >= 0.468 ~ "muito alto"))

glimpse(Potencial)
## Observations: 5,567
## Variables: 20
## $ A1                      <chr> "110001", "110002", "110003", "110004", "11...
## $ A1a                     <chr> "1100015", "1100023", "1100031", "1100049",...
## $ B1                      <chr> "ALTA FLORESTA DOESTE", "ARIQUEMES", "CABIX...
## $ B2                      <chr> "11", "11", "11", "11", "11", "11", "11", "...
## $ B3                      <chr> "RO", "RO", "RO", "RO", "RO", "RO", "RO", "...
## $ B4                      <chr> "1 - Norte", "1 - Norte", "1 - Norte", "1 -...
## $ B5                      <chr> "4 - 20001 até 50000", "6 - 100001 até 5000...
## $ B6                      <chr> "25578", "104401", "6355", "87226", "17986"...
## $ Porte_pop2010           <chr> "Pequeno II", "Médio", "Pequeno I", "Médio"...
## $ Pop_Total2010           <chr> "24392", "90353", "6313", "78574", "17029",...
## $ IDHM                    <chr> "0.641", "0.702", "0.65", "0.718", "0.692",...
## $ Num_conselhos           <dbl> 7, 11, 5, 10, 6, 3, 3, 5, 6, 8, 6, 8, 4, 6,...
## $ Paridade                <dbl> 5, 11, 5, 9, 6, 3, 3, 5, 5, 7, 6, 8, 4, 6, ...
## $ Deliberativos           <dbl> 5, 11, 5, 9, 5, 2, 3, 5, 6, 4, 4, 8, 3, 5, ...
## $ Num_reunioes            <dbl> 37, 105, 30, 108, 42, 25, 37, 81, 52, 75, 5...
## $ Perfil_Conselho         <dbl> 17, 33, 15, 28, 17, 8, 9, 15, 17, 19, 16, 2...
## $ Indice_participativo    <dbl> 5.286, 9.545, 6.000, 10.800, 7.000, 8.333, ...
## $ Potencial_participativo <dbl> 89.862, 314.985, 90.000, 302.400, 119.000, ...
## $ IPP_Norm                <dbl> 0.107, 0.395, 0.107, 0.379, 0.144, 0.077, 0...
## $ IPP_Class               <chr> "muito baixo", "alto", "muito baixo", "alto...
Potencial$IPP_Class <- factor(Potencial$IPP_Class, levels = c("muito baixo", "baixo",  "médio", "alto", "muito alto"), ordered = T)

Potencial %>% 
  count(IPP_Class, sort = T)
## # A tibble: 5 x 2
##   IPP_Class       n
##   <ord>       <int>
## 1 muito baixo  1455
## 2 baixo        1416
## 3 médio        1317
## 4 alto         1295
## 5 muito alto     84

07. Tabela Final do IPPC

Ordenada pelo IPPC, do maior para o menor

Potencial <- Potencial %>% 
  mutate(B4 = str_remove(B4, "1 - |2 - |3 - |4 - |5 - ")) %>%
  mutate(B4 = as.factor(B4))

Potencial$Porte_pop2010 <- factor(Potencial$Porte_pop2010, levels = c("Pequeno I", "Pequeno II", "Médio", "Grande", "Metrópole"), ordered = T)

Potencial %>% 
  arrange(desc(IPP_Norm)) %>% 
  #select(1:104) %>% 
  datatable(extensions = 'FixedColumns',
            rownames = F,
            options = list(autoFill = TRUE,
                           fixedHeader = TRUE,
                           autowidth = TRUE,
                           paging = F,
                           scrollX = TRUE,
                           scrollY = "400px")) %>% 
  formatStyle(columns = colnames(.), fontSize = '50%')

08. Gráficos

Histogramas

grid.arrange(hist_1, hist_2, hist_3, 
             nrow = 1)

IDHM versus IPPC, com regiões

Para mais informações sobre a classificação do IDH-M, consultar o site Atlas-Brsail

Potencial$IDHM <- as.numeric(Potencial$IDHM)

Potencial <- Potencial %>% 
  mutate(IDHM_Class = case_when(
    IDHM <= 0.499 ~ "muito baixo",
    IDHM >= 0.500 & IDHM <= 0.599 ~ "baixo",
    IDHM >= 0.600 & IDHM <= 0.699 ~ "médio",
    IDHM >= 0.700 & IDHM <= 0.799 ~ "alto",
    IDHM >= 0.800 ~ "muito alto"))

Potencial$IDHM_Class <- factor(Potencial$IDHM_Class, levels = c("muito baixo", "baixo", "médio", "alto",  "muito alto" ), ordered = T)

ggplot(drop_na(Potencial),
  aes(x=IDHM, y=IPP_Norm))+
  geom_point(aes(color = B4)) +
  scale_color_paletteer_d(name = "Regiões: ", "ggsci::category10_d3")+
  xlab("IDH-M") + ylab("IPPC") +
  geom_smooth(se=F)+
  theme_classic()+
  guides(colour = guide_legend(override.aes = list(size=5)))+
  theme_hist

IDHM versus IPPC, sem regiões

ggplot(drop_na(Potencial), 
  aes(x=IDHM, y=IPP_Norm))+
  geom_point() +
  #scale_color_paletteer_d(name = "Regiões: ", "ggsci::category10_d3")+
  xlab("IDH-M") + ylab("IPPC") +
  geom_smooth(se=F)+
  theme_classic()+
  #guides(colour = guide_legend(override.aes = list(size=5)))+
  theme_hist

Anos de criação

index_ano <- str_which(Legenda_Munic$V4,"ano de criação")   
  
  ### Usar o índice para selecionar as linhas.
  ano_lista <- slice(Legenda_Munic,index_ano) 
  
    ## Usar a coluna V17 que possui os códigos da base de dados
  ano_codigo <- ano_lista$V17 #identificamos os códigos de cada conselho
  
  # Nome
  ano_codigo_nomes <- ano_lista %>% 
    select(V17) %>% 
    filter(!V17 %in% c("A605", "A608", "A616", "A725")) %>% 
    mutate(cod_nomes = Conselhos_codigo_nomes$cod,
           nomes = Conselhos_codigo_nomes$nome_abr)
  
  ##Selecionamos apenas as colunas correspondentes a "possui Conselho?"
  Munic_anos <- select(Munics_IPs, ano_codigo_nomes$V17)
  
  Munic_anos <- gather(Munic_anos, conselhos, anos)
  
  Munic_anos_88 <- Munic_anos %>% 
    mutate(anos = as.numeric(anos)) %>% 
    mutate(conselhos = factor(conselhos)) %>% 
    filter(anos > 1987) %>% 
    filter(anos < 2015)  %>% 
    arrange(anos) %>% 
    left_join(ano_codigo_nomes, by = c("conselhos" = "V17"))
  
##

anos <- ggplot(Munic_anos_88, 
               aes(x=anos, y=reorder(nomes, -anos, FUN = mean)))+
  geom_density_ridges(aes(fill=reorder(conselhos, -anos, FUN = mean)), show.legend = F, alpha = .7) +
  scale_fill_viridis_d(option = "B", direction = -1,
                           begin = .1, end = .9)+
  scale_x_continuous(limits = c(1988, 2018), 
                     breaks = c(1990, 1994, 1998, 2002, 2006, 2010, 2014))+
  #scale_y_discrete(labels = c())+
  geom_vline(xintercept = c(1990, 1994, 1998, 2002, 2006, 2010, 2014), linetype= "dotdash") +
  ylab("") + xlab("")+
  theme_classic()+
  theme(axis.text.x = element_text(size = 14, face = "bold"),
        axis.text.y = element_text(size = 14, face = "bold"))

anos

Sem cores

anos + 
  scale_fill_grey()

Alternativa

Munic_anos_88_alt <- Munic_anos_88 %>% 
  mutate(nomes = reorder(nomes, anos, FUN = mean))

councils_qt <- Munic_anos_88_alt %>% 
  count(nomes) %>% 
  arrange(desc(n)) %>% 
  mutate (councils_qt = paste0(nomes, " (", n, ")"))

Munic_anos_88_alt <- Munic_anos_88_alt %>% 
  full_join(councils_qt)

Munic_anos_88_alt <- Munic_anos_88_alt %>% 
    mutate(councils_qt = reorder(councils_qt, anos, FUN = mean))


ggplot(Munic_anos_88_alt, aes(x=anos))+
  geom_bar(aes(y = ..count../sum(..count..)))+
  geom_density(aes(y = ..density../5))+
  scale_x_continuous(limits = c(1988, 2018), 
                     breaks = c(1990, 1994, 1998, 2002, 2006, 2010, 2014))+
  geom_vline(xintercept = c(1990, 1994, 1998, 2002, 2006, 2010, 2014),
             linetype= "dotdash")+
  facet_wrap(~ councils_qt, nrow = 14, strip.position = "left")+
  scale_fill_viridis_d(option = "B",
                           begin = .1, end = .9)+
  labs(x = "", y = "")+
  theme_classic()+
  theme(
  axis.text.y =   element_blank(),
  axis.line.y.left = element_blank(),
  axis.ticks.y.left = element_blank(),  
  strip.text.y.left = element_text(angle = 0),
  strip.placement = "inside",
  strip.text.x = element_blank()
)

09. Tabelas

Tabela dos indicadores gerais

formattable(drop_na(tabela_indicadores),
              list(N_conselhos = normalize_bar(),
                   N_Paritários = normalize_bar(),
                   N_Deliberativos = normalize_bar(),
                   N_consultivos = normalize_bar(),
                   N_reuni= normalize_bar()))
nome_abr N_conselhos N_Paritários N_Deliberativos N_reuni
Assistência Social 5562 5515 5335 56620
Saúde 5556 5429 5006 62296
D. da Criança e do Ado… 5481 5378 4916 47179
Educação 4874 4496 4101 37248
Meio Ambiente 3785 3503 3238 16641
D. do Idoso 3450 3365 2939 20348
Segurança Alimentar 1629 1199 994 6206
D. da Pessoa com Defic… 1093 1042 907 6805
D. da Mulher 976 890 731 5034
Segurança Pública 691 561 436 3344
D. da Juventude 608 534 434 3098
D. Humanos 323 304 278 2461
Igualdade Racial 280 257 211 1771
D. de LGBTT 21 20 15 103

IPPC versus IDHM

sjPlot::sjt.xtab(Potencial$IPP_Class, 
                 Potencial$IDHM_Class,
                  var.labels = c("IPPC", "IDH-M"),
                 encoding = "UTF-8",
                 show.summary = F)
IPPC IDH-M Total
muito baixo baixo médio alto muito alto
muito baixo 18 455 626 351 1 1451
baixo 7 396 600 413 0 1416
médio 4 342 546 421 3 1316
alto 3 173 454 639 26 1295
muito alto 0 0 7 64 13 84
Total 32 1366 2233 1888 43 5562

IPPC versus Porte

sjPlot::sjt.xtab(Potencial$IPP_Class, 
                 Potencial$Porte_pop2010,
                var.labels = c("IPPC", "Porte municipal"),
                 encoding = "UTF-8",
                 show.summary = F)
IPPC Porte municipal Total
Pequeno I Pequeno II Médio Grande Metrópole
muito baixo 1308 134 13 0 0 1455
baixo 1190 199 26 1 0 1416
médio 948 300 58 11 0 1317
alto 471 404 216 198 6 1295
muito alto 0 6 12 56 10 84
Total 3917 1043 325 266 16 5567

IPPC versus região

sjPlot::sjt.xtab(Potencial$IPP_Class, 
                 Potencial$B4,
                 var.labels = c("IPPC", "Região"),
                 encoding = "latin1",
                 show.summary = F)
IPPC Região Total
Centro-Oeste Nordeste Norte Sudeste Sul
muito baixo 136 516 132 393 278 1455
baixo 111 471 97 412 325 1416
médio 98 452 105 360 302 1317
alto 113 340 109 466 267 1295
muito alto 8 13 7 37 19 84
Total 466 1792 450 1668 1191 5567

10. Mapa

mapa_mun <- read_municipality(simplified = T, showProgress = F)

mapa_states <- read_state(simplified = T, showProgress = F)

mapa_plot <-mapa_mun %>% 
 select(1, 5 ) %>% 
  mutate(code_muni = as.character(code_muni)) %>% 
  right_join(Potencial, by = c("code_muni" = "A1a"))  

color <- c("#AF1900FF", "#9467BDFF", "#E19600FF", "#1F77B4FF", "#001964FF") # see gist

ggplot(drop_na(mapa_plot))+
  geom_sf(aes(fill=IPP_Class), colour = alpha("white", .45), lty=3)+
  geom_sf(data=mapa_states, fill=NA, color = "black")+
  scale_fill_manual("IPPC", values = color)+
  #scale_fill_paletteer_d(name = "IPPC", "nord::victory_bonds")+
  theme_map_br

11. Correlação entre variáveis

matrix_cor <- Potencial %>% 
  select(IPP_Norm, IDHM, Num_conselhos:Potencial_participativo) %>% 
  drop_na()

corr <- round(cor(matrix_cor), 1)

corr  %>% 
  datatable(extensions = 'FixedColumns',
            rownames = F,
            options = list(autoFill = TRUE,
                           fixedHeader = TRUE,
                           autowidth = TRUE,
                           paging = F,
                           scrollX = TRUE,
                           scrollY = "400px"))
ggcorrplot(corr, hc.order = F, 
           type = "lower", 
           show.diag = T,
           pch = 12,
           pch.cex = 12,
           tl.cex = 12,
           lab = TRUE, 
           lab_size = 3, 
           method="circle", 
           colors = c("tomato2", "white", "springgreen3"), 
           title="Matrix de correlação", 
           ggtheme=theme_bw)