「新しいボタンのデザインに変えたら、クリック率が 4.8% から 5.8% に上がった」——この 1% の差は本物でしょうか、それともたまたまでしょうか。「最新の世論調査で内閣支持率は 38%」と報じられたとき、その背後にある「誤差 ±3%」という但し書きは何を意味するのでしょうか。工場で 200 個を検査して不良品が 0 個だったとき、「不良率はゼロです」と胸を張ってよいのでしょうか。
これらはすべて、母比率(proportion) $p$ の推定と検定の問題です。比率は「成功か失敗か」「クリックしたかしなかったか」「賛成か反対か」という二値の結果が、母集団全体でどのくらいの割合を占めるかを表す、もっとも身近な統計量の一つです。一見すると「成功回数 ÷ 試行回数」を計算するだけの単純な話に見えますが、実はその不確実性を正しく評価しようとすると、思いのほか奥が深いのです。
この記事を読むと、次のような場面で正しい判断ができるようになります。ひとつは A/Bテスト — ウェブサイトやアプリの改善施策が本当に効果があったかを統計的に判定する場面。もうひとつは 世論調査・品質管理 — 限られた標本から母集団の支持率や不良率を、適切な誤差つきで報告する場面。どちらも「点推定だけでなく、その推定がどれだけ信頼できるか」を数値で語る力が求められます。
本記事の内容
- 比率の点推定 $\hat{p} = x/n$ とその標準誤差の意味
- もっとも素朴な Wald信頼区間 と、それが端($p \approx 0$ や $1$)で破綻する理由
- 実務で第一候補となる Wilsonスコア区間 の導出
- 厳密だが保守的な Clopper-Pearson区間、簡便な Agresti-Coull区間
- 1標本・2標本の比率検定、小標本で厳密な 二項検定
- 必要な標本サイズの設計(誤差 ±3% には何人必要か)
- ベイズ的アプローチ(ベータ事後分布)との比較
- statsmodels を使った実装と、A/Bテスト・世論調査・品質管理への応用
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
母比率を推定するとは
まず、状況をはっきりさせましょう。私たちの関心は、母集団全体での「成功」の割合 $p$ です。たとえば「全ユーザーのうち広告をクリックする人の割合」「全有権者のうち内閣を支持する人の割合」。これは決して直接観測できません。全員に聞くことはできないからです。
そこで、母集団から $n$ 回ぶんの標本を取り出します。「広告を $n$ 回表示してクリックされた回数を数える」「$n$ 人に支持するかどうか尋ねる」。その結果、$x$ 回の成功が観測されたとします。この $x$ は試行のたびに変わる確率変数で、母比率 $p$ のベルヌーイ試行を $n$ 回独立に繰り返したと考えれば、二項分布に従います。
$$ \begin{equation} x \sim \mathrm{Binomial}(n, p) \end{equation} $$
イメージとしては、下の図のように「一部のサンプルを見て、全体の比率 $p$ を言い当てるゲーム」です。$n=40$ 個のうち青い玉(成功)が $14$ 個あったとき、私たちは $\hat{p} = 14/40 = 0.35$ と見積もります。しかし、別の $40$ 個を取ればまた違う比率になるはずで、「本当に $p$ をこの精度で言い切ってよいのか」という疑問が当然わきます。

