⚠️ このページは機械翻訳されています

この日本語訳は機械翻訳によるもので、誤りや不自然な表現が含まれている場合があります。正確な内容については英語版をご参照ください。

This page was machine-translated and may contain errors. Please refer to the English version for accuracy.

誤りを見つけられた場合は、joseph.austerweil@gmail.com までご連絡いただくか、GitHub リポジトリにプルリクエストをお送りください

ベータ分布

ベータ分布(確率に対する事前分布)

部分的にプールするには、$\theta \in [0, 1]$ という率に対する事前分布 — 結果そのものが確率となるような確率分布 — が必要です。自然な選択はベータ分布であり、$\text{Beta}(a, b)$ と書き表します。これがこの章で登場する唯一の新しい記法です。

使用前に定義:ベータ分布

$\text{Beta}(a, b)$ は、0 から 1 の間の単一の数 $\theta$ に対する確率分布です。二つの形状パラメータ $a > 0$ および $b > 0$ を持ち、最も直感的な読み方はソフトなカウントとしてです:

$a$ は「想像の中で見たトンカツの事前個数」、$b$ は「想像の中で見たハンバーガーの事前個数」です。

期待値は

$$\mathbb{E}[\theta] = \frac{a}{a + b},$$

であり、合計 $a + b$ は事前サンプルサイズのように機能します — 大きくなるほど、分布は平均値の周りにより鋭く集中します。知っておくべきいくつかの形状:

  • $\text{Beta}(1, 1)$ は一様 — すべての率が等しく起こりやすい($[0,1]$ 上の一様分布)。
  • $\text{Beta}(8, 2)$ は0.8 付近に集中 — 「トンカツ率が高いと強く予想している。」
  • $\text{Beta}(2, 5)$ は低い方に歪んでいる、平均 $\approx 0.29$ — 「おそらく低い率だろう。」

θ ∈ [0,1] 上の三つのベータ密度曲線:Beta(1,1)(一様)の平坦な水色の線、0.8 付近に集中した濃紺の Beta(8,2) の曲線、そして低い値に歪んでいてモード(最頻値)が 0.2 付近・平均が 0.29 付近のオレンジ色の Beta(2,5) の曲線。この図は、(a,b) がトンカツ対ハンバーガーのソフトなカウントのように振る舞い、平均が a/(a+b) であることを示している。 θ ∈ [0,1] 上の三つのベータ密度曲線:Beta(1,1)(一様)の平坦な水色の線、0.8 付近に集中した濃紺の Beta(8,2) の曲線、そして低い値に歪んでいてモード(最頻値)が 0.2 付近・平均が 0.29 付近のオレンジ色の Beta(2,5) の曲線。この図は、(a,b) がトンカツ対ハンバーガーのソフトなカウントのように振る舞い、平均が a/(a+b) であることを示している。

平均だけが全てではない:集中度

これは階層モデルにとって非常に重要な微妙な点であり、見落としやすいものです。ベータ分布の平均 $a/(a+b)$ は典型的な学生の率を教えてくれますが、二つの集団が同じ平均を共有しながらも全く異なる世界を記述することがあります。それを分けるのが集中度 $a + b$、すなわち学生たちがその平均の周りにどれだけ密集しているかです。

平均を $0.5$ に固定し(ソフトカウントが等しい、$a = b$)、集中度を変化させてみましょう:

  • 小さい $a + b$ — 例えば $\text{Beta}(0.1, 0.1)$。 密度は($\theta \approx 0$ と $\theta \approx 1$)に積み上がり、中間はほぼ空になります(U 字形)。これは、各学生は非常に一貫しているほぼ常にトンカツを持ってくるか、ほぼ常にハンバーガーを持ってくる — が、学生間では大きく異なることを意味します。ばらつきは学生にあり、一人の学生の中にはほぼありません。
  • 大きい $a + b$ — 例えば $\text{Beta}(10, 10)$。 密度は $0.5$ を中心とした鋭い山になります。これは逆のことを意味します:すべての学生は個人的にコインフリップ — 各自が個人的に約半分の確率でトンカツを持ってくる — であり、学生はみんな似ている。今度はばらつきが各学生の中にあり、学生にはほぼありません。

同じ平均(0.5)を持つが形状が正反対の二つのベータ密度。左:Beta(0.1, 0.1)、θ≈0(「常にハンバーガー」)と θ≈1(「常にトンカツ」)でスパイクし中間はほぼ平坦な赤い U 字形の曲線 — 学生は個人的には一貫しているが互いに大きく異なる。右:Beta(10, 10)、θ=0.5 を中心に密集した青い山 — すべての学生は個人的に約 50/50 の混合であり学生間の差はほぼない。両パネルで共有する平均 0.5 に破線が引かれている。 同じ平均(0.5)を持つが形状が正反対の二つのベータ密度。左:Beta(0.1, 0.1)、θ≈0(「常にハンバーガー」)と θ≈1(「常にトンカツ」)でスパイクし中間はほぼ平坦な赤い U 字形の曲線 — 学生は個人的には一貫しているが互いに大きく異なる。右:Beta(10, 10)、θ=0.5 を中心に密集した青い山 — すべての学生は個人的に約 50/50 の混合であり学生間の差はほぼない。両パネルで共有する平均 0.5 に破線が引かれている。

