Discplina de Análise de Dados 1- Ciência da Computação UFCG - 2016.1

detalhes_emendas <- read.csv("dados/emendas_detalhes_parlamentar.csv")
emendas <- read.csv("dados/emendas_area_parlamentar.csv")

Para este relatório utilizamos os dados das emendas que nossos deputados realizaram. Para entender mais sobre o que é uma emenda, clique aqui. Ao analisar os dados fornecidos encontramos % de NAs nos nomes dos parlamentares, por isso fizemos uma limpeza nos dados para reduzir essa inconsistência. Para montar o dataset que queríamos aplicamos um left_join para adicionar o UF do estado correspondente a cada parlamentar, após essa junção encontramos um NA que foi removido. Após esses tratamentos ficamos com nosso dataset no formato que queríamos, uma coluna contendo os estados e as demais as emendas parlamentares que foram realizadas nesses estado, sumarizamos os valores de cada emenda para podermos agrupar os estados por emenda e simplificarmos o agrupamento.

emendas.por.estado <- detalhes_emendas %>%
  select(NOME_PARLAMENTAR, UF_PROPONENTE) %>%
  filter(NOME_PARLAMENTAR != "NA")


emendas.por.estado2 <- emendas.por.estado[!duplicated(emendas.por.estado), ]

emendas.por.estado3 <- left_join(emendas, emendas.por.estado2, by = "NOME_PARLAMENTAR")

#removendo NAs
emendas.por.estado3 <- emendas.por.estado3 %>%
  filter(NOME_PARLAMENTAR != "NA")

#sumarizando estados por ementas
emendas.sumarizadas <- emendas.por.estado3 %>%
  select(-NOME_PARLAMENTAR) %>%
  group_by(UF_PROPONENTE)

emendas.sumarizadas <- summarise_each(emendas.sumarizadas[], funs(sum))

row.names(emendas.sumarizadas)  = emendas.sumarizadas$UF_PROPONENTE
## Warning: Setting row names on a tibble is deprecated.
head(emendas.sumarizadas)
## # A tibble: 6 x 18
##   UF_PROPONENTE Agricultura Assistência.Social Ciência.e.Tecnologia
##          <fctr>       <dbl>              <dbl>                <dbl>
## 1            AC     1930618            1855370              3187961
## 2            AL     2385343            1518094              3461555
## 3            AM     2183678            1599229              3057050
## 4            AP     2212087            1670439              2967049
## 5            BA     5027418            8795644              3532526
## 6            CE     2713012            2044439              4884940
## # ... with 14 more variables: Comércio.e.Serviços <dbl>, Cultura <dbl>,
## #   Defesa.Nacional <dbl>, Desporto.e.Lazer <dbl>,
## #   Direitos.da.Cidadania <dbl>, Gestão.Ambiental <dbl>, Indústria <dbl>,
## #   Organização.Agrária <dbl>, Outros <dbl>, Saneamento <dbl>,
## #   Saúde <dbl>, Segurança.Pública <dbl>, Trabalho <dbl>, Urbanismo <dbl>

Iniciando nosso trabalho vamos tentar observar a correlação existente entre cada emenda parmalentar e tentar entender um pouco sobre essas variáveis. Para ajustar os valores das emendas aplicamos a escala de log para o entendimento ficar melhor.

#correlacao entre as emendas
library(corrplot)
emendas.log <- log(emendas.sumarizadas[,2:18])
correlacao.emendas <- cor(emendas.log)
corrplot(correlacao.emendas, type="upper", order="hclust", tl.col="black", tl.srt=45)

Vemos que as emendas com maior correlação são:

As demais emendas pussuem uma correlação fraca ou próxima de zero.

Passemos a análise propriamente dita, vamos rodar o Hierarchical Clustering para ver os padrões que podem ser encontrados.

Hierárquico

#hierarchical

dists = dist(emendas.sumarizadas[,2:18], method = "euclidean")
hc = hclust(dists, method = "ward.D")

plot(hc, labels = emendas.sumarizadas$UF_PROPONENTE, hang = -1)

Analisando esse primeiro dendograma conseguimos observar que os estados podem ser agrupados em 5 grupos.

plot(hc, labels = emendas.sumarizadas$UF_PROPONENTE, hang = -1)
rect.hclust(hc, k=5)

Podemos observar os 5 grupos melhor definidos.

K-means

O K-means fornece uma alternativa baseada em simulação de agrupamento hierárquico. Ele identifica a maneira “melhor” para agrupar os dados em um número predefinido de clusters. Conseguimos um agrupamento melhor quando formamos 4 clusters.

#k-means

km <- kmeans(emendas.sumarizadas[,2:18], centers=4, nstart=10)
km
## K-means clustering with 4 clusters of sizes 1, 8, 17, 1
## 
## Cluster means:
##   Agricultura Assistência.Social Ciência.e.Tecnologia Comércio.e.Serviços
## 1    10101589            5008971              6417287             9581630
## 2    10686564            5375321              4012180             3557305
## 3     3332168            1884243              3341965             2453133
## 4     5317366            1663590              7275545             5300867
##    Cultura Defesa.Nacional Desporto.e.Lazer Direitos.da.Cidadania
## 1 11301980         7134640         23426507               3549286
## 2  3777599         5032450          7305298               2620607
## 3  2545750         6148171          1895913               2059305
## 4  5461249         4837038          5423114               1972683
##   Gestão.Ambiental Indústria Organização.Agrária  Outros Saneamento
## 1          3727590   3573163             2309324 4182353   84566494
## 2          3441720   3442634             3810358 4042332   31402835
## 3          3233621   3218367             1192274 2804601   13993631
## 4          6523430   6476839             1124267 3234021   30322613
##       Saúde Segurança.Pública  Trabalho Urbanismo
## 1  20918499           3549286 197144.45  88139657
## 2   5028367           2620607  83711.46  34774939
## 3   3698877           2059305  66428.15  17211998
## 4 144647076           1972683 190500.00  36799452
## 
## Clustering vector:
##  [1] 3 3 3 3 2 3 3 3 3 3 2 2 3 3 3 4 2 2 2 3 3 3 2 2 3 1 3
## 
## Within cluster sum of squares by cluster:
## [1] 0.000000e+00 1.399334e+15 9.147549e+14 0.000000e+00
##  (between_SS / total_SS =  93.3 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"    
## [5] "tot.withinss" "betweenss"    "size"         "iter"        
## [9] "ifault"
autoplot(km, data = emendas.sumarizadas[,2:18], frame = TRUE)

Como podemos ver, com o k-means, temos os clusters com tamanhos não tanto equilibrados equilibrados em termos de tamanho, mas a distribuição dos estados segue o mesmo padrão observado no hierárquico.