Conhecendo melhor os candidatos a deputado federal (2018)

library(tidyverse)
library(skimr)
library(here)
library(ggchicklet)
library(viridis)

theme_set(theme_bw())

# Region information
region <- function(uf) {
    sul <- c("PR", "RS", "SC")
    centro_oeste <- c("DF", "MT", "MS", "GO")
    sudeste <- c("SP", "RJ", "ES", "MG")
    norte <- c("AM", "RR", "AP", "PA", "TO", "RO", "AC")
    
    ifelse(
       uf %in% sul,
       "sul",
       ifelse(
           uf %in% centro_oeste,
           "centro-oeste",
           ifelse(
               uf %in% sudeste,
               "sudeste",
               ifelse(
                   uf %in% norte,
                   "norte",
                   "nordeste"
               )
           )
       )
   )
}

# Reading data
candidatos = read_csv(here("data/candidaturas-dep-federal-2018.csv"),
                          col_types = "ccdcciicd") %>%
                 mutate(regiao = region(uf))

# Removing scientific notation
options(scipen=999)

Autores:

  1. Wesley Matteus Araújo dos Santos
  2. Caio Fábio Juvino de Queiroz

Olá! Hoje iremos descobrir um pouco mais sobre os candidatos a deputados federais da eleição de 2018. Entendendo melhor seus perfis (idade, raça ou cor, patrimônios), como também descrevendo possíveis relações bem interessantes como a de receita arrecadada de campanha e quantidade de votos recebidos, além de descobrir ondem vivem os candidatos mais ricos.

E com esse fim em mente, usaremos dados abertos do TSE (Tribunal Supremo Eleitoral), acerca dos candidatos (2018). Os quais constituem as informações de 4943 candidatos, mais especificamente: idade, sexo, raça/cor, partido, receita e patrimônio declarado.


Qual é o perfil do candidato a deputado federal típico (idade, sexo, raça/cor e patrimônio) ?

Bem, nada melhor que começar entendendo um pouco mais sobre os candidatos, procurando ter uma melhor ideia de quem geralmente tenta se eleger ao cargo no país.

De início, iremos descrever as suas idades a partir de um gráfico de pontos que nos ajudará a visualizar a faixa de valores presentes, como também um histograma para entender o formato dessa distribuição.

candidatos %>%
    ggplot(aes(x = idade, y = "")) +
    geom_jitter(height = 0.1, alpha = 0.3, color = "cornflowerblue", size = 3) +
    geom_vline(aes(xintercept = mean(idade), color = "média"), linetype = "dashed", size = 0.8) +
    geom_vline(aes(xintercept = median(idade), color = "mediana"), linetype = "dashed", size = 0.8) +
    scale_color_manual(name = "Estatísticas", values = c("mediana" = "chocolate1", "média" = "brown")) +
    labs(
        x = "Idade (anos)",
        y = "Candidatos",
        title = "Faixa de idades dos candidatos"
    )

candidatos %>%
    ggplot(aes(x = idade)) +
    geom_histogram(binwidth = 2, color = "white", fill="cornflowerblue", alpha = 0.6) +
    geom_rug(color = "cornflowerblue", alpha = 0.3) +
    geom_vline(aes(xintercept = mean(idade), color = "média"), linetype = "dashed", size = 0.8) +
    geom_vline(aes(xintercept = median(idade), color = "mediana"), linetype = "dashed", size = 0.8) +
    scale_color_manual(name = "Estatísticas", values = c("mediana" = "chocolate1", "média" = "brown")) +
    annotate("label", x = 50, y = 330, label = "49,5 anos",
              hjust = -0.4, fill = "brown", color = "white") +
    annotate("label", x = 50, y = 330, label = "49 anos",
              hjust = 1.7, fill = "chocolate1", color = "white") +
    labs(
        x = "Idade (anos)",
        y = "Frequência",
        title = "Distribuição das idades dos candidatos"
    )

