sekirin (sekirin) wrote,
sekirin
sekirin

Category:

аналогичная обработка выборов Ющенко 2004-го года

  Под впечатлением картинок из http://podmoskovnik.livejournal.com/65386.html
с результатами стсатобработки выборов в РФ захотелось посмотреть, как выглядят их аналоги для выборов на Украине. Напомню, что в идеале распределение по явке гауссово, доля проголосовавших за того или иного кандидата не зависит от явки, а отклонения свидетельствуют о неслучайности. Было интересно, как картина выглядит для расколотой страны, где одни области поддерживают одного кандидата, а другие - другого.
  К сожалению, по выборам 2004-го года детали с точностью до участков представлены лишь для повторного второго тура. Ссылки на сайт ЦИК - в приведенной ниже программе (под катом). Сама программа написана в спешке, неоптимальна, сетки на графике нет, но времени улучшать тоже нет.

--------
#!/usr/bin/env python

import urllib

def obrab(f1,tekst):
 stroki=tekst.split('\n')
 n=0
 while stroki[n][:16]!='')
   s=s[ind+1:]
   tekusc.append(s)
   if i==11: alles.append(tekusc); tekusc=[]; i=0
 for tekusc in alles[1:]:
  # print tekusc[3],tekusc[6],tekusc[8],tekusc[9]
  izbir=float(tekusc[3])
  ucast=float(tekusc[6])
  xscen=float(tekusc[8])
  qnuko=float(tekusc[9])
  if izbir!=0 and ucast!=0:
   uc=1.0*ucast/izbir; xs=1.0*xscen/ucast; qn=1.0*qnuko/ucast
   zapisx='%6.2f %6.2f %6.2f\n' % (100*uc,100*xs,100*qn)
   f1.write(zapisx)
 f1.flush()

# --------

f1=open('obrab1a.lst','a')

for i in range(1,227):
 print i
 ssylka='http://www.cvk.gov.ua/pls/vp2004/wp336?pt001f01=502&pt005f01='+str(i)
 a=urllib.urlopen(ssylka); s=a.read(); a.close()
 # f2=open(str(i)+'.htm','w'); f2.write(s); f2.close()
 obrab(f1,s)
f1.close()
--------
#!/usr/bin/python

from Tkinter import *

canvas = Canvas(width=500, height=500, bg='grey')
canvas.pack(expand=YES, fill=BOTH)

wer_ucast=[0]*101

f0=open('obrab1a.lst','r')
while True:
 s=f0.readline()
 if s=='': break
 if s[-1:]=='\n': s=s[:-1]
 if s[-1:]=='\r': s=s[:-1]
 # -> po tipu ' 81.05  14.55  81.85'
 ss=s.split(' ')
 ss=filter(lambda(x):len(x)>0, ss)  
 uc=float(ss[0]); xs=float(ss[1]); qn=float(ss[2])
 uc=int(5*uc); xs=int(5*xs); qn=int(5*qn)
 # print uc,xs,qn
 iuc=uc/5; 
 # print iuc
 if iuc<=100:
  wer_ucast[iuc]= wer_ucast[iuc]+1
  canvas.create_oval(uc, 500-xs, uc+3, 500-(xs+3), width=0, fill='red')
  canvas.create_oval(uc, 500-qn, uc+3, 500-(qn+3), width=0, fill='blue')
 else:
  print uc,xs,qn,iuc

f0.close()

for i in range(100): 
 print i,wer_ucast[i]
 canvas.create_line(5*i, 500-wer_ucast[i]/3, 5*(i+1), 500-wer_ucast[i+1]/3)

mainloop()
--------


  Полученная картинка:

  Словесное описание: явка высокая (~70%), возможно, с небольшим хвостом в сторону 100%; область высокой плотности точек - в виде скобки: вблизи явки 70% - примерно по 50% за каждого кандидата с большим разбросом; при дальнейшем росте явки - две ветви - на одной преобладают голоса за Ющенко, на другой - за Януковича; при подходе к явке 100% эти ветви стремятся к уровням 0 и 100% - поляризация достигает предела. Выводов делать не берусь, но картинка забавная.
P.S.: по цвету точек может показаться, что вблизи 100% преобладают красные точки, вблизи 0% - синие; это артефакт за счёт того. что кружочки, нарисованные позже, закрывают нарисованные раньше, а если изобразить точки за разных кандидатов на разных графиках, то для обоих получается такая же скобка (с небольшими сгущениями: для Ющенко - 0, 30 и 100%, для Януковича - 0, 70 и 100%). А если отложить по осям доли голосов за Ющ. и за Янук., получается наклонная скобка: при поляризация (неважно за кого) доля недействительных бюллетеней и голосов против обоих кандидатов минимальна, а при голосах поровну - максимальна.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments