以前、「ベンフォードの法則 - 株価の値段や、不正経理、不正選挙の発見法則」なんて記事を書きましたが
選挙の得票数の頭1桁目の数字は、理論的に下のような分布になるのですが
で公表されている第46回衆議院議員総選挙の大阪府の比例選挙区のデータを例に、興味本位で、各政党の各市町村での得票数の数字から、どんな感じか出してみました。
市町村数が72で母数が少ないので、なんとも言えないのですが、2桁目についても理論値が在るのですが、2桁目を見ても微妙に....とはなんとも言えませんがwww
ちなみにホームページやブログのアクセス数の数字の分布もこの法則に従うはずかな?
O...観測値
E...理論値
(O-E)^2/E...カイ2乗値ポイ値^^;;
注意)
以下の(O-E)^2/Eと(O-E)^2/Eの合計は無視してください。
サイコロのゆがみを表す、カイ2乗検定ポイ値を出そうと思たのですが、率で計算しても仕方ないですね。後で、直します。
上記注意の訂正版です↓こちらをご覧下さい。
平成24年12月16日執行
『市区町村名』
大阪市東成区
大阪市西成区
大阪市北区
堺市堺区
八尾市
泉佐野市
富田林市
交野市
島本町
岬町
太子町
----------------------------
(近畿選挙区)
項目数 = 72
最上位が「1」で始まる得票数 28件 O=38.9%(E=30.10%), (O-E)=8.79, (O-E)^2=77.19, (O-E)^2/E=2.56
最上位が「2」で始まる得票数 5件 O= 6.9%(E=17.61%), (O-E)=-10.66, (O-E)^2=113.74, (O-E)^2/E=6.46
最上位が「3」で始まる得票数 6件 O= 8.3%(E=12.49%), (O-E)=-4.16, (O-E)^2=17.31, (O-E)^2/E=1.39
最上位が「4」で始まる得票数 3件 O= 4.2%(E=9.69%), (O-E)=-5.52, (O-E)^2=30.52, (O-E)^2/E=3.15
最上位が「5」で始まる得票数 4件 O= 5.6%(E=7.92%), (O-E)=-2.36, (O-E)^2=5.58, (O-E)^2/E=0.70
最上位が「6」で始まる得票数 5件 O= 6.9%(E=6.69%), (O-E)=0.25, (O-E)^2=0.06, (O-E)^2/E=0.01
最上位が「7」で始まる得票数 9件 O=12.5%(E=5.80%), (O-E)=6.70, (O-E)^2=44.90, (O-E)^2/E=7.74
最上位が「8」で始まる得票数 4件 O= 5.6%(E=5.12%), (O-E)=0.44, (O-E)^2=0.19, (O-E)^2/E=0.04
最上位が「9」で始まる得票数 8件 O=11.1%(E=4.58%), (O-E)=6.54, (O-E)^2=42.71, (O-E)^2/E=9.33
(O-E)^2/Eの合計 = 31.39
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 22件 O=30.6%(E=30.10%), (O-E)=0.45, (O-E)^2=0.20, (O-E)^2/E=0.01
最上位が「2」で始まる得票数 8件 O=11.1%(E=17.61%), (O-E)=-6.50, (O-E)^2=42.22, (O-E)^2/E=2.40
最上位が「3」で始まる得票数 9件 O=12.5%(E=12.49%), (O-E)=0.01, (O-E)^2=0.00, (O-E)^2/E=0.00
最上位が「4」で始まる得票数 5件 O= 6.9%(E=9.69%), (O-E)=-2.75, (O-E)^2=7.54, (O-E)^2/E=0.78
最上位が「5」で始まる得票数 8件 O=11.1%(E=7.92%), (O-E)=3.19, (O-E)^2=10.20, (O-E)^2/E=1.29
最上位が「6」で始まる得票数 7件 O= 9.7%(E=6.69%), (O-E)=3.03, (O-E)^2=9.17, (O-E)^2/E=1.37
最上位が「7」で始まる得票数 4件 O= 5.6%(E=5.80%), (O-E)=-0.24, (O-E)^2=0.06, (O-E)^2/E=0.01
最上位が「8」で始まる得票数 3件 O= 4.2%(E=5.12%), (O-E)=-0.95, (O-E)^2=0.90, (O-E)^2/E=0.18
最上位が「9」で始まる得票数 6件 O= 8.3%(E=4.58%), (O-E)=3.76, (O-E)^2=14.12, (O-E)^2/E=3.09
(O-E)^2/Eの合計 = 9.11
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 36件 O=50.0%(E=30.10%), (O-E)=19.90, (O-E)^2=395.89, (O-E)^2/E=13.15
最上位が「2」で始まる得票数 18件 O=25.0%(E=17.61%), (O-E)=7.39, (O-E)^2=54.63, (O-E)^2/E=3.10
最上位が「3」で始まる得票数 5件 O= 6.9%(E=12.49%), (O-E)=-5.55, (O-E)^2=30.80, (O-E)^2/E=2.46
最上位が「4」で始まる得票数 3件 O= 4.2%(E=9.69%), (O-E)=-5.52, (O-E)^2=30.52, (O-E)^2/E=3.15
最上位が「5」で始まる得票数 2件 O= 2.8%(E=7.92%), (O-E)=-5.14, (O-E)^2=26.42, (O-E)^2/E=3.34
最上位が「6」で始まる得票数 4件 O= 5.6%(E=6.69%), (O-E)=-1.14, (O-E)^2=1.30, (O-E)^2/E=0.19
最上位が「7」で始まる得票数 3件 O= 4.2%(E=5.80%), (O-E)=-1.63, (O-E)^2=2.67, (O-E)^2/E=0.46
最上位が「8」で始まる得票数 0件 O= 0.0%(E=5.12%), (O-E)=-5.12, (O-E)^2=26.17, (O-E)^2/E=5.12
最上位が「9」で始まる得票数 1件 O= 1.4%(E=4.58%), (O-E)=-3.19, (O-E)^2=10.16, (O-E)^2/E=2.22
(O-E)^2/Eの合計 = 33.19
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 7件 O= 9.7%(E=30.10%), (O-E)=-20.38, (O-E)^2=415.38, (O-E)^2/E=13.80
最上位が「2」で始まる得票数 22件 O=30.6%(E=17.61%), (O-E)=12.95, (O-E)^2=167.61, (O-E)^2/E=9.52
最上位が「3」で始まる得票数 11件 O=15.3%(E=12.49%), (O-E)=2.78, (O-E)^2=7.75, (O-E)^2/E=0.62
最上位が「4」で始まる得票数 13件 O=18.1%(E=9.69%), (O-E)=8.36, (O-E)^2=69.97, (O-E)^2/E=7.22
最上位が「5」で始まる得票数 9件 O=12.5%(E=7.92%), (O-E)=4.58, (O-E)^2=20.99, (O-E)^2/E=2.65
最上位が「6」で始まる得票数 7件 O= 9.7%(E=6.69%), (O-E)=3.03, (O-E)^2=9.17, (O-E)^2/E=1.37
最上位が「7」で始まる得票数 2件 O= 2.8%(E=5.80%), (O-E)=-3.02, (O-E)^2=9.13, (O-E)^2/E=1.57
最上位が「8」で始まる得票数 1件 O= 1.4%(E=5.12%), (O-E)=-3.73, (O-E)^2=13.89, (O-E)^2/E=2.71
最上位が「9」で始まる得票数 0件 O= 0.0%(E=4.58%), (O-E)=-4.58, (O-E)^2=20.94, (O-E)^2/E=4.58
(O-E)^2/Eの合計 = 44.04
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 21件 O=29.2%(E=30.10%), (O-E)=-0.94, (O-E)^2=0.88, (O-E)^2/E=0.03
最上位が「2」で始まる得票数 21件 O=29.2%(E=17.61%), (O-E)=11.56, (O-E)^2=133.58, (O-E)^2/E=7.59
最上位が「3」で始まる得票数 14件 O=19.4%(E=12.49%), (O-E)=6.95, (O-E)^2=48.31, (O-E)^2/E=3.87
最上位が「4」で始まる得票数 10件 O=13.9%(E=9.69%), (O-E)=4.20, (O-E)^2=17.62, (O-E)^2/E=1.82
最上位が「5」で始まる得票数 0件 O= 0.0%(E=7.92%), (O-E)=-7.92, (O-E)^2=62.70, (O-E)^2/E=7.92
最上位が「6」で始まる得票数 1件 O= 1.4%(E=6.69%), (O-E)=-5.31, (O-E)^2=28.15, (O-E)^2/E=4.21
最上位が「7」で始まる得票数 1件 O= 1.4%(E=5.80%), (O-E)=-4.41, (O-E)^2=19.45, (O-E)^2/E=3.35
最上位が「8」で始まる得票数 2件 O= 2.8%(E=5.12%), (O-E)=-2.34, (O-E)^2=5.46, (O-E)^2/E=1.07
最上位が「9」で始まる得票数 2件 O= 2.8%(E=4.58%), (O-E)=-1.80, (O-E)^2=3.23, (O-E)^2/E=0.71
(O-E)^2/Eの合計 = 30.55
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 15件 O=20.8%(E=30.10%), (O-E)=-9.27, (O-E)^2=85.93, (O-E)^2/E=2.85
最上位が「2」で始まる得票数 12件 O=16.7%(E=17.61%), (O-E)=-0.94, (O-E)^2=0.89, (O-E)^2/E=0.05
最上位が「3」で始まる得票数 13件 O=18.1%(E=12.49%), (O-E)=5.56, (O-E)^2=30.93, (O-E)^2/E=2.48
最上位が「4」で始まる得票数 12件 O=16.7%(E=9.69%), (O-E)=6.98, (O-E)^2=48.66, (O-E)^2/E=5.02
最上位が「5」で始まる得票数 7件 O= 9.7%(E=7.92%), (O-E)=1.80, (O-E)^2=3.25, (O-E)^2/E=0.41
最上位が「6」で始まる得票数 6件 O= 8.3%(E=6.69%), (O-E)=1.64, (O-E)^2=2.69, (O-E)^2/E=0.40
最上位が「7」で始まる得票数 4件 O= 5.6%(E=5.80%), (O-E)=-0.24, (O-E)^2=0.06, (O-E)^2/E=0.01
最上位が「8」で始まる得票数 2件 O= 2.8%(E=5.12%), (O-E)=-2.34, (O-E)^2=5.46, (O-E)^2/E=1.07
最上位が「9」で始まる得票数 1件 O= 1.4%(E=4.58%), (O-E)=-3.19, (O-E)^2=10.16, (O-E)^2/E=2.22
(O-E)^2/Eの合計 = 14.51
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 36件 O=50.0%(E=30.10%), (O-E)=19.90, (O-E)^2=395.89, (O-E)^2/E=13.15
最上位が「2」で始まる得票数 11件 O=15.3%(E=17.61%), (O-E)=-2.33, (O-E)^2=5.44, (O-E)^2/E=0.31
最上位が「3」で始まる得票数 5件 O= 6.9%(E=12.49%), (O-E)=-5.55, (O-E)^2=30.80, (O-E)^2/E=2.46
最上位が「4」で始まる得票数 3件 O= 4.2%(E=9.69%), (O-E)=-5.52, (O-E)^2=30.52, (O-E)^2/E=3.15
最上位が「5」で始まる得票数 3件 O= 4.2%(E=7.92%), (O-E)=-3.75, (O-E)^2=14.07, (O-E)^2/E=1.78
最上位が「6」で始まる得票数 4件 O= 5.6%(E=6.69%), (O-E)=-1.14, (O-E)^2=1.30, (O-E)^2/E=0.19
最上位が「7」で始まる得票数 4件 O= 5.6%(E=5.80%), (O-E)=-0.24, (O-E)^2=0.06, (O-E)^2/E=0.01
最上位が「8」で始まる得票数 1件 O= 1.4%(E=5.12%), (O-E)=-3.73, (O-E)^2=13.89, (O-E)^2/E=2.71
最上位が「9」で始まる得票数 5件 O= 6.9%(E=4.58%), (O-E)=2.37, (O-E)^2=5.61, (O-E)^2/E=1.23
(O-E)^2/Eの合計 = 25.00
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 9件 O=12.5%(E=30.10%), (O-E)=-17.60, (O-E)^2=309.87, (O-E)^2/E=10.29
最上位が「2」で始まる得票数 9件 O=12.5%(E=17.61%), (O-E)=-5.11, (O-E)^2=26.10, (O-E)^2/E=1.48
最上位が「3」で始まる得票数 14件 O=19.4%(E=12.49%), (O-E)=6.95, (O-E)^2=48.31, (O-E)^2/E=3.87
最上位が「4」で始まる得票数 9件 O=12.5%(E=9.69%), (O-E)=2.81, (O-E)^2=7.89, (O-E)^2/E=0.81
最上位が「5」で始まる得票数 9件 O=12.5%(E=7.92%), (O-E)=4.58, (O-E)^2=20.99, (O-E)^2/E=2.65
最上位が「6」で始まる得票数 7件 O= 9.7%(E=6.69%), (O-E)=3.03, (O-E)^2=9.17, (O-E)^2/E=1.37
最上位が「7」で始まる得票数 6件 O= 8.3%(E=5.80%), (O-E)=2.53, (O-E)^2=6.42, (O-E)^2/E=1.11
最上位が「8」で始まる得票数 5件 O= 6.9%(E=5.12%), (O-E)=1.83, (O-E)^2=3.35, (O-E)^2/E=0.65
最上位が「9」で始まる得票数 4件 O= 5.6%(E=4.58%), (O-E)=0.98, (O-E)^2=0.96, (O-E)^2/E=0.21
(O-E)^2/Eの合計 = 22.45
----------------------------
項目数 = 72
最上位が「1」で始まる得票数 21件 O=29.2%(E=30.10%), (O-E)=-0.94, (O-E)^2=0.88, (O-E)^2/E=0.03
最上位が「2」で始まる得票数 23件 O=31.9%(E=17.61%), (O-E)=14.34, (O-E)^2=205.50, (O-E)^2/E=11.67
最上位が「3」で始まる得票数 12件 O=16.7%(E=12.49%), (O-E)=4.17, (O-E)^2=17.41, (O-E)^2/E=1.39
最上位が「4」で始まる得票数 2件 O= 2.8%(E=9.69%), (O-E)=-6.91, (O-E)^2=47.79, (O-E)^2/E=4.93
最上位が「5」で始まる得票数 1件 O= 1.4%(E=7.92%), (O-E)=-6.53, (O-E)^2=42.63, (O-E)^2/E=5.38
最上位が「6」で始まる得票数 2件 O= 2.8%(E=6.69%), (O-E)=-3.92, (O-E)^2=15.34, (O-E)^2/E=2.29
最上位が「7」で始まる得票数 3件 O= 4.2%(E=5.80%), (O-E)=-1.63, (O-E)^2=2.67, (O-E)^2/E=0.46
最上位が「8」で始まる得票数 6件 O= 8.3%(E=5.12%), (O-E)=3.22, (O-E)^2=10.36, (O-E)^2/E=2.02
最上位が「9」で始まる得票数 2件 O= 2.8%(E=4.58%), (O-E)=-1.80, (O-E)^2=3.23, (O-E)^2/E=0.71
(O-E)^2/Eの合計 = 28.89
----------------------------
----------zentai--------------
項目数 = 648
最上位が「1」で始まる得票数 195件 O=30.1%(E=30.10%), (O-E)=-0.01, (O-E)^2=0.00, (O-E)^2/E=0.00
最上位が「2」で始まる得票数 129件 O=19.9%(E=17.61%), (O-E)=2.30, (O-E)^2=5.28, (O-E)^2/E=0.30
最上位が「3」で始まる得票数 89件 O=13.7%(E=12.49%), (O-E)=1.24, (O-E)^2=1.54, (O-E)^2/E=0.12
最上位が「4」で始まる得票数 60件 O= 9.3%(E=9.69%), (O-E)=-0.43, (O-E)^2=0.19, (O-E)^2/E=0.02
最上位が「5」で始まる得票数 43件 O= 6.6%(E=7.92%), (O-E)=-1.28, (O-E)^2=1.64, (O-E)^2/E=0.21
最上位が「6」で始まる得票数 43件 O= 6.6%(E=6.69%), (O-E)=-0.06, (O-E)^2=0.00, (O-E)^2/E=0.00
最上位が「7」で始まる得票数 36件 O= 5.6%(E=5.80%), (O-E)=-0.24, (O-E)^2=0.06, (O-E)^2/E=0.01
最上位が「8」で始まる得票数 24件 O= 3.7%(E=5.12%), (O-E)=-1.41, (O-E)^2=1.99, (O-E)^2/E=0.39
最上位が「9」で始まる得票数 29件 O= 4.5%(E=4.58%), (O-E)=-0.10, (O-E)^2=0.01, (O-E)^2/E=0.00
(O-E)^2/Eの合計 = 1.05
↓やっつけで作ったので汚いソースですが、以下のソースをsenkyo.pyとかで保存して
総務省|第46回衆議院議員総選挙・最高裁判所裁判官国民審査 候補者別 市区町村別得票数
の比例代表のエクセルシートのアドレスを↓な感じでパラメータに渡してもらうと、直接ネット上のエクセルシートを読みに行って、上のような結果を出してくれます。(小選挙区は未対応です)
./senkyo.py http://www.soumu.go.jp/main_content/000205230.xls
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import xlrd
import socket
import urllib2
import cookielib
from math import *
d0 = [0,0,0,0,0,0,0,0,0,0]
socket.setdefaulttimeout(180)
cookies = cookielib.CookieJar()
cookieProcessor = urllib2.HTTPCookieProcessor(cookies)
opener = urllib2.build_opener(cookieProcessor)
def senkyo(url):
web = opener.open(url)
webdata = web.read()
web.close()
book = xlrd.open_workbook(file_contents=webdata)
sheet_1 = book.sheet_by_index(0)
print 'ncols=', sheet_1.name.encode('utf-8')
print 'ncols=', sheet_1.ncols
print 'nrows=', sheet_1.nrows
d0 = [0,0,0,0,0,0,0,0,0,0]
for col in range(sheet_1.ncols-1):
d = [0,0,0,0,0,0,0,0,0,0]
print "----------------------------"
for row in range(sheet_1.nrows-1):
cell=sheet_1.cell(row,col)
if cell.ctype == xlrd.XL_CELL_TEXT:
#print 'row=', row, 'col=', col, cell.value.encode('utf-8')
print cell.value.encode('utf-8')
elif cell.ctype == xlrd.XL_CELL_NUMBER:
tmp = str(cell.value)
if tmp[0].isdigit():
#print 'row=', row, 'col=', col, cell.value
d0[int(tmp[0])] += 1
d[int(tmp[0])] += 1
Z=0
if sum(d) > 0:
print '項目数 =', sum(d)
for i in range(1 , 10):
O = 100. * d[i] / sum(d)
E = log10((i + 1.)/i)*100
K = (O-E)**2/E
Z += K
print '最上位が「%d」で始まる得票数 %d件' % (i, d[i]), 'O=%4.1f%%(E=%4.2f%%), (O-E)=%4.2f, (O-E)^2=%4.2f, (O-E)^2/E=%4.2f' % (O, E, O-E, (O-E)**2, K)
print '(O-E)^2/Eの合計 = %4.2f' % Z
print "----------zentai--------------"
print '項目数 =', sum(d0)
Z=0
for i in range(1 , 10):
O = 100. * d0[i] / sum(d0)
E = log10((i + 1.)/i)*100
K = (O-E)**2/E
Z += K
print '最上位が「%d」で始まる得票数 %d件' % (i, d0[i]), 'O=%4.1f%%(E=%4.2f%%), (O-E)=%4.2f, (O-E)^2=%4.2f, (O-E)^2/E=%4.2f' % (O, E, O-E, (O-E)**2, K)
print '(O-E)^2/Eの合計 = %4.2f' % Z
if __name__ == '__main__':
import sys
if len( sys.argv ) > 1:
url = sys.argv[1]
senkyo(url)