🎓 レベル:標準 | 重要度:A(必須)
📎 前提:事後分布の要約 | 関連:頻度論とベイズの違い
要点(BLUF)
- 信頼区間(頻度論):「区間を作る手続き」がデータを取り直す反復のうえで 真値を覆う、という被覆率の保証。特定の1区間に「」とは言えません(真値が入るか入らないかのどちらか)。
- 信用区間(ベイズ):この1つのデータについて「 がこの区間に入る確率が 」と直接読めます。
- 平坦事前だと数値は一致しうるが意味は別物。情報事前を入れると信用区間は事前へ移動・縮小し、頻度論の信頼区間と数値もずれます。
1. 定義の違い:何を固定して何を動かすか
頻度論とベイズの違い で触れた区別を、ここでシミュレーションまで踏み込んで確かめます。違いは「何を確率変数とみなすか」に尽きます。
- 頻度論: は固定値。確率変数はデータ(取り直すたびに変わる)。だから区間も確率変数で、「区間が真値を覆う」確率を語る。
- ベイズ:データは観測されて固定。確率変数は 。だから「 が区間に入る」確率をこの1データについて語る。
flowchart LR
subgraph F["信頼区間(頻度論)"]
FT["θ は固定・真値"] --> FD["データを取り直すと区間が動く"]
FD --> FC["区間の95%が真値を覆う(被覆率)"]
end
subgraph B["信用区間(ベイズ)"]
BD["データは固定・観測済み"] --> BT["θ が確率変数(事後分布)"]
BT --> BC["θ が区間に入る確率が95%"]
end
2. 信頼区間の意味は「被覆率」:シミュレーションで見る
頻度論の は、同じ真値からデータを何度も取り直し、毎回区間を作ると、その約 が真値を含むという意味です。特定の1区間についての確率ではありません。これを実験で確かめます。
import numpy as np
# 真の μ を固定し、データセットを何度も生成 → 毎回CIを作り、真値を含む割合を数える
rng = np.random.default_rng(1)
true_mu, sigma, n = 5.0, 2.0, 10
z = 1.96
M = 20000
covered = 0
for _ in range(M):
x = rng.normal(true_mu, sigma, size=n) # データを取り直す
xbar = x.mean()
lo, hi = xbar - z*sigma/np.sqrt(n), xbar + z*sigma/np.sqrt(n)
if lo <= true_mu <= hi: # この区間は真値を覆ったか
covered += 1
print(f"頻度論95%CIが真値を含んだ割合 = {covered/M:.4f} (手続きの被覆率≒0.95)")
出力:
頻度論95%CIが真値を含んだ割合 = 0.9537 (手続きの被覆率≒0.95)
出力の意味:2万回データを取り直すと、作った区間の約 ()が真値 を含みました。これが「 信頼」の正体——区間を作る手続きの長期的な成績です。いま手元の1区間が真値を含むかは、含むか含まないかのどちらかで、そこに「」という確率は付きません。
3. 信用区間の意味は「この1データでの確率」
ベイズは観測した1データを固定し、 の事後分布から区間を取ります。読み方は「 がこの区間に入る確率が 」。平坦事前なら正規モデルでは数値が信頼区間と一致しますが、意味は別です。情報事前を入れると区間そのものが動きます。
import numpy as np
from scipy import stats
rng = np.random.default_rng(7)
true_mu, sigma, n, z = 5.0, 2.0, 10, 1.96
x = rng.normal(true_mu, sigma, size=n)
xbar = x.mean()
# 頻度論の信頼区間
ci = (xbar - z*sigma/np.sqrt(n), xbar + z*sigma/np.sqrt(n))
# ベイズ:平坦事前 → 事後 N(x̄, σ²/n)
cred_flat = stats.norm(xbar, sigma/np.sqrt(n)).interval(0.95)
print(f"x̄={xbar:.4f}")
print(f"頻度論 95%信頼区間 = [{ci[0]:.4f}, {ci[1]:.4f}]")
print(f"ベイズ 95%信用区間(平坦事前) = [{cred_flat[0]:.4f}, {cred_flat[1]:.4f}] ← 数値一致")
# ベイズ:情報事前 N(3, 0.5²) を入れると信用区間はずれる(精度の加重平均)
mu0, s0 = 3.0, 0.5
tau0, tau = 1/s0**2, 1/(sigma**2/n)
mu_post = (tau0*mu0 + tau*xbar)/(tau0 + tau)
sd_post = np.sqrt(1/(tau0 + tau))
cred_info = stats.norm(mu_post, sd_post).interval(0.95)
print(f"ベイズ 95%信用区間(情報事前) = [{cred_info[0]:.4f}, {cred_info[1]:.4f}] ← 事前で移動・縮小")
出力:
x̄=4.5953
頻度論 95%信頼区間 = [3.3557, 5.8349]
ベイズ 95%信用区間(平坦事前) = [3.3557, 5.8349] ← 数値一致
ベイズ 95%信用区間(情報事前) = [2.8448, 4.3823] ← 事前で移動・縮小
出力の意味:平坦事前では信用区間 が信頼区間とぴったり同じ数値。だから両者は混同されがちですが、読みは別物——信用区間は「 がこの範囲に入る確率が 」とこの1データについて言えます。情報事前 を入れると区間は へ事前側に動き、幅も縮みます(正規正規モデル の精度の加重平均)。頻度論の区間は事前を持たないので動きません。数値の一致は平坦事前という特殊条件の産物にすぎないと分かります。
4. なぜ混同されるのか
平坦(無情報)事前のベイズが、正規・二項などで頻度論の区間と数値的に一致しやすいからです。しかしそれは「ベイズの信用区間を頻度論的に解釈してよい」という意味ではありません。
- 報告で「 の確率で真値はこの範囲」と書けるのは信用区間だけ。
- 信頼区間にその読みを与えるのは典型的な誤用(多くの教科書が警告)。
- 情報事前を使う/小標本/境界のあるパラメータでは、両者は数値的にもずれます。
⚠️ よくある誤解
- 「信頼区間=95%の確率で真値を含む区間」ではない:それは信用区間の読み。信頼区間は手続きの被覆率で、特定の1区間に確率は付きません(§2)。
- 「平坦事前なら同じものだ」ではない:数値が一致しても意味は別。情報事前・小標本・有界パラメータでずれます(§3)。
- 「被覆率が悪い=頻度論が間違い」ではない:被覆率はあくまで反復に関する性質。Wald 区間のように構成法で被覆率が から外れることはあり、そこはCI構成の質の話(ベイズ側はジェフリーズ事前などで被覆が良くなることがある=無情報事前と弱情報事前)。
- 「ベイズは主観だから区間が恣意的」ではない:事前を明示し感度分析(事前の選び方と感度分析)で頑健性を確認できます。むしろ仮定が透明です。
関連ノート
- 事後分布の要約
- 無情報事前と弱情報事前(次のトピック・被覆と無情報事前)
- 頻度論とベイズの違い(確率解釈の出発点)
- 正規正規モデル(情報事前が区間を動かす仕組み)
- 事前の選び方と感度分析(事前の頑健性チェック)
- 第3章 事後分布の解析と要約 目次
- ベイズ統計テキスト 全体目次