radar-parlamentar / radar

Estamos de mudança para o GitLab: https://gitlab.com/radar-parlamentar/radar.
http://radarparlamentar.polignu.org
84 stars 44 forks source link

Votações polêmicas #58

Open leonardofl opened 11 years ago

leonardofl commented 11 years ago

Desenvolver um algoritmo que detecte as votações mais polêmicas.

Este será o 1o passo rumo ao "minha semelhança com os partidos".

Vai ficar bem fácil de testar quando eu terminar o issue #52.

Sugestão: pra cada votação remover a votação do conjunto de votações e ver qual a votação que mais alterou o gráfico. Pra checar o quanto o gráfico se alterou, imagino que algo possa ser aproveitado do algoritmo de rotação.

Sugestão de implementação: criar uma nova classe no módulo analises (o nome pode ser algo como DetectorPolemicas).

saulotrento commented 11 years ago

A PCA já faz isso sozinha. Nos primórdios, quando eu fiz a classe Analise antiga, ela estava preparada para retornar as votações mais polêmicas em ordem. Era questão de entender uns conceitos e fazer umas cinco linhas de programação! Bastará resgatar isso =)

leonardofl commented 11 years ago

Então resgate e crie uma classe / um método bonito para isso! =D

leonardofl commented 11 years ago

E explica pra gente como q isso funciona ^^

leonardofl commented 11 years ago

Funcionalidade relacionada: Descobrir minha semelhança com os partidos.

saulotrento commented 11 years ago

Uma informação parecida já está no json, porém não desta forma que você falou ("lista das dez mais em ordem").

Acabo de fazer um commit com um arquivo de texto que explica a estrutura do JSON. Eu achei que já tinha adicionado esse arquivo antes, me desculpem. Já tinha enviado na lista de email em todo caso.

Acontece o seguinte: procure no json um vetor chamado "cp1". Ele descreve o que compõe a primeira componente principal. Existe o "cp2" também. Este vetor possui vários números, e a soma é 100 (a menos de erros de arredondamento). Cada posição se refere a uma votação, na mesma ordem que elas aparecem no vetor "votacoes", também presente no json. Existirá um "cp1" e um "votacoes" diferente para cada período. O significado do valor é a porcentagem de contribuição desta votação para o primeiro eixo (que no nosso gráfico atual pode estar rotacionado).

Então os valores maiores são as votações mais polêmicas? Não exatamente. Porém o conjunto das votações com os maiores valores forma como um todo o conjunto de votações que, vistas em conjunto, explicam a maior parcela da variância (ou seja, formam o conjunto mais "polêmico" em um certo sentido).

Imagine que hajam 10 votações, das quais 8 estão muito correlacionadas apesar de serem apenas moderadamente polêmicas, uma criou uma divisão 50-50 da casa, que é a situação mais "polêmica" possível, sendo que não houve correlação nenhuma com as oito questões anteriores, ou seja, saber o que alguém votou nesta polêmica não diz nada sobre como deve ter votado nas oito anteriores; e por fim a última votação foi quase unânime. Nesta situação as 8 votações irão compor a primeira componente principal, a porcentagem de cada uma vai ser mais ou menos 100/8 = 12,5%. A segunda componente irá explicar o comportamento na votação polêmica (que será quase 100% da composição da cp2). As demais 8 componentes irão explicar as demais nuances e conterão pouca informação.

Portanto ainda falta fazermos um método para retornar as votações individualmente mais polêmicas (basta ordená-las em ordem decrescente da variância), mas é importante saber que talvez essa não seja a informação mais interessante que os dados podem fornecer. No exemplo anterior pode (ou não) ser que as oito votações tomadas em conjunto tenham interesse maior que aquela uma votação que dividiu a casa.

leonardofl commented 11 years ago

Acho que é uma boa hora para pedir a opinião dos amigos cientistas políticos : )

leonardofl commented 11 years ago

Obs importante: qual é o propósito maior de se ter essa lista? É na verdade de priorizar essas votações pra serem respondidas pelo usuário, a fim de a gente calcular a posição de um indivíduo qualquer em meio ao gráfico da Radar. Considerando que ninguém vai ter tempo de responder todas as votações, é interessante saber quais votações são mais importantes de serem respondidas pelo usuário.

rceneviva commented 11 years ago

Em princípio basta calcularmos os resíduos das votações em relação ao "ponto ideal" (ou primeira componente) estimado para os deputados e listar em ordem decrescente. O resíduo (ou termo de erro aleatório) das votações é justamente a medida da distância entre os pontos estimados dos deputados (ou partidos) e uma votação específica. Assim, quanto maior o resíduo de uma votação específica, maior a distância entre os valores observados dos deputados (isto é, como eles de fato votaram) e os valores esperados (como seria esperado que eles votassem com base nos demais votos analisados).