この図が示すのは、推定には必ずばらつき(不確実性)が伴うということです。標本が変われば点推定も変わります。だからこそ、「点で答える」だけでなく「どのくらいの幅で答えるべきか」を考える区間推定が必要になります。まずはその出発点である点推定と、ばらつきの大きさを表す標準誤差から見ていきましょう。
点推定と標準誤差
母比率 $p$ のもっとも自然な推定量は、観測された成功割合そのものです。
$$ \begin{equation} \hat{p} = \frac{x}{n} \end{equation} $$
これを 標本比率(sample proportion) と呼びます。$\hat{p}$ は二項分布の最尤推定量でもあり、$E[\hat{p}] = p$ を満たす不偏推定量です。つまり「平均的には正しい値を当てる」推定量です。
問題はそのばらつきです。$x \sim \mathrm{Binomial}(n, p)$ の分散は $\mathrm{Var}[x] = np(1-p)$ なので、$\hat{p} = x/n$ の分散は次のようになります。$\hat{p}$ は $x$ を定数 $n$ で割ったものなので、分散は $1/n^2$ 倍されます。
$$ \begin{equation} \mathrm{Var}[\hat{p}] = \frac{1}{n^2}\,\mathrm{Var}[x] = \frac{np(1-p)}{n^2} = \frac{p(1-p)}{n} \end{equation} $$
その平方根が 標準誤差(standard error, SE) です。実際には $p$ は未知なので、推定値 $\hat{p}$ を代入します。
$$ \begin{equation} \mathrm{SE}(\hat{p}) = \sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \end{equation} $$
この式から二つの重要なことが読み取れます。第一に、標準誤差は $\sqrt{n}$ に反比例して縮みます。標本を増やせば精度は上がりますが、その効果は逓減します(精度を倍にするには $n$ を $4$ 倍にする必要がある)。第二に、$\hat{p}(1-\hat{p})$ は $\hat{p}=0.5$ で最大、$\hat{p}=0$ または $1$ で $0$ になります。つまり比率が $0.5$ のときがもっともばらつきが大きく、端に寄るほどばらつきは小さくなります。
ここまでで「点推定 $\pm$ 標準誤差」という材料がそろいました。これを使えば信頼区間が作れそうです。次のセクションで、もっとも素朴な作り方とその落とし穴を見ていきます。
Wald区間とその破綻
中心極限定理によれば、$n$ が十分大きいとき $\hat{p}$ はおおよそ正規分布に従います。
$$ \begin{equation} \hat{p} \approx \mathcal{N}\!\left(p,\ \frac{p(1-p)}{n}\right) \end{equation} $$
この正規近似をそのまま使い、標準誤差に標準正規分布の $97.5$ パーセント点 $z_{0.975} \approx 1.96$ を掛けて両側に振ると、もっとも教科書的な信頼区間が得られます。これを Wald区間(Wald interval) と呼びます。
$$ \begin{equation} \hat{p} \pm z_{1-\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}} \end{equation} $$
シンプルで覚えやすく、多くの入門書がこれを紹介します。ところが、この区間には深刻な弱点があります。比率 $p$ が $0$ や $1$ に近いとき、あるいは標本 $n$ が小さいとき、実際の信頼水準が公称の 95% を大きく下回るのです。
なぜそうなるのか、直感的に考えてみましょう。Wald区間は標準誤差を $\hat{p}$ から計算します。もし運悪く $x=0$(成功ゼロ)が観測されると、$\hat{p}=0$ なので $\mathrm{SE}=\sqrt{0 \cdot 1/n}=0$ となり、区間は $[0,0]$ という幅ゼロの「点」に潰れてしまいます。これでは真の $p$ を絶対に捕まえられません。同様に $x=n$ なら $[1,1]$ に潰れます。端に近いほど、こうした破綻が起きやすくなります。
この「信頼区間が真の値をどのくらいの割合で捕まえるか」を 被覆確率(coverage probability) と呼びます。理想的には、95% 信頼区間なら被覆確率は $p$ の値によらず常に $0.95$ であってほしい。実際にどうなるかを、すべての $p$ について計算してみたのが次の図です。

