Позначки

,

Виникла в мене ідея проаналізувати, як депутати голосують разом із своїми фракціями. А точніше, як не голосують.

Переважно статистично голосування “за” окремо від фракції які б означали якусь несолідарність досить рідкі, тому їх важко визначити. Простіше, на мій погляд, побачити що депутат регулярно не голосує “за” коли решта фракції голосують.

Методика:

Отже, нам потрібно визначити голосування, в яких фракція голосує “за” разом. Звичайно, для цього потрібно встановити якийсь “поріг”. Наприклад, якщо 60 чи 75 чи 90 відсотків присутніх депутатів фракції проголосували “за” – рахуєм що фракція голосувала “за”. 60, 75, 90 – різні пороги, відповідно. Відсутність ігноруєм, бо навряд чи вона про щось свідчить в статистичному плані.

Потім рахуєм, скільки з цих голосувань кожен депутат фракції не голосував “за”. Також віднімаєм кількість голосувань, на яких він був відсутній – отримуєм кількість голосувань, коли депутат був “проти”, “утримався” чи “не голосував”, в той час як більше порогового відсотку фракції проголосували “за”.

Ділим цю кількість на загальну кількість голосувань, коли більше порогової кількості депутатів фракції голосували “за” – отримуєм такий собі “коефіцієнт дисидентства” депутата для заданого порогу.

Також може бути цікавим подивитись власне список голосувань, в яких депутат не дав голосу “за” фракції, тоді як більше порогової кількості проголосували “за”.

Всі ці речі можна порахувати на базі даних RadaWatch, і я додав цей функціонал у саму RadaWatch – див. новий реліз RadaWatch 2.1.3 @ GitHub.

Скріншоти:

  • Коефіцієнт дисидентства депутата Найєма. Текстовий фільтр застосовується до імені депутата та/або до назви фракції. Фільтри по датах також працюють, обмежуючи голосування, які враховуються, по їх датам. Колонки результатів: всього голосувань фракції за період поки депутат перебував у ній; назва фракції; прізвище+ініціали депутата; кількість голосувань в яких фракція дала більший за пороговий відсоток голосів “за” – так би мовити “групуючих” голосувань; кількість голосувань з них коли депутат не голосував “за”; кількість з них де депутат “відсутній”; аналогічно де “проти/утримався/не голосував” (SansAbsence – тобто голоси крім “за” і крім “відсутній”) – оце власне “дисидентські” голосування; відсоток останніх до “групуючих”.

RadaWatch2.1.3dissentanalysis

RadaWatch2.1.3dissentanalysis2

  • список “дисидентських” голосувань депутата – відкривається по подвійному кліку по рядку в попередній табличці. Перед кліком поріг та інші фільтри можна змінити – з рядку таблички передається тільки прізвище+ініціали депутата, які замінюють введений користувачем текстовий фільтр.

RadaWatch2.1.3dissentanalysis_votelist

Нижче приклад SQL запитів, за якими дані отримуються з бази (з фільтром по даті на цей раз, 2014-10-26 – дата парламентських виборів), 90 – відсотковий поріг для “групуючих” голосувань:

select *, notdeputee-absent as notdwabs, ((notdeputee-absent)*100)/groupingvote as percent from (
select count(*) as totalvotes, title, name,
sum(CASE WHEN ((votesessionfaction.votedyes*100)/(votesessionfaction.totalmembers-votesessionfaction.absent)>90) THEN 1 ELSE 0 END) as groupingvote,
sum(CASE WHEN ((votesessionfaction.votedyes*100)/(votesessionfaction.totalmembers-votesessionfaction.absent)>90 and not individualvote.voted = 1) THEN 1 ELSE 0 END) as notdeputee,
sum(CASE WHEN ((votesessionfaction.votedyes*100)/(votesessionfaction.totalmembers-votesessionfaction.absent)>90 and individualvote.voted = 5) THEN 1 ELSE 0 END) as absent
from votesession
left join votesessionfaction on votesessionfaction.votesessionid = votesession.id
left join individualvote on individualvote.votesessionfactionid = votesessionfaction.id
where votedate>’2014-10-26′
group by name, title
) as tmpt
order by title, percent desc;


select title, voted, votedate, votetitle, voted
from votesession
left join votesessionfaction on votesessionfaction.votesessionid = votesession.id
left join individualvote on individualvote.votesessionfactionid = votesessionfaction.id
where votedate>’2014-10-26′
and (votesessionfaction.votedyes*100)/(votesessionfaction.totalmembers-votesessionfaction.absent)>90
and name = ‘<Ім\’я депутата>’
and not voted = 1
and not voted = 5
order by title, voted, votedate;

Advertisements