Como podemos ver, a idade mais frequente dos candidatos é cerca de 50 anos, zona mais concentrada no histograma. O que também é confirmado pela média e mediana gerais, as quais são bem próximas desse valor. Além disso, outra característica notável é que essa distribuição é bastante simétrica, isto é, idades a uma distância parecida da mediana tem frequências semelhantes.

Realizando uma análise mais fina também descobrimos que essa idade não varia muito entre homens (média: 50; mediana: 50) e mulheres (média: 48; mediana: 48). Já voltando nossa atenção ao extremo dessa faixa, temos vários candidatos seniors com mais de 80 anos, com um deles estando próximo dos seus 90 anos! Isso que é disposição.

Depois de analisada a idade, as próximas características que vamos olhar serão o sexo e a cor/raça dos candidatos. Será que veremos alguma tendência ? Provavelmente. Afinal de contas, estamos acostumados a ouvir falar sobre desigualdade social e falta de representatividade na câmara dos deputados, tanto em relação a sexo como raça/cor. Mas será que isso se reflete nos candidatos ?

Para responder essa pergunta, iremos analisar um gráfico de barras que nos mostrará justamente isso:

candidatos %>%
    group_by(cor_raca, sexo) %>%
    summarise(freq = n()) %>%
    ggplot(aes(x = reorder(cor_raca, freq), y = freq, fill = sexo)) +
    geom_bar(stat="identity", position=position_dodge()) +
    geom_text(aes(label=freq), vjust=0.5, hjust=-0.2, color="black",
            position = position_dodge(1), size=4)+
    coord_flip() +
    scale_fill_manual(values = c("FEMININO"="pink", "MASCULINO"="deepskyblue")) +
    scale_y_continuous(limits = c(0, 2600)) +
    labs(
        y = "Frequência",
        x = "Raça ou Cor por sexo",
        title = "Frequência das diferentes raças ou cores por sexo"
    )

Vemos com esse gráfico que homens brancos representam a grande maioria dos candidatos. Com as outras raças/cores juntas não somando nem dois terços dos candidatos brancos. E que, não importando a raça ou cor, temos de 2x a 3x menos candidatas mulheres em relação a homens (o que poderia ser alvo de outras análises).

Sendo esse um resultado interessante, já que dá indícios de falta de representatividade (que só poderia ser confirmada com uma análise dos candidatos elegidos), se considerarmos que em 2019 o IBGE reportou que existe uma proporção de pardos maior (46,8%) que de brancos (42,7%) no país. Como também reportou que há mais mulheres (51,8%) do que homens (48,2%).

E por fim, mas não sendo menos importante, veremos como está a distribuição de seus patrimônios. De antemão, podemos afirmar que há uma desigualdade gigantesca, a qual os próximos gráficos, de pontos e o histograma, tentarão nos mostrar. Entretanto, antes de observá-los, uma coisa a se prestar a atenção é que o eixo horizontal está em escala logarítmica de base 10, o que significa que a distância entre 10, 100, 1000, … é a mesma, e isso implica que pontos ou barras próximas podem representar valores bem distantes.

Tivemos de fazer isso, porque existem candidatos que ganham muito mais do que os outros e esse fato dificultaria bastante a visualização de dados.

candidatos %>%
    ggplot(aes(x = patrimonio, y = "")) +
    geom_jitter(height = 0.1, alpha = 0.5, color = "aquamarine4", size = 2) +
    scale_x_log10(labels = function(x) format(x, big.mark = ",")) +
    geom_vline(aes(xintercept = mean(patrimonio), color = "média"), linetype = "dashed", size = 0.8) +
    geom_vline(aes(xintercept = median(patrimonio), color = "mediana"), linetype = "dashed", size = 0.8)+
    scale_color_manual(name = "Estatísticas", values = c("mediana" = "chocolate1", "média" = "brown")) +
    labs(
        x = "Patrimônio (R$)",
        y = "Frequência",
        title = "Distribuição do patrimônio dos candidatos"
    )