この図から、Wald区間(赤)の被覆確率が $p$ が $0$ や $1$ に近づくと急落し、$0.6$ を下回るところまであることがわかります。「95% 信頼」と謳いながら、実際には $90\%$ も捕まえられていない領域が広く存在します。一方、後で詳しく見る Wilson区間(青)は、全域で $0.95$ の周りを保っています。ギザギザしているのは二項分布が離散だからで、これはどの手法でも避けられませんが、Wilson は系統的な過小被覆を起こしません。
つまり Wald区間は、理論の出発点としては重要ですが、実務でそのまま使うと「思っているより信頼できない」区間を作ってしまうのです。では、どう改善すればよいのでしょうか。鍵は「標準誤差を $\hat{p}$ から計算する」というところにありました。次のセクションで、この問題を根本から解決する Wilson区間を導出します。
Wilsonスコア区間
Wald区間の破綻の元凶は、標準誤差の中の $p$ を $\hat{p}$ で置き換えてしまったことにあります。$\hat{p}$ が偶然 $0$ になれば標準誤差も $0$ になる、という不安定さです。Wilson の発想はシンプルです。「$p$ を $\hat{p}$ で置き換える前」に区間を解くのです。
正規近似のもとで、標準化した量が $\pm z$ の範囲に入る確率が $1-\alpha$ になる、という条件を考えます。ここで標準誤差には真の $p$ を使います。
$$ \begin{equation} -z \le \frac{\hat{p} – p}{\sqrt{p(1-p)/n}} \le z \end{equation} $$
これを $p$ について解くのが Wilson区間です。両端の不等式は対称なので、等号の場合 $\dfrac{\hat{p}-p}{\sqrt{p(1-p)/n}} = \pm z$ を $p$ について解けばよく、両辺を $2$ 乗して整理します。
$$ \begin{equation} (\hat{p} – p)^2 = z^2\,\frac{p(1-p)}{n} \end{equation} $$
左辺を展開し、右辺を移項して $p$ の二次方程式の形にまとめます。$\hat{p}^2 – 2\hat{p}p + p^2 = \frac{z^2}{n}(p – p^2)$ を整理すると、
$$ \begin{equation} \left(1 + \frac{z^2}{n}\right)p^2 – \left(2\hat{p} + \frac{z^2}{n}\right)p + \hat{p}^2 = 0 \end{equation} $$
という $p$ についての二次方程式が得られます。あとは解の公式を適用するだけです。判別式を計算して両辺を $1 + z^2/n$ で割ると、中心と幅が分離した次の形にきれいにまとまります。
$$ \begin{equation} p_{\pm} = \frac{\hat{p} + \dfrac{z^2}{2n} \pm z\sqrt{\dfrac{\hat{p}(1-\hat{p})}{n} + \dfrac{z^2}{4n^2}}}{1 + \dfrac{z^2}{n}} \end{equation} $$
この式の構造を読み解きましょう。分子の中心は $\hat{p} + z^2/(2n)$ で、これは素朴な $\hat{p}$ を $0.5$ のほうへ少し引き寄せた値です。標本が小さい($n$ が小さい)ほど引き寄せが強くなります。さらに分母の $1 + z^2/n$ で全体を割ることで、区間が $[0,1]$ の内側に収まるよう自然に補正されます。$x=0$ でも区間は点に潰れず、ちゃんと正の幅を持ちます。これが Wald との決定的な違いです。
実際に各手法の区間を並べてみると、その差が一目でわかります。

この図から重要な点が読み取れます。$\hat{p}$ が $0.2$ 程度のときは 4 手法ともほぼ同じ区間を返しますが、$x=0$(成功ゼロ)の極端な場合、Wald は $[0,0]$ に潰れて使い物にならないのに対し、Wilson・Clopper-Pearson・Agresti-Coull はいずれも $[0,\,0.1\!\sim\!0.13]$ という妥当な上限つきの区間を返しています。「不良品が $0$ 個だったから不良率はゼロ」ではなく、「不良率は高々 $11\%$ 程度」と正しく言えるわけです。
Wilson区間は計算も軽く、被覆も良好で、実務での第一候補になります。ただし「厳密に 95% 以上を保証したい」という規制対応のような場面では、もう一段階保守的な手法が好まれます。次にその Clopper-Pearson区間を見ましょう。
Clopper-Pearson厳密区間
Wald や Wilson は正規近似に頼っています。近似である以上、被覆確率はどうしても公称水準の周りで上下に揺れます。「どんな $p$ でも被覆確率が絶対に 95% を下回らない」ことを保証したいなら、近似を捨てて二項分布そのものから区間を作る必要があります。それが Clopper-Pearson区間(exact interval) です。
考え方は信頼区間の定義に忠実です。下限 $p_L$ は「真の比率がこれだったら、観測された $x$ 以上の成功が出る確率がちょうど $\alpha/2$ になる」値、上限 $p_U$ は「$x$ 以下の成功が出る確率がちょうど $\alpha/2$ になる」値として定めます。
$$ \begin{equation} \sum_{k=x}^{n}\binom{n}{k}p_L^{\,k}(1-p_L)^{n-k} = \frac{\alpha}{2}, \quad \sum_{k=0}^{x}\binom{n}{k}p_U^{\,k}(1-p_U)^{n-k} = \frac{\alpha}{2} \end{equation} $$
これらの方程式は、二項分布とベータ分布の関係を使うと閉じた形で解けます。二項分布の累積和はベータ分布の累積分布で書き換えられるため、ベータ分布の分位点 $\mathrm{Beta}^{-1}$ を使って次のように表せます($B^{-1}(q;\,a,\,b)$ はベータ分布 $\mathrm{Beta}(a,b)$ の $q$ 分位点)。
$$ \begin{equation} p_L = B^{-1}\!\left(\frac{\alpha}{2};\ x,\ n-x+1\right), \quad p_U = B^{-1}\!\left(1-\frac{\alpha}{2};\ x+1,\ n-x\right) \end{equation} $$
ベータ分布との接続は偶然ではなく、ベータ分布の完全ガイドで扱う二項分布とベータ分布の双対性そのものです。この関係のおかげで、和の方程式を数値的に解く代わりにベータ分位点を一発で呼ぶだけで済みます。
Clopper-Pearson は「被覆確率が必ず 95% 以上」という強い保証を持つ一方、その代償として 保守的(区間が広め)になります。離散分布で「絶対に下回らない」を満たそうとすると、どうしても余裕を持たせる必要があるからです。手法ごとの被覆確率を標本サイズ $n$ ごとに比較すると、この性格の違いがはっきり見えます。

