Análise automatizada da semelhança entre os partidos políticos

Português, Brasil
Autor: Leonardo Leite
 
O principal trabalho dos deputados é propor, votar e aprovar leis. Embora normalmente espera-se que um eleitor escolha seu voto com base em sua afinidade ideológica com o partido, são as votações efetuadas pelos parlamentares que realmente afetarão a vida do eleitor. Mas não necessariamente as votações ocorrem de acordo com as ideologias pregadas pelos partidos. Geralmente as votações acabam sendo determinadas muito mais em função das alianças efetuadas entre os partidos políticos. Desta forma, é importante para o eleitor acompanhar como efetivamente seu partido está votando.
 
Este post apresenta uma análise do quanto os partidos se assemelham uns aos outros, baseado no quão parecido os deputados votam na câmara.
 
Esta análise constitui os primeiros resultados do projeto ‘camaraws’, cujo objetivo é realizar análises automatizadas dos dados abertos oferecidos pela câmara dos deputados. O código-fonte do projeto está disponível como software livre [1].
 
Na análise realizada, houve a presença de resultados esperados, em que partidos da base aliada ao governo são semelhantes. Mas também encontramos resultados inusitados, em que partidos ideologicamente opostos se apresentam mais semelhantes do que se esperava.
 

DADOS ABERTOS

De acordo com a W3C, dados abertos governamentais [2] são a publicação e disseminação de informações do setor público na Web, compartilhadas em formato bruto e aberto, de modo a permitir sua reutilização em aplicações digitais desenvolvidas pela sociedade. Uma vez que os dados abertos estão publicados, e podem ser processados por aplicações desenvolvidas por qualquer interessado, proporciona-se a criação de múltiplos pontos de vista sobre aqueles dados publicados de forma bruta.
 
Com base nesses princípios a câmara liberou um conjunto de dados abertos acessíveis por web services [3] (web service é uma tecnologia para comunicação automatizada entre sistemas heterogêneos). Esses dados incluem os resultados das votações realizadas na câmara, sendo descrito o voto de cada parlamentar na votação.
 
Tomemos o exemplo da alteração do código florestal [4]. Os dados sobre a votação que aprovou as alterações do código na câmara são acessíveis em http://www.camara.gov.br/sitcamaraws/Proposicoes.asmx/ObterVotacaoProposicao?tipo=pl&numero=1876&ano=1999. Neste link estão os dados brutos, detalhados por deputado. Mas, por se tratarem de dados abertos, fica fácil realizar o processamento por software desses dados, de forma a ter novas visões sobre o fato. Exemplos são a agregação dos votos por partido (clique aqui) ou por estado (clique aqui). Essas agregações foram realizadas por scripts do projeto camaraws. Deixamos aqui a cargo do leitor a interpretação dessas agregações.
 

RESULTADOS

Analisando 92 votações de 27 proposições parlamentares, ocorridas no ano de 2011, chegamos aos seguintes índices de semelhança entre os partidos políticos:
 
Semelhança entre PT e PSDB = 24.56%
Semelhança entre PT e PV = 81.08%
Semelhança entre PT e PSOL = 18.65%
Semelhança entre PT e PCdoB = 97.39%
Semelhança entre PT e PP = 96.14%
Semelhança entre PT e PR = 93.52%
Semelhança entre PT e DEM = 39.10%
Semelhança entre PT e PMDB = 96.60%
Semelhança entre PSDB e PV = 47.18%
Semelhança entre PSDB e PSOL = 65.76%
Semelhança entre PSDB e PCdoB = 29.13%
Semelhança entre PSDB e PP = 32.65%
Semelhança entre PSDB e PR = 35.52%
Semelhança entre PSDB e DEM = 90.62%
Semelhança entre PSDB e PMDB = 34.10%
Semelhança entre PV e PSOL = 39.58%
Semelhança entre PV e PCdoB = 79.62%
Semelhança entre PV e PP = 80.90%
Semelhança entre PV e PR = 81.16%
Semelhança entre PV e DEM = 58.56%
Semelhança entre PV e PMDB = 81.38%
Semelhança entre PSOL e PCdoB = 18.80%
Semelhança entre PSOL e PP = 20.77%
Semelhança entre PSOL e PR = 25.47%
Semelhança entre PSOL e DEM = 61.07%
Semelhança entre PSOL e PMDB = 21.33%
Semelhança entre PCdoB e PP = 97.53%
Semelhança entre PCdoB e PR = 94.34%
Semelhança entre PCdoB e DEM = 43.80%
Semelhança entre PCdoB e PMDB = 98.52%
Semelhança entre PP e PR = 94.91%
Semelhança entre PP e DEM = 47.70%
Semelhança entre PP e PMDB = 98.76%
Semelhança entre PR e DEM = 47.65%
Semelhança entre PR e PMDB = 95.90%
Semelhança entre DEM e PMDB = 48.87%
 
 
As proposições analisadas são de cinco tipos: emenda constitucional (PEC), projeto de lei (PL), projeto de lei complementar (PLP), medida provisória (MPV), e decreto legislativo (PDC). Talvez fosse interessante acrescentar outros tipos, mas talvez fosse mais interessante reduzir esta lista, retirando o PDC.
 