Contudo, é importante termos em mente que maior resíduo, não significa na prática que aquela foi uma votação polêmica. Mas, simplesmente, que aquela votação é que está "mais distante" do "padrão de votação" de um determinado deputado.

Uma votação "polêmica" é um atributo ad hoc, ou exógeno às votações e que, portanto, só pode ser atribuído por meio da interpretação do pesquisador/analista.

leonardofl commented 11 years ago

Bom, parte dessa discussão então vai ser achar um novo adjetivo para evitar o "polêmico", que já está se tornando polêmico, haha. Mas seja qual for o adjetivo, acho importante ter um método automático para encontrar essas votações a serem priorizadas.

aviggiano commented 11 years ago

Votaçoes acirradas ;)

2013/8/27 Leonardo Leite notifications@github.com

Bom, parte dessa discussão então vai ser achar um novo adjetivo para evitar o "polêmico", que já está se tornando polêmico, haha. Mas seja qual for o adjetivo, acho importante ter um método automático para encontrar essas votações a serem priorizadas.

— Reply to this email directly or view it on GitHubhttps://github.com/leonardofl/radar_parlamentar/issues/58#issuecomment-23354561 .

leonardofl commented 11 years ago

Parece interessante...

saulotrento commented 11 years ago

Realmente depende do que se quer dizer com "polêmica", pois o que o Ricardo sugeriu é muito interessante porém em um certo sentido é o oposto do que eu falei. Eu estou considerando que a "polemicidade" (!?) é uma medida de como a votação dividiu a casa: votações unânimes não são nada polêmicas, e uma votação 60-40 é mais polêmica do que uma votação 80-20. Como disse o Ricardo, essa é uma definição ad hoc a princípio tão boa quanto qualquer outra, mas tem a vantagem de ser objetiva, simples a definir, fácil de interpretar e eu acho que também é útil para o propósito que o Leo falou de inferir o "ponto ideal" de um cidadão que responda apenas a umas poucas perguntas selecionadas.

Voltando ao exemplo que eu dei no comentário anterior, com 10 votações sendo 8 bastante correlacionadas e medianamente polêmicas, 1 muito polêmica praticamente ortogonal às anteriores, e 1 quase unânime também ~ortogonal às anteriores. Eu havia dito que em linhas gerais as 8 irão formar a CP1 e a polêmica a CP2. Qual a melhor amostra das 10 votações a expor a um cidadão se queremos inferir seu ponto ideal? Supondo que os parlamentares seriam uma amostra aleatória de todos os cidadãos (percebo agora que é uma premissa um tanto forte, ainda que romântica...) o cidadão é quase certo de escolher o que os deputados já escolheram na quase unânime, então não vamos perder tempo mostrando esta para o cidadão e vamos direto à conclusão de que ele estaria com a maioria. Se mostrarmos a muito polêmica já teremos uma boa idéia de sua posição no segundo eixo, então vamos mostrar essa. A primeira CP é constituída basicamente de 8 votações, mas elas estão correlacionadas, então se estamos querendo economizar (tipicamente não são 10 e sim uma centena de votações) vamos mostrar apenas uma ou duas, e a partir das respostas inferimos a resposta provável às demais. Assim temos uma estimativa da posição no primeiro eixo. A estimativa do ponto no plano saiu à custa de apenas duas ou três perguntas. Pode-se até plotar intervalos de confiança. Quanto mais perguntas respondidas menor este intervalo.

Pela definição do Ricardo, ao ir atrás dos resíduos no caso específico da pca estamos indo atrás do comportamento não explicado pela CP1 e CP2, ou seja, são as CP3 a 10. Serão os pequenos desvios do comportamento macro. Nesta outra definição de "polêmica", a votação polêmica é aquela onde os votos diferiram mais do que era de se esperar baseado no comportamento observado em outras votações. No exemplo que eu dei, a mais polêmica poderia acabar sendo então uma das 8 primeiras votações, aquela dentre elas que estiver menos correlacionada com as demais.

diraol commented 11 years ago

Pessoal, muito boa a discussão! =)

Com relação às terminologias, eu acho que o que estamos procurando na verdade são as votações mais relevantes, ou, tentando inventar um pouco mais, votações definidoras.

Pensando um pouco nesta última mensagem do @saulotrento , acho que seria interessante mostrarmos graficamente não só "o ponto" no qual a pessoa estaria, mas sim a área na qual a pessoa poderia estar colocando um "centro" de mais provável, sendo que essa área seria de alguma forma proporcional ao intervalo de confiança medido (dependente da quantidade de votações respondidas).

davi-moreira commented 11 years ago

Concordo muito que devem encontrar uma solução automatizada para definir o que desejam. No entanto, o primeiro passo seria definir exatamente o que desejam. Não consegui entender direito qual o objetivo desta issue. Pelo que entendi, desejam fazer algo como o extrato parlamentar (abaixo). Certo?

http://www.votoaberto.com.br/extratoparlamentar/site/consulta/opiniao/SP