この図から、Wald(赤)は小標本で被覆が $0.95$ を下回りがちなのに対し、Clopper-Pearson(緑)は常に $0.95$ 以上で、特に小標本では $0.97$ 近くまで過剰に被覆していることがわかります。「安全側に倒れている」とも言えますが、その分区間は広くなります。Wilson(青)と Agresti-Coull(紫)は $0.95$ のすぐ上下をバランスよく推移しており、過不足が少ないことが見て取れます。
なお、図に登場した Agresti-Coull区間 は「成功と失敗をそれぞれ $z^2/2 \approx 2$ 回ぶん水増ししてから Wald を適用する」という簡便法です。$\tilde{n} = n + z^2$、$\tilde{p} = (x + z^2/2)/\tilde{n}$ とおき、$\tilde{p} \pm z\sqrt{\tilde{p}(1-\tilde{p})/\tilde{n}}$ で区間を作ります。「2つ成功・2つ失敗を足す」という覚えやすさで、Wilson に近い良好な被覆を得られます。
ここまでで区間推定の主要な手法がそろいました。次は視点を変えて、「ある値と比べて比率が違うか」を判定する検定に進みます。
1標本・2標本比率検定
区間推定は「$p$ はどのくらいか」を答えますが、検定は「$p$ は特定の値か/2つの $p$ は同じか」というイエス・ノーの問いに答えます。両者は表裏一体で、検定統計量の作り方も標準誤差の発想がそのまま使えます。
1標本比率検定
「このコインの表が出る確率は本当に $0.5$ か」「サイトの直帰率は基準値 $0.5$ と違うか」のような問いを考えます。帰無仮説を $H_0: p = p_0$ とし、観測 $\hat{p}$ がそこからどれだけ離れているかを標準化します。ここで標準誤差は帰無仮説の値 $p_0$ で計算するのがポイントです(検定では「帰無仮説が正しい世界」を基準にするため)。
$$ \begin{equation} z = \frac{\hat{p} – p_0}{\sqrt{p_0(1-p_0)/n}} \end{equation} $$
たとえば $n=50$ 回投げて表が $x=18$ 回($\hat{p}=0.36$)出たとき、$p_0=0.5$ に対する検定統計量は $z = (0.36-0.5)/\sqrt{0.25/50} = -1.98$ で、両側 $p$ 値は約 $0.048$。有意水準 5% ぎりぎりで「公平とは言えない」という結論になります。$p$ 値の解釈そのものはp値の定義と正しい解釈を参照してください。
ただしこの $z$ 検定も正規近似です。$n$ が小さいときや $p_0$ が端に近いときは、後述の二項検定で厳密に評価すべきです。
2標本比率検定
A/Bテストの本丸は、「2つの群の比率が違うか」を判定する 2標本比率検定です。群 A で $x_A/n_A$、群 B で $x_B/n_B$ が観測されたとき、差 $\hat{p}_B – \hat{p}_A$ を評価します。帰無仮説 $H_0: p_A = p_B$ のもとでは両群の比率は共通なので、両群を合わせた プール比率(pooled proportion) で標準誤差を見積もります。
$$ \begin{equation} \hat{p}_{\text{pool}} = \frac{x_A + x_B}{n_A + n_B}, \quad z = \frac{\hat{p}_B – \hat{p}_A}{\sqrt{\hat{p}_{\text{pool}}(1-\hat{p}_{\text{pool}})\left(\dfrac{1}{n_A} + \dfrac{1}{n_B}\right)}} \end{equation} $$
一方、差の信頼区間を作るときは帰無仮説を仮定しないので、各群の標準誤差をそのまま合成します(独立な確率変数の差の分散は分散の和)。
$$ \begin{equation} (\hat{p}_B – \hat{p}_A) \pm z_{1-\alpha/2}\sqrt{\frac{\hat{p}_A(1-\hat{p}_A)}{n_A} + \frac{\hat{p}_B(1-\hat{p}_B)}{n_B}} \end{equation} $$
「検定にはプール、区間には非プール」という使い分けに注意してください。理屈はどちらも「帰無仮説を仮定するか否か」で決まります。図にすると、各群の標本分布から差の分布を作り、その区間が $0$ をまたぐかを見る、という流れになります。