Listei aqui os partidos que julguei mais interessante para não deixar a lista muito extensa. Mas a semelhança entre quaisqueres dois partidos pode ser determinada com o script semelhanca.py [5] do projeto camaraws. Obviamente, a semelhança não se aplica para partidos sem deputados federais.
 

ANÁLISE DOS RESULTADOS

Dentre os resultados esperados, que servem inclusive para conferir a eficácia do método, está a alta semelhança entre os partidos que formam a base aliada ao governo (PT). Exemplo é a semelhança de 97% entre PT e PCdoB. Mesmo partidos que a priori são de ideologia diversa ao do partido do governo, quando estão na base governista apresentam uma alta semelhança, como o PR (94% de semelhança com o PT) e o PP (96% de semelhança com o PT). A maior semelhança obtida está na base governista, entre o PP e o PMDB (99%).
 
Uma semelhança a se destacar, para servir de base de comparação, é a semelhança entre PT (partido do governo) e PSDB (maior partido de oposição), que é de 25%.
 
A menor semelhança obtida foi entre o PT e o PSOL (19%). Contudo, podemos observar semelhanças inicialmente inusitadas entre o PSOL e seus partidos ideologicamente antagônicos. A semelhança entre o PSOL e o PSDB é de 66%, enquanto que entre PSOL e DEM é de 61%. Esses números se explicam provavelmente pelo fato de ambos serem partidos de oposição, e assim tendem a votar contra o governo. De qualquer forma, segundo a análise feita, a faixa de 60% ainda não caracteriza partidos aliados, que fica na faixa de 90% (outro exemplo: a semelhança entre PSDB e DEM é de 91%).
 

MAS... COMO ESSES RESULTADOS FORAM OBTIDOS?

Já mostramos os dados brutos da votação da alteração do código florestal. A análise de semelhança entre os partidos foi feita com base em tantas outras votações na câmara em 2011. 
 
Embora seja fácil recuperar os dados sobre a votação a partir da identificação da proposição, o primeiro desafio foi identificar quais são as proposições que foram votadas em um determinado período. Não consegui resolver este problema de forma automatizada, então usei o serviço de contato do site da câmara para pedir a lista de proposições votadas em 2011 [6]. É justo ressaltar aqui que o serviço de comunicação da casa foi muito prestativo e rápido ao atender minha solicitação.
 
No entanto, não são todas as proposições desta lista que apresentam os dados de votações como os que encontrei para o exemplo do código florestal. Das 693 proposições apresentadas nesta lista, obtive os detalhes das votações para apenas 27 delas. Isso pode se dever ao fato de que nem todos os dados estão liberados, mas também pode ser porque há certos tipos de votações em que os deputados não votam individualmente (se ninguém é contra, então a proposição é aprovada), ou há ainda alguns casos em que a votação é secreta [7].
 
