「佐伯氏」という市は存在しない
289小選挙区の区割りを総務省の資料から取り込んだ。
市区町村名を突き合わせたら、6件だけ合わなかった。
県ごとの支持を実際の選挙結果から作り直した話を前に書いた。残っていたのが、その下の層だ。
289ある小選挙区を、このゲームは「県の有権者数を定数で割って、第1区ほど都市部」という近似で作っていた。どの市区町村がどの区に属するかという一次情報を持っていなかったからだ。
探してみたら、意外なところにあった。総務省が公表している「市区町村別得票数」だ。
これは選挙区ごとにシートが分かれていて、その区に属する市区町村が縦に並んでいる。得票数の表として作られているが、読み方を変えればそのまま区割り表になる。
2つのファイルを突き合わせる
同じページには比例代表の市区町村別得票も置いてある。ブロックごとに、市区町村ごとの党派別得票が載っている。
この2つを突き合わせれば、選挙区ごとの比例代表得票が出る。小選挙区の得票ではなく比例の得票を使いたかった。小選挙区の票には候補者個人の強さが混ざるので、その土地で党がどれだけ支持されているかを測るなら比例のほうが素直だからだ。
幸い、市区町村名の表記は両方のファイルで揃っていた。「札幌市北区第1区」のように行政区が選挙区で分割されているものまで、同じ書き方で載っている。
47県ぶんと11ブロックぶん、58ファイルを読んで突き合わせた。1925件の市区町村のうち、合わなかったのは6件だった。
合わなかった6件
内訳を見ると、ゆれ方に癖があった。
- 小選挙区のファイルは「三浦郡葉山町」、比例のファイルは「葉山町」——郡名の有無
- 小選挙区のファイルは「千種区」、比例のファイルは「名古屋市千種区」——政令市名の有無
- 小選挙区のファイルは「越智郡上島町」、比例のファイルは「上島町」——これも郡名
- そして大分県の「佐伯市」が、比例のファイルでは「佐伯氏」になっていた
最後のひとつを見つけたときは、しばらく画面を見つめてしまった。
国の公式資料の、誤字である。人が手で作った表なのだから、そういうこともある。
郡名と政令市名は機械的に処理できた。誤字のほうは、最初「1文字だけ違う名前を探す」という手を書いてみたのだが、これは採用しなかった。「◯◯市」と「◯◯町」のように紛らわしい候補が複数見つかって、どれが正しいか決められない。取り違えるくらいなら落とすほうがいい。
結局、分かっている誤字だけを対応表に直に書いた。コードにはこう書いてある。「総務省の資料にある明らかな誤り」。
一票の格差が、勝手に働きはじめた
区割りと区ごとの有権者数を実データにしたあと、全国の支持率を測り直して驚いた。
前に「地域の分布だけを実データにして、全国の力関係は変えない」という設計にしたと書いた。そのときは0.04ポイント以内で一致していたのに、今度は自民型の党が0.57ポイント下がり、都市型の党が上がっている。
最初はバグを疑った。県のなかで配り直しただけなのだから、県の合計は変わらないはずだ。
実際、県内の係数は有権者数で重みを付けた平均が1.0になるよう正規化した。それでも差は消えなかった。
消えないはずだった。これは一票の格差だからだ。
自民が強い地方の区は有権者が少なく、都市型の党が強い区は有権者が多い。有権者数で重みを付けて全国平均を出せば、そのぶん都市型の党が増える。実際の日本の選挙で起きていることが、データを入れた瞬間に勝手に働きはじめただけだった。
テストを書き直した。「モデルと厳密に一致する」ではなく、「相対で1割以内に収まり、党の順位は変わらない」。そして一票の格差が効いていること自体を、別のテストで固定した——地方に強い党は目減りし、都市型の党は増える、と。
消すべき誤差ではなく、入れたかったリアリティのほうだった。
候補者モードで選挙区を選ぶと、その区がどの市区町村でできているかが表示されるようにもした。東京都第1区は千代田区と新宿区。第25区は青梅市から奥多摩町まで。
生まれ育った町から出馬する、という遊び方ができるようになった。
※運営者が個人で書いているnoteです。