candidatos %>%
    ggplot(aes(x = patrimonio)) +
    geom_histogram(color = "white", binwidth=0.15, fill = "aquamarine4", alpha = 0.6) +
    scale_x_log10(labels = function(x) format(x, big.mark = ",")) +
    geom_rug(color = "aquamarine4", alpha = 0.3) +
    geom_vline(aes(xintercept = mean(patrimonio), color = "média"), linetype = "dashed", size = 0.8) +
    geom_vline(aes(xintercept = median(patrimonio), color = "mediana"), linetype = "dashed", size = 0.8) +
    scale_color_manual(name = "Estatísticas", values = c("mediana" = "chocolate1", "média" = "brown")) +
    annotate("label", x = 3000000, y = 400, label = "R$1,762,917",
              hjust = -0.1, fill = "brown", color = "white") +
    annotate("label", x = 300000, y = 400, label = "R$274,374",
              hjust = 1.3, fill = "chocolate1", color = "white") +
    labs(
        x = "Patrimônio (R$)",
        y = "Frequência",
        title = "Distribuição do patrimônio dos candidatos"
    )

Essas visualizações nos mostram que há uma certa simetria nos dados, ou seja, em torno da mediana há aqueles que ganham muito e aqueles que ganham bem menos em proporções parecidas. Mas como podemos ver, a mediana é bem diferente da média. Isso acontece porque existem candidatos que ganham muito mais do que os outros, trazendo a média para cima, enquanto a mediana é mais fiel a quem realmente concentra a metade dos outros abaixo.

Já observando os extremos, vemos algumas pessoas sem nenhum patrimônio e outras bilionárias (duas delas, para ser exato). O que nos resulta em um desvio padrão de R$28,199,198 (um valor bem grande) que nos indica enorme variação dos patrimônios. Fazendo a análise por sexo, vemos que entre os homens a variação é ainda maior que a geral (R$32,430,180), enquanto entre as mulheres essa variação, apesar de ainda grande, é cerca de 20x menor que o dos homens (R$1,653,058).

Quanto a média e mediana, existe uma variação bem satisfatória entre os sexos, considerando apenas os homens, a mediana é de R$331,138 com média R$2,175,375. Enquanto as mulheres tem uma mediana de R$151,000 e média de R$491,822.

Com esses valores, concluímos que mais de 50% dos candidatos apresenta condições financeiras bem melhores que a média da população brasileira. Já que, por exemplo, em 2018 a PNAD (Pesquisa Nacional por Amostra de Domicílios) revelou que a renda domiciliar média do brasil é de apenas R$1373,00 (13 estados brasileiros possuindo renda domiciliar per capita menor que o salário mínimo nacional).

Resumindo: Os candidatos a deputado federal geralmente são homens, em sua maioria brancos, com rendimentos bem maiores que a média nacional. Enquanto as mulheres, não importando sua raça/cor tem participado de 2x a 3x menos que os homens. Por fim, a variação na distribuição de renda é extramamente grande (sendo cerca de 20x vezes maior entre os candidatos homens, do que entre as mulheres)

Qual a relação entre receita e quantidade de votos ? Ela existe ?

Agora analisaremos a relação entre o dinheiro arrecadado para campanha e o total de votos recebidos pelos deputados federais na eleição de 2018. E isso é relevante, já que existem candidatos que têm poucos recursos e mesmo assim se elegem e também candidatos com muitos recursos que não se elegem. Nesses casos, o dinheiro arrecadado não é um fator definitivo para o resultado. Sendo necessário portanto, determinar o impacto da receita no total de votos. A seguir é feita uma análise de correlação para verificar a interação entre receita e votos.

Obs: A votação do deputado federal Eduardo Bolsonaro foi omitida por representar
um grande outlier e não refletir os valores mais frequentes de votação.

candidatos = candidatos %>%
    filter(qtde_votos < max(qtde_votos))

candidatos %>%
  ggplot(aes(x = total_receita, y = qtde_votos)) +
  geom_point(size = 3,
             alpha = .3,
             color = "mediumpurple3") +
  labs(y = "Votos",
       x = "Receita",
       title = "Relação entre receita e votos")

