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.
#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.
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.