Uma vez obtida esta lista, eu apliquei um pouco de álgebra vetorial para determinar a semelhança [8]. Para cada partido eu formo um “vetor de votações”, cuja cada posição representa uma votação e seu valor representa o “voto médio” do partido para aquela proposição. Quanto mais próximos de 1, mais deputados votaram SIM, e quanto mais próximo 0, mais deputados votaram NÃO. Se metade dos deputados do partido votou SIM e a outra metade votou NÃO, a posição valerá 0,5, valor que também pode representar que todos os deputados se abstiveram, ou seja, o valor de 0,5 representa a indefinição de opinião do partido sobre a proposição. Caso o partido tenha obstruído a votação, os votos de seus deputados será equivalente ao NÃO. Uma vez que cada partido tem seu “vetor de votações”, a semelhança entre eles é determinada pelo módulo da projeção de um vetor sobre outro, de forma que vetores quase paralelos (votações parecidas) correspondam a uma semelhança de quase 1, enquanto que vetores quase ortogonais (votações diferentes) correspondam a uma semelhança de 0 (zero). Para que o tamanho das bancadas não afete o cálculo, a projeção é calculada com os vetores normalizados.
 
Ou seja, a ideia é que quanto mais votos iguais, mais os partidos são semelhantes, enquanto que a semelhança é menor entre SIM e NÃO do que é entre SIM e ABSTENÇÂO.
 

PRÓXIMOS PASSOS

  • Investigar como obter a lista de proposições válidas para a análise de forma automatizada.
  • Efetuar a análise para outros períodos, podendo fazer uma comparação ao longo dos anos (especialmente útil para observar os partidos “oportunistas” que estão sempre ao lado do governo, seja ele qual for).
  • Identificar as proposições em que partidos muito semelhantes discordam ou em que partidos de baixa semelhança concordam.
  • Representar a semelhança de forma gráfica, com vários partidos de uma vez. Eu tinha pensado em um gráfico em que pontos representassem partidos e que a distância entre os pontos fosse inversamente proporcional à semelhança dos partidos. Mas pensando só dessa forma deve ser ser difícil manter as restrições para as semelhanças mútuas entre vários partidos. Outra opção mais relaxada seria a distância de vários partidos tomando apenas um partido como referência (que estaria no centro do gráfico).
  • Identificar quais são os partidos mais e os menos coesos, ou seja, em quais os votos de seus deputados variam muito.
 
Outro pontos podem se juntar a esta agenda. Todos são bem vindos a colaborar com ideias do que pode ser feito, assim como a implementar as análises!
 

CONCLUSÕES

Pelas análise realizada notou-se que partidos aliados realmente são compromissados com as votações; ou seja, o voto parece ser realmente mais partidário do que individual, embora valham mais as alianças do partido do que suas supostas ideologias.
 
Aplicações desenvolvidas pela sociedade civil que mostrem o potencial da utilização de dados públicos, como no projeto camaraws, serão também importantes para incentivarem os órgãos públicos a liberarem outros conjuntos de dados abertos.
 

LINKS E REFERÊNCIAS

[4] Ivan Valente. Código florestal, os riscos para o meio ambiente e biodiversidade brasileira: http://www.ivanvalente.com.br/wp-content/uploads/2011/05/A5-Codigo-flore...
[5] Script para determinar a semelhança entre dois partidos: https://github.com/leonardofl/radar_parlamentar/blob/master/semelhanca.py
[6] Lista de proposições votadas em 2011, fornecida pela câmara: http://cloud.github.com/downloads/leonardofl/radar_parlamentar/proposico...
[7] Radar Político. Frente Parlamentar da Câmara defenderá fim do voto secreto: http://blogs.estadao.com.br/radar-politico/2011/09/19/frente-parlamentar...
[8] Mais detalhes sobre o cálculo da semelhança entre partidos: https://github.com/leonardofl/radar_parlamentar/blob/master/recursos/vet...
 
OBS: este não é um trabalho acadêmico.
 

9 comments

6
jan

