Digital Reactor
統計・確率

頻度主義統計学とベイズ統計学、それぞれのアプローチ

頻度主義統計学とベイズ統計学、それぞれのアプローチ

はじめに

同じコイン投げのデータを前にしても、頻度主義統計学とベイズ統計学は別の問いを立てます。頻度主義は「コインが公平だとしたら、このデータはどれくらい珍しいか」を問い、ベイズは「このデータを見た後で、表の出る確率はどの値にありそうか」を問います。出発点になる「確率」の解釈が違うため、推定の手続きも、結果の読み方も変わります。この記事では、コイン投げという単純な例で両者の計算を並べ、解釈と使い分けの違いを具体的に見ていきます。

対象読者:

  • 統計学の基本的な概念を学びたい方
  • 頻度主義とベイズ主義の違いを知りたい方
  • データ分析の実務でどちらのアプローチを使うべきか悩んでいる方

記事のポイント:

  • 頻度主義とベイズ主義の「確率」の解釈の違いを明確にします
  • コイン投げのシミュレーションを通じて、両アプローチの具体的な計算方法を示します
  • それぞれの長所と短所を比較し、実務での使い分けの指針を示します
  • 仮説検定で両者の結論の読み方がどう違うかを説明します

頻度主義とベイズ統計学の基本的な考え方

両者の違いの根は、「確率」をどう解釈するかにあります。頻度主義統計学は、確率を「無限回の試行における事象の相対頻度の極限」と定義します。ベイズ統計学は、確率を「事象に対する信念の度合い(degree of belief)」として解釈します。数式で書くと次のようになります。

頻度主義統計学における確率:

P(A)=limn事象Aの発生回数nP(A) = \lim_{n \to \infty} \frac{\text{事象Aの発生回数}}{n}

ベイズ統計学における事後確率:

P(θD)=P(Dθ)P(θ)P(D)P(\theta|D) = \frac{P(D|\theta)P(\theta)}{P(D)}

ここで、θ\theta はパラメータ(例えばコインの表が出る確率)、DD は観測データ(例えばコイン投げの結果)を表します。ベイズの定理では、事前確率 P(θ)P(\theta)(データを見る前のパラメータへの信念)と尤度 P(Dθ)P(D|\theta)(パラメータが与えられた下でのデータの出現確率)を組み合わせて、事後確率 P(θD)P(\theta|D)(データを見た後のパラメータへの信念)を計算します。

コイン投げで両者の計算を並べる

解釈の違いが計算にどう現れるかを見るため、「コインの表が出る確率」を推定する問題を考えます。

相対頻度を数えるだけの頻度主義

頻度主義では、コインを何度も投げ、表が出た回数の割合(相対頻度)を計算します。試行回数を増やすほど、相対頻度は真の確率に近づくと考えます。

def frequentist_coin_flips(n_flips, true_prob=0.5):
    """頻度主義的アプローチによるコイン投げシミュレーション"""
    flips = np.random.binomial(1, true_prob, n_flips)
    cumulative_heads = np.cumsum(flips)
    proportions = cumulative_heads / np.arange(1, n_flips + 1)
    return proportions

事前分布を事後分布に更新するベイズ

ベイズでは、まず表が出る確率 θ\theta に対する事前分布 P(θ)P(\theta) を設定します。これは、コインを投げる前の θ\theta に関する信念を表します。次に、コイン投げの結果(データ)を観測し、尤度関数 P(Dθ)P(D|\theta) を計算します。最後に、ベイズの定理を用いて事後分布 P(θD)P(\theta|D) を計算します。

def bayesian_coin_flips(n_heads, n_trials):
    """ベイズ統計的アプローチによるコイン投げの確率分布計算"""
    theta = np.linspace(0, 1, 1000)
    prior = np.ones_like(theta)  # 一様事前分布
    likelihood = stats.binom.pmf(n_heads, n_trials, theta)
    posterior = likelihood * prior
    posterior /= np.trapz(posterior, theta)  # 正規化
    return theta, posterior

ここでは、事前分布として一様分布([0,1][0, 1] 上の全ての値が等しく確からしい)を使用しています。

1000回投げたときに両者が返すもの

上図は、1000回のコイン投げシミュレーションの結果です。左図が頻度主義で、コインを投げた回数に対する表の割合の推移です。試行回数が増えるにつれて、割合は真の確率(この場合は0.5)に近づきます。

右図がベイズで、表が出る確率 θ\theta の事後分布です。この分布は、データを観測した後での θ\theta に関する信念を表します。最初は一様分布(平らな線)でしたが、データが増えるにつれて、真の確率付近にピークを持つ分布に変わっていきます。頻度主義が返すのは割合という1つの数値で、ベイズが返すのは分布そのものだという点が、この2枚を並べたときのいちばんの違いです。

両アプローチの特徴と使い分け