Ao observar os pontos para votos e receita dos candidatos da forma que estão representados originalmente, percebemos que é difícil notar algum padrão na escala atual, pois a maioria dos valores são baixos e estão muito próximos uns dos outros. Para analisar de forma mais clara os dados é preciso transformar a escala atual (vertical e horizontal) em logarítmica e filtrar diversos valores de receita que foram declarados como 1 real, seja por erro ou por um comportamento padrão no registro da receita de parte do candidatos.

Esses valores baixos de receita estavam presentes para candidatos com as mais variadas quantidades de voto e não possibilitam a verificação de correlação entre as variáveis para esses casos.

candidatos = candidatos %>%
  filter(total_receita > 1) %>%
  mutate(log_receita = log10(total_receita), log_votos = log10(qtde_votos))

candidatos %>%
  ggplot(aes(x = total_receita, y = qtde_votos)) +
  geom_point(size = 3,
             alpha = .3,
             color = "mediumpurple3") +
  scale_x_log10(labels = function(x) format(x, big.mark = ",")) +
  scale_y_log10(labels = function(x) format(x, big.mark = ",")) +
  labs(y = "Votos",
       x = "Receita (R$)",
       title = "Relação entre receita e votos",
       subtitle = "Escalas logarítimicas de base 10")

Depois de aplicar as tranformações necessárias, podemos ver claramente que em grande parte dos valores, à medida em que a receita aumenta o número de votos também aumenta. Isso indica uma correlação linear positiva e forte (do logarítmo desses valores), que não se reverte ao longo da faixa de valores para as variáveis analisadas.

Existem alguns pontos que se afastam mais dessa tendência, mas não há variações muito extremas. Calculamos o coeficiente de correlação de Pearson para receita e votos e obtivemos o valor 0.69 que reforça as evidências de que há uma correlação forte entre essas variáveis.

Outra coisa que podemos fazer é estudar um pouco melhor como essa relação se comporta por partido. Será que há grande variação ? Ou se comportam de forma parecida ? Para responder isso usaremos um gráfico de barras que nos mostrará essas correlações.

#Coeficiente Pearson para receita e votos
candidatos %>% 
  summarise(corr_pearson = cor(log_receita, log_votos, method = "spearman")) %>%
  pull(corr_pearson)
## [1] 0.6776871
cors <- candidatos %>%
    filter(qtde_votos < quantile(qtde_votos, 0.99), total_receita > 1) %>%
    group_by(sigla_partido) %>%
    summarise(receita_votos = cor(total_receita, qtde_votos, method = "spearman"),
              patrimonio_votos = cor(patrimonio, qtde_votos, method = "spearman"))

cors %>%
    filter(sigla_partido != "PCO") %>%
    ggplot(aes(x = reorder(sigla_partido, receita_votos))) +
    geom_chicklet(aes(y = receita_votos, fill = receita_votos), width = 0.7) +
    coord_flip() +
    theme(plot.caption = element_text(hjust = 0)) +
    scale_y_continuous(breaks = seq(from = 0, to = 1, by = 0.2)) +
    scale_fill_gradient(low = "gray", high = "mediumpurple3") +
    labs(
        x = "Partidos",
        y = "Correlação",
        title = "Correlação entre receita e votos por partido*",
        fill = "Intensidade",
        caption = "* PCO foi omitido, por apresentar só uma deputada (sendo impossível calcular relações)"
    )

Ao calcularmos a correlação entre as variáveis receita e votos analisando estes dados em separado para cada partido, observamos que a correlação chega a ser muito forte para alguns partidos com valores de até 0.8 e que para mais da metade dos partidos a correlação é maior que 0.6. Isso reforça a hipótese de que a receita dos candidatos tem um forte impacto sobre o seu desempenho durante as eleições, tanto individualmente, quanto em conjunto com os outros candidatos do mesmo partidos na maioria dos casos.

Onde os mais ricos residem ?

