Prevendo a abstenção de eleitores nas Eleições Brasileiras — Parte 1

Obtendo os dados, explorando e construindo a V1 de nosso modelo!

Leonardo Kury
Data Hackers
7 min readJan 16, 2019

--

O voto no Brasil é obrigatório mas a cada eleição a quantidade de abstenção tem aumentado. Abstenção é quando um eleitor cadastrado deixa de comparecer à seção eleitoral no dia das eleições para registrar seu voto.

A Justiça Eleitoral tem que preparar-se para permitir o voto de todos os eleitores e a abstenção acaba causando desperdício de dinheiro público. Prever antecipadamente a abstenção de uma seção eleitoral pode ajudar no planejamento e organização das eleições e consequentemente na economia de recursos.

Com base nisso, desenvolvi esse trabalho para tentar prever a abstenção dos eleitores. Inicialmente utilizei os dados das Eleições de 2014 e 2016 e do perfil do eleitorado para prever a abstenção nas Eleições 2018. O objetivo é construir um modelo para prever a abstenção nas próximas eleições.

Conteúdo

Aquisição dos Dados

Os dados foram obtidos do Repositório de Dados Eleitorais mantido pelo Tribunal Superior Eleitoral. Foram utilizados apenas os dados do 1º turno das três últimas Eleições (2018, 2016 e 2014).

Os dados obtidos foram a quantidade de eleitores aptos e as abstenções de cada seção eleitoral e o perfil do eleitorado das seções. Os dados são disponibilizados por cada unidade federativa e também das seções localicadas no exterior. Os arquivos de todas as unidades da federação foram baixados e condensados em um arquivo único.

As seções são identificadas pela unidade da federação, município, zona e número da seção. Importante ressaltar que pode haver mudança no número da seção de uma eleição para a outra, logo não temos garantia de que se trata de uma mesma seção eleitoral.

Em relação ao perfil do eleitor, temos disponíveis as seguintes características: estado civil, sexo, faixa etária e grau de instrução. Como cada seção tem uma quantidade diferente de eleitores aptos, calculei o percentual de eleitores em cada uma das categorias, por exemplo, na seção X do município Y temos 55% homens e 45% mulheres. Alguns poucos registros possuem o valor como “NÃO INFORMADO”, esses valores foram desconsiderados para o cálculo dos percentuais. Os dados do perfil do eleitor foram referentes ao ano de 2018.

Além disso foi calculado o percentual de abstenções em 2018, 2016 e 2014. Ao final do processo obtivemos 453.925 registros com 45 variáveis.

Quantidade de registros presentes por variável

Pré-processamento

As variáveis que representam o percentual de faltas nos anos de 2016 e 2014 apresentaram valores nulos. Isso ocorreu nos registros onde não foi encontrada a mesma zona, seção e UF das Eleições 2018, possivelmente decorrente de rezoneamentos ou ajustes das seções. Os registros com valores nulos foram excluídos do dataset restando 340.710 registros.

Nos gráficos a seguir vamos analisar a distribuição da variável alvo (PERC_FALTAS_2018).

Histograma e boxplot da variável alvo antes da remoção dos outliers

Podemos ver no histograma que a variável apresenta uma distribuição assimétrica positiva. No boxplot podemos observar que os valores concentram-se por volta de 20% mas que temos muitos outliers acima do limite superior, chegando a mais de 90% de abstenção, e alguns poucos abaixo do limite inferior. É bem incomum seções eleitorais com um percentual tão grande de abstenção, a causa desse fenômeno teria que ser investigada pela Justiça Eleitoral.

Outliers são pontos que são considerados anomalias nos dados por estarem muito distantes do padrão. Esses registros podem gerar ruído no modelo. Decidi remover os outliers para que não afetem a análise. Utilizando o método do IQR foram removidos 3.195 registros, restando agora 337.515 (74% dos dados originais).

Histograma e boxplot da variável alvo após remoção dos outliers

Agora o histograma apresenta uma distribuição aparentemente normal e não temos mais outliers no boxplot. Após a limpeza, os percentuais de abstenção variam de 1,6% a 38,7% com média de 20% de abstenção e desvio padrão de 6,5.

Estatísticas da variável alvo após a remoção dos outliers

Além disso foram criadas variáveis dummies para cada um dos estados (e exterior) representados na variável SG_UF, resultando em 66 variáveis ao total em nosso dataset.

Exploração dos Dados

Verifiquei inicialmente a correlação entre todas as variáveis do dataset utilizando o coeficiente de correlação de Pearson.

Correlação das variáveis

As maiores correlações observadas já eram esperadas. O valor mais alto de correlação foi -0,77 entre Solteiros e Casados. Isso indica que nos locais onde temos muitos solteiros temos menos casados e vice-versa. Nas correlações positivas os maiores valores foram entre faixas etárias similares (0,75 entre 65 a 69 anos e 70 a 74 anos) e graus de instrução semelhantes (também 0,75 entre Superior Completo e Superior Incompleto).