この図から、2群の比率分布(左)はかなり重なっていますが、その差の分布(右)を見ると 95% 信頼区間が $0$ を含まず、差が統計的に意味を持つ可能性が高いことが読み取れます。区間が $0$ を含まないことと、検定で帰無仮説が棄却されることは(近似のうえで)対応しています。
二項検定(厳密)
$n$ が小さく正規近似が信用できないときは、二項分布そのものから $p$ 値を計算する 二項検定(binomial test) を使います。帰無仮説 $H_0: p = p_0$ のもとで、観測された $x$ と「同じかそれ以上に極端な」結果が出る確率を二項分布で直接足し上げます。両側検定では、観測点の確率以下となるすべての $k$ の確率を合計します。
$$ \begin{equation} p\text{-value} = \sum_{k:\ \mathrm{Bin}(k;n,p_0)\,\le\,\mathrm{Bin}(x;n,p_0)} \binom{n}{k}p_0^{\,k}(1-p_0)^{n-k} \end{equation} $$
先ほどの「$n=50$、$x=18$、$p_0=0.5$」を二項検定で厳密に計算すると $p$ 値は約 $0.065$ となり、正規近似の $0.048$ とは結論が変わります(厳密版では 5% で有意にならない)。小標本ではこの差が無視できないので、迷ったら厳密版を使うのが安全です。
なぜ正規近似がずれるのか、その根っこにあるのは「二項分布を正規分布で近似してよいか」という問題です。次に、その近似の良し悪しを図で確認します。
正規近似はいつ成り立つか
これまで何度も「正規近似」が出てきました。$\hat{p}$ が正規分布に従うという前提が、Wald区間にも $z$ 検定にも効いています。では、この近似はいつ信用できるのでしょうか。経験則としてよく使われるのが、$np \ge 5$ かつ $n(1-p) \ge 5$(より厳しくは $\ge 10$)という条件です。成功と失敗が両方とも十分な回数起きていれば近似が効く、という意味です。
これを目で確かめましょう。二項分布の確率質量関数と、対応する正規分布の密度を比率スケールで重ねてみます。