Como já vimos anteriormente, temos no nosso conjunto de dados alguns canditatos sem patrimônio e outros com patrimônios exorbitantes, ou seja, apresentando uma grande variação. Nesta última parte, analisaremos a distribuição do patrimônio dos candidatos por unidade federativa e tentaremos indentificar onde os mais ricos residem.

De início, poderíamos pensar que para isso basta mostrar a média dos patrimônios, por unidade federativa, como a seguir:

freq_cand <- candidatos %>%
    group_by(uf) %>%
    summarise(freq = n(), med_patr = mean(patrimonio))

freq_cand %>%
  ggplot(aes(x = reorder(uf, med_patr))) +
  geom_chicklet(aes(y = med_patr, fill = med_patr)) +
  scale_fill_gradient(low = "gray", high = "aquamarine4") +
  scale_y_continuous(labels = function(x) format(x, big.mark = ",")) +
  coord_flip() +
    labs(
        x = "UF",
        y = "Média do Patrimônio (R$)",
        title = "Média do Patrimônio por UF"
    )

Mas no final das contas esse gráfico é bastante frágil, ou seja, uma pequena quantidade de candidatos com um patrimônio suficientemente grande pode acabar trazendo a média bastante a direita. Como é o caso de tocantins e SP, os quais possuem um bilionário cada como candidatos. A mediana também não seria o ideal, pois apenas iria mostrar naquele estado o patrimônio mediano, mas não diria nada em nível nacional.

Para se ter uma ideia melhor de onde eles realmente residem, vamos analisar tanto a frequência de candidatos em uma determinada UF que tem um patrimônio maior que a mediana nacional, como a proporção de candidatos por estado que obedecem a essa restrição e comparar suas diferenças.

candidatos %>%
    filter(patrimonio > median(patrimonio)) %>%
    group_by(uf) %>%
    summarise(freq = n()) %>%
    ggplot(aes(x = reorder(uf, freq), y = freq, fill = freq)) +
    scale_fill_gradient(low = "gray", high = "aquamarine4") +
    geom_chicklet() +
    coord_flip() +
    labs(
        x = "UF",
        y = "Frequência",
        title = "Frequência dos candidatos mais ricos (patrimônios maiores que a mediana)"
    )

candidatos %>%
    group_by(uf) %>%
    summarise(freq_total = n(), patrimonio, .groups = "drop") %>%
    filter(patrimonio > median(patrimonio)) %>%
    group_by(uf) %>%
    summarise(freq = n(), freq_total) %>% 
    distinct() %>%
    mutate(prop = freq / freq_total) %>%
    ggplot(aes(x = reorder(uf, prop), y = prop)) +
    geom_chicklet(aes(fill = prop)) +
    scale_fill_gradient(low = "gray", high = "aquamarine4") +
    coord_flip()+
    labs(
        x = "UF",
        y = "Proporção de Candidatos",
        title = "Proporção de candidatos mais ricos por UF"
    )

Com esses gráficos em mãos, podemos concluir que SP, MG e RJ concentram a grande maior parte dos candidatos mais ricos (patrimônios acima da mediana nacional). E, de certa forma, estaríamos corretos. Mas como diferentes estados tem quantidades diferentes de candidatos, isso poderia estar escondendo estados menores onde, por exemplo, a grande maioria deles tem grande poder aquisitivo.

Por isso, o segundo gráfico é útil, com ele podemos ver, que apesar de Tocantins, Alagoas e o Distrito federal não terem a maior quantidade de candidatos que obedecem a nossa restrição, eles sim representam a maior quantidade proporcional. O que é algo ainda mais interessante de se notar. Quase 7 em cada 10 candidatos em Tocantins tem patrimônios acima da mediana em todo território nacional, enquanto que o rio de janeiro apresenta menos de 5!

Finalmente, notamos que tratanto de forma proporcional as diferenças entre os estados se tornam menores, ou seja, analisar a frequência apenas poderia ter nos cegado para tendências mais interessantes.

E por hoje é só pessoal, até a próxima!