O melhor trabalho de avaliação do cenário político que eu já vi. Simplesmente por ser científico. Uma coisa que ficou na minha cabeça foi "o inimigo do meu inimigo é meu amigo".Concordo com as proposições, é interessante saber qual é essa parte em que partidos ideologicamente dissonantes são "aliados".Para esclarecer isso seria interessante cruzar os assuntos dos decretos a partir das suas ementas... mas sei que uma busca de palavras é um método complexo que também diminuiria o valor dos resultados.Uma coisa que já pensei é: se uma instituição "consultiva" avaliasse cada lei dessas dando um parecer sobre os seus efeitos em cada setor da sociedade (o que é praticamente quase impossível) poderíamos cruzar essa avaliação com o desempenho de cada partido.aOutro detalhe é que esse tipo de estudo reforça a necessidade de reduzirmos ou eliminarmos o voto secreto em outras instituições legislativas. Parabéns!

9
jan

Leonardo,Parabéns pelo trabalho. Muito bom.Vc poderia disponibilizar a lista das 27 proposições que foram utilizadas para fazer a análise. Acho importante olhar para o conteúdo dessas proposições para avaliar se todas elas são relevantes (no sentido de que traduzem uma questão polêmica).

10
jan

Muito obrigado pelos comentários Raul! Vindo de vc significa bastante =]

Olá Vinícius, as proposições utilizadas estão listadas em:

https://github.com/leonardofl/camaraws/blob/master/resultados/votadas.txt

Vc pode checar rapidamente as ementas usando o id das proposições nesta página:

http://www.camara.gov.br/sitcamaraws/Proposicoes.asmx?op=ObterProposicao...

* o id é o primeiro número de cada linha

4
fev

Interessante. Questionamentos e sugestões:

  • Por que abstenção vale 0.5 ao invés de um voto a menos no cálculo da média? Não que seja inadequado, tem sentido pensar assim, mas sei que eu já me abstive em votações apenas porque elas nada tinham a ver com o que eu representava, ou por não ter coletado informações o suficiente dos representados, e eu não pretendia que isso significasse algo como "apóio igualmente os dois lados". A rigor, eu prefiro ver "abstenção" (nulo) e "tanto faz" (branco) como coisas diferentes. Talvez manter duas contas em paralelo seja algo interessante. Já vi que mudaram a faixa no código para ir de -1 a 1 ao invés de 0 a 1, mas o efeito de distorção na média continua o mesmo. Melhor dizendo, usando o código que vi no partidos.py:

            vi = (1*voto.sim + 0*voto.abstencao -1*voto.nao) / (voto.sim + voto.nao + voto.abstencao)

    considera o voto em abstenção como branco. Se considerasse o voto como nulo, teríamos:

            vi = (1*voto.sim -1*voto.nao) / (voto.sim + voto.nao)

    faltou dizer que os dados são de alguma forma normalizados. Não entrei em detalhes no código para ver como são normalizados, mas imagino que o processo seja o de igualar a norma de cada vetor a 1.

  • Partidos com diferente número de votantes poderiam ser caracterizados com diferentes graus de confiança (significância). Isto me parece importante.
  • O cálculo da similaridade como projeção é algo bastante comum (lembro de ter usado isso em redes neurais), mas acho que há algumas considerações a serem feitas sobre o significado dessa medida. Por que o uso de ângulos (a projeção em vetores normalizados é a medida do cosseno do ângulo entre os vetores) seria mais eficaz que uma medida linear (e.g. metade do módulo da diferença entre os vetores normalizados)? Se não me engano tem uma passagem no livro do Haykin de redes neurais que faz uma comparação nessa direção.
  • Retirar o PDC eu não acho bom. Melhor inserir outras agregações do que substituir as que já existem.
  • Eu não diria "o voto parece ser realmente mais partidário do que individual" para esses dados, como consta nas conclusões. Para saber isso creio que seja necessária no mínimo uma medida da variância, interna aos votos do partido, a ser considerada amostral (o denominador desse caso torna a variância indeterminada no caso de partido com apenas um voto). Realmente acho que faltou uma ANOVA, ou pelo menos uma medida de significância dos estimadores.
  • Citou demais o PSOL. Não é problema ser enfático nos percentuais encontrados, entretanto há passagens que mereciam ser evitadas, como a colocação "[PSol] é um partido pequeno, tipicamente antissistema" presente na notícia da Gazeta do Povo. Para a notícia e a ferramenta serem laicas, tanto faz quem o que é o PSOL, assim como a ideologia do partido.
  • No texto do PoliGNU eu evitaria dizer que "a faixa de 60% ainda não caracteriza partidos aliados". Um número não é uma faixa (embora eu tenha entendido que o recado se refere à associação entre PSOL, PSDB e DEM), e dizer "não caracteriza" é problemático por o texto incluir uma caracterização um tanto quanto arbitrária do que é uma aliança (concordância a partir de 90%). Eu realmente acho que todos (100%) dos partidos são "aliados" de certa forma, mas isso é outro assunto. O que a faixa de 50% "mais um" a 100% diz é que na maioria das votações os partidos defenderam o mesmo voto, e mesmo que fosse 100%, isso não necessariamente significaria que há aliança entre os partidos (por mais que percentuais altos sejam convincentes). Creio que os 60% caracterizam uma concordância em cerca de metade das dimensões do espectro político, e uma discordância na outra metade, mas discordo que concordância implica em aliança.