この図から、$n=200$ のとき(下段)は $p=0.1$ でも $p=0.5$ でも二項分布の形が正規曲線にぴったり重なっているのに対し、$n=20, p=0.1$(右上)では $np=2$ と小さく、二項分布が左に偏った非対称な形で正規近似が大きくずれていることがわかります。$\hat{p}$ が $0$ で頭打ちになる「壁」があるため、左に裾を引けず歪むのです。これがまさに Wald区間や $z$ 検定が小標本・端の比率で破綻する根本原因です。
近似が悪い領域では Wilson区間や Clopper-Pearson、二項検定といった「近似に頼らない/頼り方が賢い」手法に切り替える、という判断がここから導けます。次は、そもそも「どれだけ標本を集めれば十分か」という事前の設計問題に移ります。
標本サイズ設計
調査や実験を始める前に、「誤差をどこまで小さくしたいか」から逆算して必要な標本サイズを決められます。これは予算や工数に直結する、実務でもっとも重要な計算の一つです。
求めたい誤差の許容幅(区間の半幅)を $E$ とします。Wald区間の半幅は $z\sqrt{p(1-p)/n}$ なので、これを $E$ 以下にする条件を $n$ について解きます。
$$ \begin{equation} E = z\sqrt{\frac{p(1-p)}{n}} \quad\Longrightarrow\quad n = \frac{z^2\,p(1-p)}{E^2} \end{equation} $$
問題は、計画段階では $p$ が未知だということです。そこで $p(1-p)$ が最大になる 最悪ケース $p=0.5$ を使います。このとき $p(1-p)=0.25$ となり、どんな真の $p$ でも安全側の標本サイズが得られます。
$$ \begin{equation} n = \frac{z^2 \cdot 0.25}{E^2} = \frac{0.9604}{E^2} \quad (z=1.96 \text{ のとき}) \end{equation} $$
具体的に計算すると、誤差 $\pm 5\%$($E=0.05$)なら $n \approx 385$、$\pm 3\%$ なら $n \approx 1068$、$\pm 2\%$ なら $n \approx 2401$ です。世論調査でよく「約 1000 人に聞きました」と言うのは、誤差 ±3% を狙っているわけです。この $1/E^2$ という関係を図にすると、精度を上げるコストの重さが直感的にわかります。

この図から、区間幅が $1/\sqrt{n}$ で縮むため、最初は急速に狭まりますが、ある程度小さくなると以降はなかなか縮まないことがわかります。$p=0.1$ のように比率が端に寄っている場合は $p(1-p)$ が小さいので、同じ精度をより少ない標本で達成できることも見て取れます。「誤差を半分にするには標本を 4 倍」という逓減のルールを、設計時に必ず念頭に置きましょう。
ここまでは頻度論の枠組みで進めてきました。実は同じ問題をベイズの立場から見ると、区間に「確率」としての自然な解釈が与えられ、しかも結果は Wilson区間とよく一致します。次にその接続を見ましょう。
ベイズとの比較
頻度論の信頼区間は「同じ実験を無限に繰り返したとき、95% の区間が真の $p$ を含む」という、やや回りくどい解釈を持ちます。「いま手元にある区間が $p$ を含む確率が 95%」とは言えないのです。一方、ベイズの 信用区間(credible interval) なら「$p$ がこの区間に入る確率が 95%」とそのまま言えます。
ベイズでは $p$ に事前分布を置きます。二項尤度と相性のよい共役事前分布がベータ分布です。事前 $\mathrm{Beta}(a, b)$ に $x$ 回成功・$n-x$ 回失敗のデータを与えると、事後分布もベータ分布になります。
$$ \begin{equation} p \mid x \sim \mathrm{Beta}(a + x,\ b + n – x) \end{equation} $$
無情報に近い事前として、$\mathrm{Beta}(1/2, 1/2)$(ジェフリーズ事前)がよく使われます。この事後分布の中央 95% 区間を取ると、興味深いことに頻度論の Wilson区間や Clopper-Pearson区間とほとんど一致します。

