京都の共産党は、係数では表せなかった
都市度・保守度・地域政党の浸透度。3つの数字で県ごとの支持を組み立てていた。
どうやっても出せないものがあった。
このゲームは県ごとの政党支持を、3つの数字から組み立てていた。都市度、保守度、そして改革系の地域政党がどれだけ浸透しているか。
47都道府県×政党数ぶんの支持率を手で持つと、どこをいじると何が動くのか誰にも分からなくなる。だから県には3つだけ持たせて、政党側の係数と掛け合わせる。設計としては悪くなかったと思う。
ただ、この3つでは絶対に表せないものがあった。
京都の共産党。大阪の維新。香川の国民民主。
どれも理屈では導けない。都市度が高いから、保守的だから、では説明がつかない。実際にそう投票されてきた、としか言いようがないものだ。
総務省のExcelを13回ぶん
実際の投票結果を持ってくることにした。総務省が選挙のたびに公表している「都道府県別党派別得票数」で、比例代表の県ごとの票が政党別に載っている。
衆議院6回、参議院7回。2007年から2025年までの13回ぶんを取り込んだ。
取り込みそのものは素直に進まなかった。回によってExcelの形式が違う(新しいものは.xlsx、古いものは.xls)。政党が多い回は表が縦に分割されていて、ヘッダーと47都道府県のブロックが何度も繰り返される。参議院は政党ごとに4列を使い、政党名は数行上のセルにマージされて1回だけ書かれている。
いちばん厄介だったのは、表の末尾に付く「合計」ブロックだった。
各政党のブロックと同じ形をしているので、油断すると全政党の合計値を1つの政党の得票として読んでしまう。実際そうなって、全国の得票合計が投票者数の2倍という、ありえない数字が出た。
ここで「得票の合計が投票者数を超えていたらエラーにする」という検算を仕込んだのが効いた。
4つの回で同じ症状が出ていることが一度に分かり、原因(合計ブロックの見出しを読み飛ばして、1つ上の政党名を拾っていた)も特定できた。取り込みスクリプトを書くときは、こういう「明らかにおかしい」を機械に判定させておくといい。人間の目視では、47都道府県×13回×十数政党は追い切れない。
その回の風を、割り算で消す
取り込んだ数字をそのまま使うわけにはいかなかった。2009年の民主党は全国で圧勝していて、2012年には惨敗している。生の得票率を平均すると、その回の風がそのまま混ざる。
欲しいのは風ではなく骨格だ。そこで、県の得票率を全国の得票率で割った値を使うことにした。
1.0なら全国並み、1.3なら3割増し。全国的な追い風・逆風はこの割り算で打ち消され、「その党がどの土地に強いか」だけが残る。新しい選挙ほど重く見るよう、1回さかのぼるごとに重みを0.8倍にした。
出てきた数字を眺めて、思わず声が出た。
自民党は島根1.42、鳥取1.41、山口1.40。大阪は0.63。維新は大阪3.26、兵庫2.04、奈良1.93で、青森は0.40。共産党は京都1.89、高知1.76。国民民主は香川2.48。公明党は沖縄・和歌山・福岡。チームみらいは東京2.41。
手で決めた3つの係数では、どうやっても出せなかった解像度だ。
変えなかったもの
一つ、意識して変えなかったところがある。全国での党の力関係だ。
実績をそこまで持ち込むと、たとえば2009年の民主党の圧勝がそのまま固定されてしまう。毎回同じ結果を見るだけのゲームになる。
だから全国平均はゲーム側の設定のままにして、地域の分布だけを実績に置き換えた。実装したあと確かめたら、党ごとの全国平均は変更前と0.04ポイント以内で一致していた。狙いどおり、地域の中身だけが入れ替わっている。
この土台は全部のモードに効く。選対本部でどの県にてこ入れするか、候補者としてどの選挙区から出るか、一発勝負の議席、情勢マップ、知事選。
架空の政党で遊ぶモードでも、対応する実在政党の地域構造を受け継ぐようにした。民自党は自民党の、日本刷新の会は維新の地図の上に立っている。
情勢マップを開いて維新のタブを押すと、近畿だけが濃く染まる。共産のタブでは京都と高知が浮かび上がる。
係数をいじって「それっぽく」見せていたときには、ついに出せなかった絵だ。
※運営者が個人で書いているnoteです。