同じ集団平均でも、ランダム性がどこに宿るかについては正反対の話になります。サンプルで確かめましょう:各集団から 5000 人の学生を抽出し(各学生は個人的な率 $\theta_i$ を持ち 20 個のお弁当を持参する)、学生間のばらつきを計測します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import jax
import jax.numpy as jnp
import jax.random as jr
from genjax import gen, beta, binomial

N_BENTOS = 20.0   # each student brings 20 bentos (a float so it shares a dtype
                  # with theta — GenJAX's binomial wants both the same type)

@gen
def student(a, b):
    theta = beta(a, b) @ "theta"          # this student's personal tonkatsu rate
    k = binomial(N_BENTOS, theta) @ "k"   # how many of their 20 bentos were tonkatsu
    return theta

def summarize(a, b, label, n_students=5000, seed=0):
    keys = jr.split(jr.key(seed), n_students)
    thetas = jax.vmap(lambda key: student.simulate(key, (a, b)).get_retval())(keys)
    print(label)
    print(f"  population mean rate        = {float(jnp.mean(thetas)):.2f}")
    print(f"  spread BETWEEN students (SD)= {float(jnp.std(thetas)):.2f}")
    print(f"  fraction near 0 or 1        = {float(jnp.mean((thetas < 0.1) | (thetas > 0.9))):.2f}")

summarize(0.1, 0.1, "Small a+b  -- Beta(0.1, 0.1):")
print()
summarize(10.0, 10.0, "Large a+b  -- Beta(10, 10):")

出力:

Small a+b  -- Beta(0.1, 0.1):
  population mean rate        = 0.50
  spread BETWEEN students (SD)= 0.46
  fraction near 0 or 1        = 0.81

Large a+b  -- Beta(10, 10):
  population mean rate        = 0.50
  spread BETWEEN students (SD)= 0.11
  fraction near 0 or 1        = 0.00

両集団ともトンカツ平均は $0.50$ ですが、小さい $a+b$ の世界では81% の学生がほぼ決定論的(常にどちらか一方)であるのに対し、大きい $a+b$ の世界では誰もそうではない:全員が真の $50/50$ の混合です。同じことはどの平均でも成り立ちます — $a:b = 7:3$ とすれば $0.70$ を平均とする集団が得られ、「ほとんどの学生はトンカツかハンバーガーのどちらかで信頼性が高く、トンカツ寄り」(小さい $a+b$)か「すべての学生が個人的に約 70% の確率でトンカツを持ってくる」(大きい $a+b$)という異なる状況を表します。

これこそが階層ベイズが推論するものです。 この章の後半でデータから $(a, b)$ を学習するとき、私たちは単に平均的な学生を学ぶのではなく、集中度、すなわち学生がどれほど異なるかを学んでいます。そして、それが縮小をどれだけ強くするかを正確に決定します。大きな推定 $a + b$(学生は似ている)は全員をグループに向けて強く縮小し、小さな $a + b$(学生は異なる)は各学生自身のデータをより信頼します。集中度が借用強度を制御するノブです。

ベータ分布が率に対する唯一の事前分布である理由は、共役性と呼ばれる幸運な代数的偶然にあります — 事前分布と事後分布が同じ族に属するため、更新はパラメータをシフトするだけで済みます。あなたはすでにこれを別の形で第 4 章で見ています:そこでは、ガウス平均に対するガウス事前分布がガウス事後分布を与えました。ここでは、ベルヌーイ率に対するベータ事前分布がベータ事後分布を与えます — そして更新は単なるカウントです:

$$\text{事前分布 } \text{Beta}(a, b) + \text{データ } (n \text{ 個中 } k \text{ 個がトンカツ}) \longrightarrow \text{事後分布 } \text{Beta}(a + k, b + n - k).$$

観測されたトンカツを $a$ に、観測されたハンバーガーを $b$ に加えるだけです。これが更新の全てです。したがって事後平均は

$$\mathbb{E}[\theta \mid k, n] = \frac{a + k}{a + b + n},$$

であり、これはまさに事前分布のソフトカウントと実際のデータのブレンド — そして重要なことに、$n$ が大きくなるにつれてブレンドはデータ寄りになります。この式を覚えておいてください;それ自体が縮小であり、次のセクションでそれを直接読み取ります。


2026/07/02