この図から、$x=8, n=40$ のときのジェフリーズ事後 $\mathrm{Beta}(8.5, 32.5)$ の 95% 信用区間 $[0.099, 0.342]$ が、Wilson区間 $[0.105, 0.348]$ とほぼ重なり、やや広い Clopper-Pearson区間 $[0.091, 0.356]$ にすっぽり収まっていることが読み取れます。頻度論とベイズという立場の違いを超えて、よく設計された区間は同じような答えに収束するのです。意思決定まで踏み込んだ比較はベイズA/Bテストと意思決定で扱っています。
理論がそろったので、ここからは実際に手を動かして確かめます。statsmodels を使えば、これまでの手法はほぼ 1 行で呼び出せます。
Pythonでの実装
まずは各手法の信頼区間を計算し、Wald が端で破綻する様子を確認します。statsmodels の proportion_confint は method 引数で手法を切り替えられます。
import numpy as np
from statsmodels.stats.proportion import proportion_confint
# 4つの状況で各手法の95%信頼区間を比較
cases = [(2, 20), (8, 40), (0, 30), (25, 30)]
methods = ["normal", "wilson", "beta", "agresti_coull"] # normal=Wald, beta=Clopper-Pearson
labels = {"normal": "Wald", "wilson": "Wilson",
"beta": "Clopper-Pearson", "agresti_coull": "Agresti-Coull"}
for x, n in cases:
print(f"\n=== x={x}, n={n} (p_hat={x/n:.3f}) ===")
for m in methods:
lo, hi = proportion_confint(count=x, nobs=n, alpha=0.05, method=m)
print(f" {labels[m]:16s}: [{lo:.3f}, {hi:.3f}] 幅={hi-lo:.3f}")
出力を見ると、x=0, n=30(成功ゼロ)のケースで Wald だけが [0.000, 0.000] と幅ゼロに潰れ、ほかの 3 手法は [0.000, 0.11] 前後のまともな上限を返します。先ほどの図3と完全に一致する結果で、「不良品ゼロでも不良率の上限は語れる」ことがコードでも確認できます。Wilson と Agresti-Coull はほぼ同じ幅、Clopper-Pearson が一番広い(保守的)という関係も読み取れます。
次に、被覆確率を実際にシミュレーションで測り、Wald が公称 95% を下回ることを確かめます。
import numpy as np
from scipy import stats
from statsmodels.stats.proportion import proportion_confint
def coverage(method, n, p, n_trials=200000, seed=0):
rng = np.random.default_rng(seed)
xs = rng.binomial(n, p, n_trials)
hit = 0
# ユニークな x ごとに区間を計算して効率化
for x in np.unique(xs):
lo, hi = proportion_confint(x, n, alpha=0.05, method=method)
cnt = np.sum(xs == x)
hit += cnt * ((lo <= p) & (p <= hi))
return hit / n_trials
n, p = 40, 0.05 # 端に近い比率
for m in ["normal", "wilson", "beta"]:
cov = coverage(m, n, p)
print(f"{m:8s}: 被覆確率 = {cov:.3f}")
このシミュレーションでは、normal(Wald)の被覆確率が $0.95$ を大きく下回る一方、wilson は $0.95$ 前後、beta(Clopper-Pearson)は $0.95$ 以上を保ちます。「真の比率が端に寄っているとき、Wald は名ばかりの 95% になる」という理論的予測が、乱数実験で裏づけられました。品質管理のように低い不良率を扱う現場ほど、Wald を避けるべき理由がここにあります。
続いて検定です。1標本の $z$ 検定・二項検定・2標本検定をまとめて実行します。
import numpy as np
from scipy.stats import binomtest
from statsmodels.stats.proportion import proportions_ztest, test_proportions_2indep
# --- 1標本: コインの公平性 (n=50, x=18, p0=0.5) ---
x, n, p0 = 18, 50, 0.5
z, pval = proportions_ztest(count=x, nobs=n, value=p0, prop_var=p0)
print(f"1標本z検定 : z={z:.3f}, p={pval:.4f}")
bt = binomtest(x, n, p0, alternative="two-sided")
print(f"二項検定(厳密): p={bt.pvalue:.4f}")
# --- 2標本: A/Bテスト ---
xA, nA = 240, 5000 # A群 4.8%
xB, nB = 290, 5000 # B群 5.8%
z2, p2 = proportions_ztest([xB, xA], [nB, nA])
print(f"2標本z検定 : z={z2:.3f}, p={p2:.4f}")
実行すると、1標本では $z$ 検定の $p$ 値が約 $0.048$(5% で有意)なのに対し、二項検定の厳密 $p$ 値は約 $0.065$(有意でない)となり、小標本では近似と厳密で結論が分かれることがはっきりします。A/Bテストでは $z \approx 2.23$、$p \approx 0.026$ で、5% 水準で「B のほうが優れている」と判定されます。迷ったら厳密版を、$n$ が大きければ近似版をという実務指針が、この数字の差から読み取れます。
最後に、A/Bテストの結果を差の信頼区間とともに可視化します。
import numpy as np
from scipy import stats
xA, nA, xB, nB = 240, 5000, 290, 5000
pA, pB = xA/nA, xB/nB
z = 1.96
# 差の95%信頼区間 (非プール)
se_diff = np.sqrt(pA*(1-pA)/nA + pB*(1-pB)/nB)
diff = pB - pA
lo, hi = diff - z*se_diff, diff + z*se_diff
print(f"CV率 A={pA*100:.1f}% B={pB*100:.1f}%")
print(f"差 = {diff*100:.2f}% 95%CI = [{lo*100:.2f}%, {hi*100:.2f}%]")
出力は「差 = 1.00%、95%CI = [0.12%, 1.88%]」となります。信頼区間が $0\%$ を含まないので、「B の改善は偶然では説明しにくい」と結論できます。同時に「効果は 0.1〜1.9% 程度」と幅で語れるのが区間推定の強みです。検定の $p$ 値だけでは「有意かどうか」しか分かりませんが、区間まで出せば効果の大きさまで読者に伝えられます。
応用と手法の選び方
ここまでの道具を、実際の応用先に当てはめてみましょう。
- A/Bテスト:2標本比率検定 + 差の信頼区間。「有意か」だけでなく「効果はどのくらいか」を区間で報告する。サンプルが十分大きいので $z$ 検定でよいが、効果を語るなら差の CI を必ず添える。
- 世論調査:1標本の Wilson区間。「支持率 38%、誤差 ±3%」の ±3% はまさに標本サイズ設計から逆算した区間半幅。$n \approx 1000$ が定番なのはこのため。
- 品質管理:不良率は $0$ に近いので Wald は厳禁。Clopper-Pearson か Wilson を使う。「検査 $200$ 個・不良 $0$ 個」なら「不良率は高々 $1.5\%$(95% 上側信頼限界)」と報告する。
最後に、状況に応じた手法の選び方を 1 枚にまとめます。


