Monday, March 21, 2016

Dificuldades para acompanhar as eleições Brasileiras de 2016

Hoje o site PollingData começou a acompanhar as eleições Brasileiras de 2016. As dificuldades logísticas para conseguir consolidar todas as pesquisas publicadas na mídia brasileira são enormes. Muito maiores do que em 2014, ano que o site foi lançado, pois nesse ano ocorrem mais de 5500 eleições municipais. Ou seja, temos que acompanhar muito mais eleições do que as 28 eleições de 2014 (Presidente + 27 governadores). Nesse post vou contar como estávamos nos preparando para esse ciclo eleitoral, e como acabamos tendo nossa vida tremenda facilitada pelo Blog do Fernando Rodrigues (fomos salvos por ele, novamente!!!)

Como mencionado acima, a dificuldade logística de coletar os dados em 2016 é muito maior do que foi 2014. Já há alguns anos tenho uma ideia de como buscar essas pesquisas automaticamente na internet, porém ainda não havia tentado implementá-la. Esse ano senti que seria imprescindível fazer isso para manter o site atualizado.

O algoritmo básico é razoavelmente simples, e depende essencialmente do registro das pesquisas. Em ano de eleição toda pesquisa que for publicada na mídia têm que ser antes registrada no site do TSE, e além disso, na divulgação da pesquisa é obrigatório incluir no texto o número de identificação criado pelo TSE. Com essa combinação de fatores, tenho uma lista atualizada com todas as pesquisas que têm potencial de serem publicadas, e também tenho como buscá-las no Google usando o id do TSE.

Claro que existem muitos detalhes complicados nesse algoritmo, entre eles como determinar quais sites encontrados pelo Google de fato têm de fato o resultado da pesquisa desejada e como extrair o resultado da pesquisa do texto do site. Lembrando que essas etapas são complicadas ainda mais pela existência de simulações de segundo turno, pela existência de voto estimulado e voto espontâneo, e por existirem inicialmente muitos cenários com candidatos diferentes, visto que os candidatos que concorrerão as eleições só serão definidos em Agosto.

A primeira dificuldade real que encontrei foi o site do TSE. Ele foi desenvolvido de uma forma que torna extremamente difícil para um programa extrair as informações necessárias do site. Não vou entrar em detalhes aqui, porém existem sites que são feitos para facilitar o acesso de computadores ao seu conteúdo, e outros que são desenhados pensando apenas na interação com os humanos. O site do TSE foi desenvolvido apenas pensando nos humanos. E para conseguir extrair automaticamente suas informações, tive que utilizar um programa cuja finalidade original é testar sites, para ver se estão funcionando corretamente. Por causa do objetivo desse programa, ele têm vários efeitos colaterais negativos para automatizar a busca de informações em um site. Apesar disso, consegui criar um programa que entra no site do TSE, clica em todas as pesquisas e guarda os resultados.

Feito isso, o próximo passo foi criar um programa que entra no Google e faz uma busca avançada, procurando pelo número de registro da pesquisa e controlando alguns outros detalhes. Essa parte é relativamente fácil, o difícil é decidir quais sites são os mais relevantes e extrair a informação necessária de dentro do site. Para facilitar o desenvolvimento, fiquei trabalhando apenas em extrair as informações de um site em específico. Após conseguir extrair as informações desse site, resolvi testar o algoritmo de extração nos outros hits do Google.

Foi nessa hora que tive uma grande (e boa!) surpresa. Um dos primeiros resultados que encontrei era do Blog do Fernando Rodrigues. Foi ai que descobri que ele havia atualizado seu site para incluir pesquisas de 2016. Como nesse blog existiam diversas pesquisas consolidadas, resolvi parar de desenvolver o algoritmo de extração baseado no site do TSE, e comecei a desenvolver um novo programa para extrair especificamente as pesquisas do blog do Fernando Rodrigues. Após terminar o algoritmo de extração do TSE, darei mais detalhes sobre ele num post futuro.

Apesar de inicialmente parecer mais fácil ter um site com todas as pesquisas já consolidadas do que buscar cada uma individualmente na net, tive mais um grande obstáculo: extrair as informações automaticamente do Blog, pois as pesquisas de cada eleição estão localizadas numa tabela dentro de um arquivo em pdf. Após pesquisar bastante, encontrei um programa muito bom, chamado “tabula”. Consegui executar esse programa de dentro do R (que é o programa que uso para fazer o PollingData) e pronto – consegui de forma automática extrair os resultados das pesquisas!


Depois de todo esse trabalho, estava finalmente pronto para usar os dados da pesquisa e estimar os modelos de previsão do PollingData. E adivinhem?  Mais uma dificuldade, pois com poucas pesquisas e muitos cenários com diferentes candidatos, o modelo que eu tradicionalmente uso não conseguia rodar (missing data!!!). Mas para não cansar demais quem está lendo esse post, deixo pra contar sobre as dificuldades de modelagem em um outro post.

Finalizando, gostaria novamente de agradecer publicamente ao Fernando Rodrigues. Acho o trabalho que ele faz no seu blog espetacular,e além de tudo torna minha vida muito mais fácil! Sem falar que pelo site dele consigo pesquisas fora dos anos de eleição, como em 2015. Isso não seria possível com meu algoritmo pois ele depende do registro das pesquisas.

No comments:

Post a Comment