第50回衆院選の比例にて全国で「民主党」と書いた人は何人いるのかを推測する

## 「民主党」
ニュースやSNS等でも話題になっていたように「立憲民主党」と「国民民主党」が衆院選の比例代表の略称名にて双方とも「民主党」を使用していました。

https://www.nikkei.com/article/DGXZQOUA18C1U0Y4A011C2000000/

この場合もし「民主党」と票に書いて投票した場合、双方の有効票の割合に応じて按分されるそうです。

## 「民主党」と書かれた票の数はある程度推測することができる

そのような選挙制度を知り「ふーん」と思っていたのですが、気になるQiitaの記事を発見しました。

https://qiita.com/udoP_/items/6de13c485168c0f7eeae

これによると「按分の仕組みを考えれば得票比が保たれるので得票数から「民主党票」の数を予測できる」とのことです。

上記の記事では筆者の自治体で検証しているようですが.....

**全国で一体何票あるか気になりませんか？**

## やってみた
各都道府県の選挙管理委員会は各々のホームページにて選挙結果を公表しており、比例で言えば〇〇市においてこの政党は何票、あの政党は何票入ったといったことを公開しています。(例えば北海道は[これ](https://www.pref.hokkaido.lg.jp/hs/203526.html))

ということで...

**47都道府県全ての選挙管理委員会のページにアクセスし、各自治体ごとに集計してきます😇**

```minsyu.json
{
  "北海道": [
    {
      "cityName": "札幌市",
      "kokumin": 95784.222,
      "rikken": 259068.765
    },
    {
      "cityName": "函館市",
      "kokumin": 6680.565,
      "rikken": 36166.434
    },
    {
      "cityName": "小樽市",
      "kokumin": 2624.099,
      "rikken": 15014.9
    },
    {
      "cityName": "旭川市",
      "kokumin": 9728.417,
      "rikken": 41610.582
    },

...

```

こんな感じのjsonを作成して(8796行にもなった😇)

Python(Jupyter Notebook)で結果を求めて行きます。

### 計算方法
計算方法は上記のQiitaの記事の筆者様がC#で書かれているコードをPythonにほぼそのまま書き換えたものになります。

```minsyu_analysis.py
def minsyu(kokumin, rikken):
    total = round(kokumin + rikken)

    kokumin_per = kokumin / total
    rikken_per = rikken / total

    min_anbun = float("inf")

    for kakutei in range(1, total + 1):
        kokumin_vote = round(kakutei * kokumin_per)
        rikken_vote = round(kakutei * rikken_per)

        anbun = total - kokumin_vote - rikken_vote
        rikken_total = rikken_vote + rikken_vote / kakutei * anbun

        if(math.floor(rikken_total * 1000) / 1000 == rikken):
            if min_anbun > anbun:
                min_anbun = anbun

    return [min_anbun, total]
```

元記事と異なるところとして、自治体によっては「民主党票」になりうる組み合わせはいくつかある可能性があり、(例えば青森県青森市は22通りある)その組み合わせの中で最低値のみを取り出す仕組みにしています。(最低でもこのくらい民主党票はあるよね、ということは分かるため)

あとは全国の「民主党票」を測るのと同時に各都道府県ごとも測ることもできるようにして、

```minsyu_analysis.py
def onePref(one_pref_data):
    one_pref_minsyu_vote = 0
    one_pref_rikken_kokumin_vote = 0

    for city in one_pref_data:
        one_pref_minsyu_result = minsyu(city["kokumin"], city["rikken"])
        one_pref_minsyu_vote += one_pref_minsyu_result[0]
        one_pref_rikken_kokumin_vote += one_pref_minsyu_result[1]

    return [one_pref_minsyu_vote, one_pref_rikken_kokumin_vote]
```

```minsyu_analysis.py
japan_minsyu_vote = 0
japan_rikken_kokumin_vote = 0

pref_result_array = []

for prefecture in j:
    one_prefecture_data = j[prefecture]

    one_pref_minsyu_result = onePref(one_prefecture_data)

    rate = round((one_pref_minsyu_result[0] / one_pref_minsyu_result[1]) * 100, 2)
    pref_result_array.append([prefecture, one_pref_minsyu_result[0], rate])

    japan_minsyu_vote += one_pref_minsyu_result[0]
    japan_rikken_kokumin_vote += one_pref_minsyu_result[1]

print("民主党票(最低値):", japan_minsyu_vote, "\n割合(%, 小数点第三位を四捨五入):", round((japan_minsyu_vote / japan_rikken_kokumin_vote) * 100, 2))
```

完成です。

## 結果
**※あくまでも「最低このくらいあるよ」ということであり、正確な票数ではない可能性があることに留意してください。**

### 全国

**906,886票**

となりました。（大体北九州市の人口(2024/10/1時点)と同じくらい)

立憲か国民に投票した人の中の最低**約5.11%**(小数点第三位を四捨五入)は「民主党」と書いていることになります。

### 各都道府県ごと
各都道府県ごとは以下のようになりました。

<table>
  <thead>
    <tr>
      <th></th>
      <th>都道府県</th>
      <th>民主党票(最低値)</th>
      <th>割合(%, 小数点第三位を四捨五入)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>北海道</td>
      <td>45433</td>
      <td>5.12</td>
    </tr>
    <tr>
      <th>1</th>
      <td>青森県</td>
      <td>17705</td>
      <td>9.73</td>
    </tr>
    <tr>
      <th>2</th>
      <td>秋田県</td>
      <td>11039</td>
      <td>6.68</td>
    </tr>
    <tr>
      <th>3</th>
      <td>岩手県</td>
      <td>12200</td>
      <td>5.6</td>
    </tr>
    <tr>
      <th>4</th>
      <td>福島県</td>
      <td>23079</td>
      <td>7.77</td>
    </tr>
    <tr>
      <th>5</th>
      <td>山形県</td>
      <td>23409</td>
      <td>13.35</td>
    </tr>
    <tr>
      <th>6</th>
      <td>宮城県</td>
      <td>19410</td>
      <td>5.51</td>
    </tr>
    <tr>
      <th>7</th>
      <td>新潟県</td>
      <td>14972</td>
      <td>3.84</td>
    </tr>
    <tr>
      <th>8</th>
      <td>茨城県</td>
      <td>30973</td>
      <td>8.19</td>
    </tr>
    <tr>
      <th>9</th>
      <td>栃木県</td>
      <td>19475</td>
      <td>7.39</td>
    </tr>
    <tr>
      <th>10</th>
      <td>群馬県</td>
      <td>15892</td>
      <td>7.08</td>
    </tr>
    <tr>
      <th>11</th>
      <td>千葉県</td>
      <td>30711</td>
      <td>3.02</td>
    </tr>
    <tr>
      <th>12</th>
      <td>埼玉県</td>
      <td>44951</td>
      <td>4.09</td>
    </tr>
    <tr>
      <th>13</th>
      <td>東京都</td>
      <td>60173</td>
      <td>2.68</td>
    </tr>
    <tr>
      <th>14</th>
      <td>神奈川県</td>
      <td>20603</td>
      <td>1.4</td>
    </tr>
    <tr>
      <th>15</th>
      <td>山梨県</td>
      <td>17103</td>
      <td>13.92</td>
    </tr>
    <tr>
      <th>16</th>
      <td>静岡県</td>
      <td>24360</td>
      <td>4.29</td>
    </tr>
    <tr>
      <th>17</th>
      <td>長野県</td>
      <td>34376</td>
      <td>9.65</td>
    </tr>
    <tr>
      <th>18</th>
      <td>愛知県</td>
      <td>36666</td>
      <td>3.07</td>
    </tr>
    <tr>
      <th>19</th>
      <td>岐阜県</td>
      <td>30705</td>
      <td>10.93</td>
    </tr>
    <tr>
      <th>20</th>
      <td>富山県</td>
      <td>9880</td>
      <td>7.22</td>
    </tr>
    <tr>
      <th>21</th>
      <td>石川県</td>
      <td>16351</td>
      <td>10.13</td>
    </tr>
    <tr>
      <th>22</th>
      <td>福井県</td>
      <td>8326</td>
      <td>7.52</td>
    </tr>
    <tr>
      <th>23</th>
      <td>滋賀県</td>
      <td>10782</td>
      <td>6.68</td>
    </tr>
    <tr>
      <th>24</th>
      <td>三重県</td>
      <td>14641</td>
      <td>5.06</td>
    </tr>
    <tr>
      <th>25</th>
      <td>京都府</td>
      <td>13716</td>
      <td>4.61</td>
    </tr>
    <tr>
      <th>26</th>
      <td>奈良県</td>
      <td>19290</td>
      <td>11.85</td>
    </tr>
    <tr>
      <th>27</th>
      <td>大阪府</td>
      <td>35749</td>
      <td>5.31</td>
    </tr>
    <tr>
      <th>28</th>
      <td>和歌山県</td>
      <td>5669</td>
      <td>7.0</td>
    </tr>
    <tr>
      <th>29</th>
      <td>兵庫県</td>
      <td>24093</td>
      <td>3.85</td>
    </tr>
    <tr>
      <th>30</th>
      <td>岡山県</td>
      <td>14050</td>
      <td>5.99</td>
    </tr>
    <tr>
      <th>31</th>
      <td>広島県</td>
      <td>17733</td>
      <td>5.26</td>
    </tr>
    <tr>
      <th>32</th>
      <td>鳥取県</td>
      <td>6742</td>
      <td>11.7</td>
    </tr>
    <tr>
      <th>33</th>
      <td>島根県</td>
      <td>7570</td>
      <td>8.25</td>
    </tr>
    <tr>
      <th>34</th>
      <td>山口県</td>
      <td>13238</td>
      <td>8.33</td>
    </tr>
    <tr>
      <th>35</th>
      <td>香川県</td>
      <td>11853</td>
      <td>7.16</td>
    </tr>
    <tr>
      <th>36</th>
      <td>徳島県</td>
      <td>9108</td>
      <td>10.89</td>
    </tr>
    <tr>
      <th>37</th>
      <td>愛媛県</td>
      <td>15986</td>
      <td>8.43</td>
    </tr>
    <tr>
      <th>38</th>
      <td>高知県</td>
      <td>6813</td>
      <td>8.98</td>
    </tr>
    <tr>
      <th>39</th>
      <td>福岡県</td>
      <td>30423</td>
      <td>4.68</td>
    </tr>
    <tr>
      <th>40</th>
      <td>佐賀県</td>
      <td>8095</td>
      <td>6.22</td>
    </tr>
    <tr>
      <th>41</th>
      <td>長崎県</td>
      <td>10997</td>
      <td>6.38</td>
    </tr>
    <tr>
      <th>42</th>
      <td>大分県</td>
      <td>8234</td>
      <td>5.25</td>
    </tr>
    <tr>
      <th>43</th>
      <td>熊本県</td>
      <td>14614</td>
      <td>7.53</td>
    </tr>
    <tr>
      <th>44</th>
      <td>宮崎県</td>
      <td>7793</td>
      <td>5.97</td>
    </tr>
    <tr>
      <th>45</th>
      <td>鹿児島県</td>
      <td>15607</td>
      <td>8.02</td>
    </tr>
    <tr>
      <th>46</th>
      <td>沖縄県</td>
      <td>16298</td>
      <td>11.84</td>
    </tr>
  </tbody>
</table>

## さいごに
上記とは別に「全国各自治体の中で一番民主党票の最低割合が一番高い所の割合」も求めたのですが、その自治体の民主党票の割合が

**43.74%**

となりました。(多い...)

しかも母数がそれなりに多い自治体であったのでこの結果は驚きです。(ただあくまでも最低割合なので実際はこれより割合の多い自治体が存在する可能性もある)

この結果をうまく応用すれば投票結果から見る地方ごとの国政に関する関心度とかも測れそうだなーと思いました。

## 分析過程
分析過程は以下の通りです。もし何かここが足りない等あれば教えてください🙇‍♂️

https://github.com/akahoshi1421/minsyu-analysis