Em relação à variável alvo (‘PERC_FALTAS_2018’), as variáveis mais correlacionadas foram os percentuais de abstenção em 2016 e 2014 com coeficiente de correlação igual a 0,60. Essas correlação também são esperadas visto que é natural que o percentual de abstenção seja similar entre eleições próximas, até que haja uma revisão do eleitorado.

Em seguida analisamos o grau de importância das variáveis utilizando o método da diminuição média da impureza do RandomForest.

Importância das variáveis do dataset ordenadas

As variáveis mais importantes foram o percentual de abstenção em 2014 e 2016. Alguns valores de faixa etária também aparecem entre as variáveis mais importantes. Dado que o voto é facultativo a partir dos 70 anos e também a dificuldade de locomoção dos idosos, é natural que aumente a abstenção das idades mais elevadas. O grau de instrução de ensino médio (completo e incompleto) também aparece entre os primeiros, apesar de não visualizar uma lógica para essas variáveis.

As variáveis que representam os estados preenchem as últimas posições. Aparentemente o estado de domicílio do eleitor não interfere na abstenção. Vamos verificar isso em um gráfico de caixas.

Verificação da variação do percentual de abstenção por UF

Podemos ver alguma variação entre os estados mas nada muito significativo. Possivelmente essa informação pode ser removida do modelo, diminuindo o número de colunas.

Vamos agora verificar os gráficos de dispersão entre a abstenção de 2018 e de 2016 e 2014, as duas variáveis mais correlacionadas com a variável alvo. Para evitar o overplotting e deixar os gráficos legíveis, foi utilizada uma amostra de 5% dos dados em cada um dos gráficos.

Os dois gráficos são bem parecidos e podemos ver uma relação linear clara entre os percentuais de abstenção de 2014, 2016 e 2018. Medindo o coeficiente r², obtivemos valores similares onde cada uma das variáveis explica aproximadamente 36% da variável alvo e as duas juntas 45%. Esse é um valor ainda baixo que pretendemos melhorar utilizando técnicas de aprendizado de máquina.

Métrica de Avaliação

Para avaliar os resultados, vou utilizar como métrica de avaliação o erro quadrado médio (Mean Squared Error — MSE). Essa é uma medida comum utilizada para avaliar problemas de regressão e tem a vantagem de ser fácil de interpretar.

Essa métrica calcula a média dos erros elevados ao quadrado. Como o erro é elevado ao quadrado, diferenças menores têm menos importância, enquanto diferenças maiores recebem um peso maior. Para facilitar a interpretação dessa medida, calculamos a raiz quadrada, dessa forma voltamos a mesma unidade de medida original da variável. Essa é chamada de Root Mean Squared Error — RMSE.

Benchmark

Sem utilizar um modelo de aprendizado de máquina, a solução mais imediata para tentar prever a abstenção para as Eleições 2018 seria repetir a mesma abstenção das eleições anteriores para cada seção eleitoral. Para testar essa solução, vamos utilizar as abstenções das eleições de 2016 e 2014 e medir os resultados obtidos.

Erro ao prever a abstenção das Eleições 2018 repetindo a abstenção das últimas eleições

Os resultados utilizando a abstenção das Eleições 2014 para prever a de 2018 foram melhores que os de 2016. Isso pode ter ocorrido por causa do tipo das eleições, 2014 e 2018 ocorreram eleições gerais enquanto 2016 foram eleições municipais.

A métrica RMSE mostra que temos um erro médio próximo de 6% apenas repetindo as abstenções de eleições anteriores. Esse é um valor bem alto, vamos tentar melhorá-lo treinando modelo de machine learning.

Modelo Inicial

Como modelo inicial para fazer as previsões, escolhi o Random Forest. Esse é um algoritmo supervisionado fácil de utilizar e que geralmente gera bons resultados mesmo utilizando a configuração padrão. Para coletar os dados foi realizada uma validação cruzada com 4 folds e calculada a média.

Resultados utilizando o modelo Random Forest

Mesmo sem otimizar o modelo, reduzimos o erro médio de 5,80% no melhor benchmark para 3,69%. Isso representa uma melhora de 36% no resultado, o que é bastante significativo e animador.

Com a otimização e utilização de modelos mais complexos esperamos chegar em resultado ainda melhores!

Próximos Passos

Esse foi apenas o primeiro passo nessa tarefa. Para os próximos passos pretendo escrever outros posts explorando a otimização do modelo, teste de outros modelos de regressão, seleção de características e utilização de deep learning. Acompanhe!

Sintam-se à vontade para sugerir, criticar e dar feedbacks nos comentários.

--

--