ベイズ因子とは?──定義と直感的解釈
ベイズ因子 (Bayes Factor) は、2つの仮説 ${H_1, H_2}$ の相対的な支持度を評価するための指標です。
とくに「帰無仮説 (null hypothesis) vs. 対立仮説 (alternative hypothesis)」の枠組みでよく用いられ、伝統的なp値とは異なる観点から仮説の根拠を評価します。
詳しく見ていきましょう。
ベイズ因子の厳密な定義
まず、ベイズ因子${\mathrm{BF}_{12}}$ は以下の数式で定義されます。
$$
\mathrm{BF}_{12}
= \frac{\frac{P(H_2 \mid D)}{P(H_1 \mid D)}}{\frac{P(H_2)}{P(H_1)}}
= \frac{P(D \mid H_2)}{P(D \mid H_1)},
$$
- ${P(H_1 \mid D)}$,${P(H_2 \mid D)}$:事後確率
- ${P(H_1),P(H_2)}$:事前確率
- ${P(D \mid H_2)}{P(D \mid H_1)}$:尤度
ベイズの定理が怪しい方は、こちらの記事をお勧めします!
…このように、ベイズ因子は「事後オッズ / 事前オッズ」という形で定義され、さらに「尤度の比」と解釈できます。
直感的には、「与えられたデータ ${D}$ を見たとき、仮説 ${H_2}$ が ${H_1}$ よりどれくらい支持されるか?」を示す値です。
具体例:コイン投げの仮説比較
コインを投げて表が出る確率が「0.5」 (${H_1}$) か「${0.6}$」 (${H_2}$) かを比べたいとします。
事前確率を等しい (${P(H_1)=P(H_2)=0.5}$) と仮定し、10回投げたら表が7回出たという観測データ ${D}$ が得られたとします。
${H_1}$の尤度
$$
P(D \mid H_1) = \binom{10}{7} (0.5)^7 (0.5)^3 = \binom{10}{7} \left(\frac{1}{2}\right)^{10}.
$$
${H_2}$の尤度
$$
P(D \mid H_2) = \binom{10}{7} (0.6)^7 (0.4)^3.
$$
これを比率でとると、
$$
\mathrm{BF}_{12} = \frac{\binom{10}{7} (0.6)^7 (0.4)^3}{\binom{10}{7} \left(\frac{1}{2}\right)^{10}} \approx 0.46.
$$
よって、${\mathrm{BF}_{12} < 1}$ であるため、「0.5 よりも 0.6 のほうがデータをよく説明している」と判断できます。
p値との違い──「帰無仮説前提」vs.「仮説間の直接比較」
p値の特徴
p値の理解が怪しい方は、まずこちらの記事がお勧めです。
- 定義: p値とは「帰無仮説 (${H_0}$) が正しいと仮定したとき、観測されたデータと同じか、それよりも極端なデータが得られる確率」
- 解釈の誤解: p値は「帰無仮説が正しい確率」ではなく、あくまで「帰無仮説を前提としたときのデータの稀少度」を示すもの
- サンプルサイズ依存: サンプルサイズが大きいと非常に小さな差でも統計的有意 (p < 0.05 等) が出やすくなる
ベイズ因子の特徴
さて、p値に対しては以下のような特徴があります。
- 相対的な支持度: 2つの仮説 ${H_1}$ と ${H_2}$ を対等に扱い、その優劣をデータから直接評価
- サンプルサイズの影響: p値ほどサンプルサイズに敏感ではない (ただし全く影響が無いわけではない)
- 確率の解釈: ベイズ統計学では、確率を「信念 (degree of belief)」とみなすため、仮説比較もこの枠組みで行われる
比較表
項目 | ベイズ因子 | p値 |
---|---|---|
焦点 | 2つの仮説の相対的な支持度 | 帰無仮説を前提としたときのデータの稀少性 |
仮説の扱い | 2つの仮説を対等に扱う | 帰無仮説に焦点を当てる |
サンプルサイズ依存性 | 影響を受けにくい (相対比較が主眼) | 影響を受けやすい (大きいデータで小さな差も有意に) |
確率の解釈 | 信念の度合い (ベイズ的確率) | 長期的頻度 (頻度主義的確率) |
ベイズ因子を用いた有意性判定基準──Jeffreysの基準
ベイズ因子をどの程度で「有意」とみなすかは、よく議論されるテーマです。
代表的な指標にJeffreysの基準があり、以下は Jeffreys の基準表の一例です。
ベイズ因子 BF12\mathrm{BF}_{12}BF12 | 解釈 |
---|---|
1 ~ 3 | ${H_1}$ に対する証拠はほとんどない |
3 ~ 10 | ${H_1}$ に対する証拠は弱い |
10 ~ 30 | ${H_1}$ に対する証拠は中程度 |
30 ~ 100 | ${H_1}$に対する証拠は強い |
100 以上 | ${H_1}$に対する証拠は非常に強い |
数値が大きいほど ${H_1}$ を支持する証拠が「強い」とみなせます。
p値のように「0.05を閾値とする」といった単純な二値化ではなく、連続的な強度を評価できる点が特徴です。
ベイズ因子の計算方法──MCMCなどの数値解析
周辺尤度の計算
ここまで見てきた通りで、ベイズ因子は、周辺尤度 (marginal likelihood) の比で表されます。
周辺尤度は、パラメータ空間を積分して求める必要があり、解析解を得るのが難しい場合も多くあります。そこで、MCMC (Markov Chain Monte Carlo) などの数値手法が活用されます。
MCMC法については、以下の記事がお勧めです。
たとえば、仮説${H_i}$ が含むパラメータを ${\theta}$とすると、
$$
P(D \mid H_i)
= \int P(D \mid \theta, H_i) \, P(\theta \mid H_i) \, d\theta.
$$
この積分をMCMCサンプリングによって近似し、
$$
\mathrm{BF}_{12}
= \frac{P(D \mid H_2)}{P(D \mid H_1)}
\approx \frac{\widehat{P(D \mid H_2)}}{\widehat{P(D \mid H_1)}},
$$
と求めるのが一般的な計算フローです。
実装例
たとえば、Python などで PyMC や Stan (pystan / cmdstanpy) といったライブラリを使えば、周辺尤度を推定する関数やベイズ因子の計算に対応した関数があります。
以下、MCMCサンプリングの流れを示します(全コード例を示します)。
import pymc as pm
import numpy as np
# 仮説H1: p ~ 0.5 (固定)
# 仮説H2: p ~ 0.6 (固定)
# ここでは単純に、ベータ分布のような事前を使わず固定値
# データ(表が出た回数)と試行回数
trials = 10
heads = 7
# ベイズ因子計算用の関数 (周辺尤度を計算する例)
def compute_marginal_likelihood(data_heads, data_trials, hypothesized_p):
# 尤度 = Binomial(data_heads | n=data_trials, p=hypothesized_p)
# 事前が固定 => 周辺尤度はそのまま尤度に等しい(ここでは簡易版)
from math import comb
like = comb(data_trials, data_heads) \
* (hypothesized_p ** data_heads) \
* ((1 - hypothesized_p) ** (data_trials - data_heads))
return like
marginal_likelihood_H1 = compute_marginal_likelihood(heads, trials, 0.5)
marginal_likelihood_H2 = compute_marginal_likelihood(heads, trials, 0.6)
BF_12 = marginal_likelihood_H2 / marginal_likelihood_H1
print("Bayes Factor BF_{12} =", BF_12)
上記のように、仮説 ${H_1}$ と ${H_2}$ が単一パラメータ (固定) の場合は簡単に計算できますが、より複雑なモデルではパラメータを含む積分計算が必要になるため、MCMCなどが活躍します。