4
fev

Olá Danilo,

em primeiro lugar, obrigado pelos comentários!
Em segundo lugar, uma dica para a próxima: quando for colocar vários pontos assim, deixe-os numerados, assim a discussão fica mais fácil ;-)

#1
Acho válido o argumento de a abstenção deveria ser algo diferente; mas não consegui pensar numa boa forma de modelar isso. Ainda estamos abertos a propostas.

#2
Acho que isso se enquadra no tópico da seção próximos passos que diz "Identificar quais são os partidos mais e os menos coesos, ou seja, em quais os votos de seus deputados variam muito". Embora acho que possa ser de alguma valia, não considerei isto prioritário (mas é uma visão minha mesmo).

#3
Ainda vamos ter que pensar sobre isso! Valeu a ideia!

#4
Depois de checar o teor do PDC, achei interessante não retirá-lo mesmo. Até que se apresentem argumentos ao contrário, acho razoável manter o atual conjunto de tipos de proposições.

#5
Novamente isto está relacionado com aquele tópico dos próximos passos. Embora te entenda, acho válida a opnião, pq se todos se todos os parlamentares votassem apenas por interesses pessoais, ou ainda regionais, os resultados poderiam ser bem diferentes. O resultado atual não prova, mas corrobora com a teoria de que a legenda tem um grande peso na decisão individual do parlamentar.

#6
Sobre o PSOL... acho que em qualquer análise de um conjunto, os casos extremos merecem ser destacados, e por isso acho que o PSOL acabou sendo destacado. Quanto a "[PSol] é um partido pequeno, tipicamente antissistema", não fui eu que escrevi ou falei isso, foi o jornal ;-)

#7
Na verdade concordo com essa sua observação. Teria sido melhor evitar essa atribuição qualitativa aos valores. Mas é que a ideia foi mais por engenharia reversa, do tipo "por meus conhecimentos, sei que tais e tais partidos são considerados alidaos, então parece que uma semelhança maior de 90% significa aliança".

31
mai

Caros,
Muito legal a iniciativa.
Não sei se vcs conhecem, mas temos um pacote em R chamado de W-Nominate, que estima os chamados 'pontos-ideias' dos deputados (supondo que eles tenham um ponto de saciedade em suas preferencias, esse programa estima a partir das votações).
A página do pacote é essa aqui.
Um exemplo de ilustração (o primeiro usado na Ciencia Política brasileira) é esse aqui e um paper meu e de dois colegas em que usamos está no capítulo " Faz diferença...", aqui.
Pode ser que ajude na classificação dos partidos.
De qualquer modo, parabéns pela ótima iniciativa.
Umberto
 

3
set

Adorei a pesquisa :) muito interessante! Parabéns!!

29
mar

Leonardo, hoje o momento é extremamente propício ao seu projeto. Onde podemos encontrar dados e resultados atualizados? Ajudaria muito nos posicionamentos futuros.

23
mai

O projeto pode ser encontrado atualizado em: http://radarparlamentar.polignu.org

Comentar