Pelo que sei deste site, as votações são escolhidas por analistas e não de forma automatizada.

Ou pretendem apenas 'plotar' o usuário junto com os partidos?

leonardofl commented 11 years ago

A ideia é simplesmente plotar o usuário junto com os partidos. Mas pra isso ele precisa responder às votações. Mas ele não vai responder todas as votações. Então temos que saber quais priorizar. E não vamos ter analistas observando as votações todos os dias para saber quais são as mais "definidoras" dos últimos tempos.

leonardofl commented 11 years ago

PS: se a gente estivesse priorizando essa funcionalidade como um todo (se plotar no gráfico), a primeira versão poderia ter votações escolhidas por analistas (Ricardo e Davi : P). Mas pela outra issue, o Saulo tinha dado a entender que achar essas votações era algo fácil, então achei que poderia valer a pena começar por aqui...

davi-moreira commented 11 years ago

Entendi. Como a proposta do @saulotrento parece ser de baixo custo para o projeto, acho que ela deve ser implementada num primeiro momento.

Acho que a proposta do @saulotrento é justamente o que o @aviggiano chamou de votações acirradas, pois dividem a Casa Legislativa. Particularmente, eu chamaria de votações polêmicas aquelas que estavam presentes na opinião pública (jornais, revistas, bares, cafés, hakatons...) e não as acirradas. :)

Alguns cuidados devem ser tomados: i) ao expor para o usuário o que foi votado, é preciso criar um texto amigável e, se possível, indicar o texto literal que estava em pauta. ii) como o tipo do pl define o tipo de votação, é preciso definir o q será o 'acirramento': 50-50, dependendo do tipo de pl ou dependendo da diferença entre sim /não.

Acho também que outras possibilidades podem existir (mais trabalho!rss). Pq não perguntar ao usuário o que é polêmico? Eu, cidadão, não tenho a mínima noção se o produto 192.153.42.O da tabela TIPI deve receber ou não isenção tributária, mesmo se sua votação 'rachou' a Casa.... Logo, prefiro saber meu posicionamento em relação aos partidos no caso de coisas que conheço... Sei lá... Não sei se deve funcionar muito bem, mas eu ia gostar de saber o que as pessoas consideram como polêmico!rss

Aliás!!!! isso sim é importante!!!! Ao implementar essa issue, é muito, muito importante guardar os dados de cada votante!!!! Isso por diversas razões: i) o Radar pode conhecer quem usa o projeto; ii) o Radar pode divulgar estatísticas a respeito das pessoas que por lá passaram! iii) uma ferramenta como essa é praticamente um survey!!!

Segue um causo. Vcs sabem q a maior parte das votações do legisltivo brasileiro são simbólicas. Daí, a principal justivicativa para que existam pesquisas sobre votações nominais é a de que, se houve votação nominal, isso já significa que não houve consenso entre as lideranças partidárias para que a votação não ocorresse.

leonardofl commented 11 years ago

1o esclarecimento: essa issue é somente sobre a detecção de votações nominais. O lance do cara poder se ver no gráfico é uma funcionalidade para qual ainda deverá haver muitos outros issues.

No momento há outra para que essas votações sejam apresentadas ao usuário (#144). Mas seria mais a título de curiosidade, e nesse caso podemos imprimir só a sigla da proposição e a data da votação. Isso faz parte da visão de q a página de análises pode mostrar bem mais coisas do que o gráfico PCA.

Agora sobre a ideia de deixar o cidadão escolher o que é "polêmico", me pareceu boa. Gostei do ponto de vista do Davi. Isso equivale a inicialmente deixar que alguns analistas escolham algumas votações iniciais, mas depois deixar o sistema colaborativo para que os próprios usuários decidam no que querem votar. Depende um pouco mais do engajamento dos usuários, mas me pareceu bem justo a colocação "prefiro saber meu posicionamento em relação aos partidos no caso de coisas que conheço". Tô pensando aqui como isso pode ser feito... um jeito bacana seria o cara escolher livremente as votações que ele quer responder, mas o sistema pode recomendar votações pra ele, que a princípio pode ser bem simples: recomendar as votações que as outras pessoas estão respondendo. E com o tempo a coisa pode se tornar até um sistema de recomendação complexo, hehe.

diraol commented 11 years ago

Algumas considerações: 1) Na escolha de quais votações mostrar (para o usuário votar ou não) devemos pensar também na questão de filtros temáticos. 2) O site do e-democracia tem um processo parecido (crowdsourced), no qual os usuários votam em temáticas que acham que deveriam ser debatidas. ( edemocracia.camara.gov.br ). 3) Acho bem bacana essa ideia de interagir com os usuários coletivamente. Super acho que vale à pena! =) Mas não acho que isso exclua essa issue de criar a lista das votações mais relevantes/impactantes (independente de polemicidade no sentido 50/50 ou conteudista).