特徴頻度主義統計学ベイズ統計学
確率の解釈無限回の試行における相対頻度信念の度合い
パラメータの扱い固定値確率変数(確率分布を持つ)
事前知識使用しない事前分布として使用する
データ量大量のデータを必要とする少ないデータでも推論可能
計算量比較的少ない場合によっては非常に多い(特に複雑なモデルの場合)
解釈客観的(ただし、有意水準などの恣意的な設定が必要な場合がある)主観的(事前分布の選択に依存する)だが、不確実性を定量的に表現できる
代表的な手法仮説検定、信頼区間ベイズ推定、ベイズ因子、信用区間

どちらが優れているという話ではありません。問題の性質、手元のデータ量、分析の目的に応じて使い分けます。

仮説検定でも問いの立て方が分かれる

「コインは公平か」という判断そのものにも、両者の違いが出ます。統計的仮説検定は、データに基づいて仮説の妥当性を評価する手続きですが、頻度主義とベイズでは何に確率を割り当てるかが違います。

p値で帰無仮説を棄却する頻度主義

頻度主義では、帰無仮説(H₀)と対立仮説(H₁)を設定し、帰無仮説の下で観測されたデータが得られる確率(p値)を計算します。p値が事前に設定した有意水準(α、通常は0.05)よりも小さい場合、帰無仮説を棄却し、対立仮説を採択します。

コインの公平性(表が出る確率が0.5)を検定する場合:

def frequentist_test(data, alpha=0.05):
    """頻度主義的な二項検定
    帰無仮説: p = 0.5 (公平なコイン)
    対立仮説: p ≠ 0.5 (不公平なコイン)
    """
    n = len(data)
    n_heads = np.sum(data)
    p_value = stats.binomtest(n_heads, n, p=0.5).pvalue
    return {
        'p_value': p_value,
        'reject_h0': p_value < alpha
    }

仮説そのものに確率を割り当てるベイズ

ベイズでは、仮説そのものに確率を割り当てます。事前分布と尤度関数から事後分布を計算し、事後分布に基づいて仮説の確からしさを評価します。 ROPE (Region of Practical Equivalence: 実質同等領域) を使う方法が一例です。

def bayesian_test(data, rope_width=0.05):
    """ベイズ的な検定
    ROPE (Region of Practical Equivalence) を用いたアプローチ
    rope_width: 実質的に等価とみなす範囲の幅(片側)
    """
    theta = np.linspace(0, 1, 1000)
    prior = np.ones_like(theta)  # 一様事前分布

    n = len(data)
    n_heads = np.sum(data)

    # 尤度と事後分布の計算
    likelihood = stats.binom.pmf(n_heads, n, theta)
    posterior = likelihood * prior
    posterior /= np.trapz(posterior, theta)

    # ROPEの範囲(0.5±rope_width)内の確率を計算
    rope_idx = (theta >= 0.5 - rope_width) & (theta <= 0.5 + rope_width)
    prob_in_rope = np.trapz(posterior[rope_idx], theta[rope_idx])

    return prob_in_rope

ROPEは、実質的に「差がない」とみなせるパラメータの値の範囲です。事後分布がROPE内にどれだけ含まれるかを計算し、その割合に基づいて仮説を評価します。

公平なコインと偏ったコインで検定してみる

上図は、公平なコイン(p=0.5)と不公平なコイン(p=0.7)それぞれに対する両アプローチの検定結果の例です。左図が頻度主義で、縦線はp値を、点線は有意水準(α=0.05)を示します。p値がαより小さい場合、帰無仮説(コインは公平)を棄却します。右図がベイズで、θ\theta の事後分布とROPE(灰色の領域)を示します。事後分布の大部分がROPE内にある場合、「コインは実質的に公平である」と結論付けます。

p値は「帰無仮説が正しいと仮定した場合に、観測されたデータ(またはより極端なデータ)が得られる確率」であって、「コインが公平である確率」ではありません。一方、ベイズの事後分布は「データと事前知識を考慮した上で、パラメータが特定の範囲にある確率」を表すので、ROPEを使えば「パラメータが実質的に等価な範囲にある確率」を直接読めます。「コインが公平である確率は◯◯」という言い方が許されるのはベイズだけです。

まとめ

頻度主義とベイズ統計は、確率の解釈も推論の方法も、仮説検定の考え方も根本から違います。頻度主義は客観性を重視してデータの頻度から推論し、ベイズは事前知識を組み込みながら不確実性を確率分布で表します。

どちらを選ぶかは、いくつかの条件で決まります。データが豊富なら両者の結果は近づきますが、データが少ないと事前知識を組み込めるベイズに分があります。不確実性を分布として示したいならベイズが、棄却か非棄却かの二値判断で足りるなら頻度主義が向きます。複雑なモデルではベイズの計算コストが高くつく点も、判断材料になります。

近年は両者を組み合わせた手法も広がっており、問題ごとに使い分けるのが現実的です。次に分析を設計するときは、「信頼できる事前知識を数式に載せられるか」と「結論を分布の形で報告する必要があるか」の2点を先に確認してみてください。この2つに答えが出れば、どちらで進めるかは自然に定まります。

関連記事

← 技術ブログ一覧へ