比例代表選挙のシミュレーションで使った得票率の分布についての補足

 これまで比例代表選挙のドント方式や最大剰余方式で議席の配分がどのようになるかシミュレーションを行ってきた。

 このシミュレーションでの得票率は0~1の一様分布の中からランダムに得られた数値 $U$ をそのまま使うのではなく、その数値 $U$ を次の数式で変換した後に全政党の得票率 $p_{i}$ の合計が1( $\sum_{i=1}^{n} p_{i}=1$ )になるように正規化した数値を利用した。

\begin{align}
\label{eq:乱数生成式}
正規化前得票率 &=\frac{1}{1+e^{10U}}\\
&=1/(1+EXP(10*RAND())) &(Excel表記)
\end{align}

 その結果、得票率の分布は得票率の高い順に並べると次のグラフのようになったのだが、このようなグラフになる理由についての説明は省略してきた。

グラフ:私のシミュレーションでの12政党の得票率の分布(20260703-1-04.png)

 今回は、私のシミュレーションで生成した得票率の分布が上のグラフのようになる理由について深掘りする。

 【順序統計量とベータ分布について #Gemini と #ChatGPT に教わる】に書いたとおり、0~1の一様分布の中からランダムに選んだ $n$ 個のデータを小さい順に並べたとき、順位 $k$ の値 $X_{(k)}$ の確率密度関数 $f(x)$ は次のようになる。

\begin{equation}
f(x) = \frac{n!}{(k - 1)!(n - k)!} x^{k - 1} (1 - x)^{n - k} \label{eq:連続一様分布の順序統計量の確率密度関数}
\end{equation}

グラフ:連続一様分布の順序統計量の確率密度関数(n=12)

 $\alpha=k, \beta=n-k+1$ とすると $f(x)$ は次のようになり、ベータ分布に従うことが分かる。

\begin{empheq}[left=\empheqlbrace]{alignat}{2}
&f(x) = \frac{(\alpha + \beta - 1)!}{(\alpha - 1)!(\beta - 1)!} x^{\alpha - 1} (1 - x)^{\beta - 1} = \frac{x^{\alpha - 1} (1 - x)^{\beta - 1}}{\operatorname{B}(\alpha,\beta)}\label{eq:連続一様分布の順序統計量の確率密度関数のベータ分布表記}\\
&\operatorname{B}(\alpha,\beta) = \int_0^1 x^{\alpha - 1} (1 - x)^{\beta - 1}\,dx=\frac{(\alpha - 1)!(\beta - 1)!}{(\alpha + \beta - 1)!}\label{eq:ベータ関数}\\
& 注意:\eqref{eq:ベータ関数}は \alpha と \beta が正の整数の場合に限る \notag
\end{empheq}

 ベータ分布の平均値(期待値)$\operatorname{E}(X)$ は $\frac{\alpha}{\alpha + \beta}$ で簡単に計算できるが、この平均値は別の関数 $g(x)$ に単純に代入して利用することができない。

\begin{equation}
\operatorname{E}[g(X)] \neq g(\operatorname{E}[X]) \label{eq:期待値の利用制限}
\end{equation}

 しかし、$\frac{\alpha - 1/3}{\alpha + \beta -2/3}$ で近似できる中央値(Median) $\operatorname{Med}(X)$ は、$g(x)$ が単調増加または単調減少関数ならば次のように利用できる。

\begin{equation}
\operatorname{Med}(g(X)) = g(\operatorname{Med}(X)) \label{eq:中央値の単調関数への代入}
\end{equation}

 また、分位点 $\operatorname{Q}_{p}​(X)$($p$分位点)でも同様である。

\begin{empheq}[left=\empheqlbrace]{alignat}{2}
&\operatorname{Q}_{p}​(g(X))=g(\operatorname{Q}_{p}​(X)) &\ &(単調増加の場合)\label{eq:分位点の単調増加関数への代入}\\
&\operatorname{Q}_{1-p}​(g(X))=g(\operatorname{Q}_{p}​(X)) &\ &(単調減少の場合)\label{eq:分位点の単調減少関数への代入}
\end{empheq}

 0~1の一様分布の中からランダムに選んだ $n$ 個のデータを小さい順に並べたとき、順位 $k$ の値 $X_{(k)}$ の累積分布関数 $F(x)$ は次のようになる。

\begin{equation}
F(x) = \sum_{j = k}^{n} \frac{n!}{j!(n - j)!} x^{j} (1 - x)^{n - j} \label{eq:連続一様分布の順序統計量の累積分布関数}
\end{equation}

グラフ:連続一様分布の順序統計量の累積分布関数(n=12)

 このグラフから、各順位 $k$ の中央値 $\operatorname{Med}(X)$ や $p$分位点 $\operatorname{Q}_{p}​(X)$ を見積もれる。その値を次の $g(x)$ の $x$ に代入すると、\eqref{eq:乱数生成式}で生成した正規化前得票率が順位 $k$ に対してどのように分布しているか見積もれる。