これらの図がまとめているのは、次の実務指針です。既定の推奨は Wilsonスコア区間(バランスが最良)。厳密な保証が必要なら Clopper-Pearson(保守的・安全側)。手計算の簡便さを取るなら Agresti-Coull(成功と失敗を $2$ ずつ水増し)。そして Wald は教科書の出発点としては重要だが、端で破綻するため実務では非推奨。この使い分けさえ押さえておけば、比率の推定で大きく間違えることはありません。
まとめ
本記事では、母比率の区間推定と検定を、理論の導出から Python 実装まで通して解説しました。
- 比率の点推定は $\hat{p}=x/n$、標準誤差は $\sqrt{\hat{p}(1-\hat{p})/n}$ で、精度は $1/\sqrt{n}$ で向上する
- Wald区間は素朴だが、$p$ が端に寄ると被覆が崩れ、$x=0$ で区間が点に潰れる
- Wilsonスコア区間は標準誤差を解く前に $p$ で扱うことで破綻を回避し、実務の第一候補になる
- Clopper-Pearson区間は二項分布から厳密に作り、被覆 95% 以上を保証する代わりに保守的
- Agresti-Coull区間は「+2成功+2失敗」の簡便法で Wilson に近い性能
- 検定は1標本 $z$ 検定・2標本 $z$ 検定・厳密な二項検定を使い分ける(検定はプール、区間は非プール)
- 標本サイズは $n = z^2 \cdot 0.25 / E^2$ で設計でき、誤差 ±3% には約 1000 人が必要
- ベイズのベータ事後による信用区間は Wilson区間とよく一致し、解釈がより自然
比率の推定は「割り算ひとつ」に見えて、不確実性の扱いに統計学の本質が詰まっています。ここで学んだ「点で答えるな、区間で答えよ」「近似の効く範囲を見極めよ」という姿勢は、平均値や回帰係数など、ほかのあらゆる推定にそのまま通じます。
次のステップとして、以下の記事も参考にしてください。