\begin{equation}
g(x)=\frac{1}{1+e^{10x}}\label{eq:正規化前得票率}
\end{equation}

 実際にシミュレーションで生成した正規化前得票率の分布を合わせてグラフにすると次のようになり、シミュレーション結果の中央値や下から90%の値、下から10%の値は、中央値 $\operatorname{Med}(X)$ や $p$分位点 $\operatorname{Q}_{p}​(X)$ を\eqref{eq:正規化前得票率}に代入した $g(\operatorname{Med}(X))$、$g(\operatorname{Q}_{0.1}​(X))$、$g(\operatorname{Q}_{0.9}​(X))$ に一致した。

グラフ:私のシミュレーションでの12政党の正規化前得票率の分布

 このグラフの「参考中央値」とは $\operatorname{Med}(X)$ の近似値 $\frac{\alpha - 1/3}{\alpha + \beta -2/3}=\frac{k - 1/3}{n + 1/3}$ を代入して求めた $g(\operatorname{Med}(X))$ の値である。これもシミュレーションの結果と一致している。
 正規化前なので、12政党の平均値の合計は $1$ になっていないし、中央値の合計も $1$ より小さい(12政党の「参考中央値」の合計は $0.7658…$)。このグラフの平均値や中央値を正規化しても、シミュレーションで毎回正規化した結果の平均値や中央値にはならない。しかし、正規化後得票率の傾向は分かりそうである。実際に正規化前得票率の平均値と中央値を正規化して、シミュレーションの結果と比べてみたら、次のように近い値にはなった。

グラフ:私のシミュレーションでの12政党の正規化後得票率の分布

 このグラフの「参考中央値」は正規化前得票率の中央値 $\operatorname{Med}(g(X))$ を正規化したもので、「参考平均値」は正規化前得票率の平均値を正規化したものである。

 さて、正規化前得票率の各順位 $k$ の中央値 $\operatorname{Med}(g(X))$ はシミュレーションを行わなくても次の式で近似値が分かる。

\begin{align}
\operatorname{Med}(g(X))=g(\operatorname{Med}(X))=\frac{1}{1+e^{10(\frac{k - 1/3}{n + 1/3})}}\label{eq:正規化前得票率の中央値}
\end{align}

 これを全政党の得票率の合計が $1$ になるように正規化すれば、シミュレーションでの正規化後得票率の中央値 $\operatorname{Med}(p_{i})$ は次の式で近似できそうである。

\begin{empheq}[left=\empheqlbrace]{alignat}{2}
&p_{\mathrm{med}}(k,n):=\frac{\operatorname{Med}(g(X))}{A}=\frac{1}{A \left( 1+e^{10(\frac{k - 1/3}{n + 1/3})} \right) }\\
&A=\sum_{k=1}^{n}\frac{1}{1+e^{10(\frac{k - 1/3}{n + 1/3})}}\label{eq:正規化定数}\\
&\operatorname{Med}(p_{i}) \approx p_{\mathrm{med}}(i,n)\label{eq:正規化前得票率の中央値の正規化}
\end{empheq}

 ところで、1位政党の正規化後得票率だけ $0$ に近い値が存在しないのだが、正規化前得票率が $0$ に近くても、他の政党はさらに小さい得票率なので、12政党の正規化前得票率の合計が小さくなり、正規化することで $0$ から離れてしまうことが原因である。そもそも、1位政党の正規化後得票率は $\frac{1}{n}$(12政党の場合は $0.0833…$)より小さくなり得ない。
 逆に、1位政党の正規化後得票率が $1$ に近くなるのは、他の政党の正規化前得票率が極端に低い場合で、例えば、1位政党の正規化前得票率が $0.4$ でも、他の政党の正規化前得票率の合計が $0.02$ しかないと、1位政党の正規化後得票率が $0.95$ を超えてしまう。

 参考のため、シミュレーションで生成された得票率の0.01幅区間の件数をグラフにしたものを示しておく。

グラフ:シミュレーションで生成された得票率の度数分布多角形(n=12)

 以上、比例代表選挙に関する私のシミュレーションで使った得票率の分布について深掘りしてみた。

日記
シェアする
いしい@長文をフォローする

コメント

  1. 正規化後得票率の方の「最大値」に関しては、理論的に 1/k を超えることはない。2位、3位、4位、5位、10位の最大値は、それぞれ、0.5、0.333…、0.25、0.2、0.1を超えることはない。
    これは、長さ 1 の棒を n 個に折って、長い順に並べた時の各順位の長さの最大値と同じ。そのような議論では、通常はランダムに折るので、綺麗な数式で表せるのだが、私のシミュレーションでは、この記事のように得票率を生成しているので、最終的な数式はあまり綺麗にならなそうなので、度数分布のグラフを作成するだけにした。

タイトルとURLをコピーしました