18.7 フィーチャーアセスメントと多重検定

12,625個の遺伝子の中から「本当に意味のある」ものだけを見つけるには? 単純なp値検定を大量に行うと、偶然だけで多くの「誤検出」が生まれる。 FDR(偽発見率)という実用的な解決策を一緒に探っていこう。

1つの問いから始まる

あなたは科学者で、放射線治療への感受性を持つがん患者を研究しています。 手元には58人分のマイクロアレイデータがある。44人は「普通の反応」を示した患者、 14人は「放射線に強く反応した」患者。そして、12,625個の遺伝子の発現量が測定されています。

目標はシンプルです:どの遺伝子が、2つのグループで発現量が違うのか?

これは予測モデルを作ることとは違います。「この遺伝子が重要か否か」を個別に判断したい。 そのために、各遺伝子jに対して2標本t統計量を計算します。

2グループの点群から平均の差(t統計量の分子)を可視化するアニメーション
青=グループ1(44人)、オレンジ=グループ2(14人)。2本の平均線の差がt統計量の本質

t統計量とは何か——グループ間の差が「偶然で説明できるか」を数値化したものです。 差が大きく、かつばらつきが小さいほどt統計量の絶対値は大きくなり、 「この差は本物だ」という証拠が強まります:

$$t_j = \frac{\bar{x}_{2j} - \bar{x}_{1j}}{\text{se}_j}$$

ここで $\bar{x}_{kj}$ はグループk(1=普通、2=感受性高)における 遺伝子jの平均発現量、$\text{se}_j$ はプール内分散から計算された 標準誤差です。

$$\text{se}_j = \hat{\sigma}_j \sqrt{\frac{1}{N_1} + \frac{1}{N_2}}, \quad \hat{\sigma}_j^2 = \frac{1}{N_1+N_2-2}\left(\sum_{i \in C_1}(x_{ij}-\bar{x}_{1j})^2 + \sum_{i \in C_2}(x_{ij}-\bar{x}_{2j})^2\right)$$

$|t_j|$ が大きいほど、その遺伝子は2グループで 異なる挙動をしている証拠が強い。 計算してみると、$|t_j| \geq 2$ の遺伝子が 1189個ありました。

問題が爆発する

通常の感覚では「$|t| \geq 2$ は有意(有意水準5%)」と判断します。 しかし、ちょっと待ってください。

12,625個の遺伝子すべてで個別に仮説検定をするとき、偶然だけで どれだけの遺伝子が有意に見えてしまうのでしょうか?

もし遺伝子が互いに独立だとすると、グループ分けが完全にランダムでも、$12{,}625 \times 0.05 = 631.3$ 個の遺伝子が 誤って有意と判定される期待値があります。 1189個のうち、631個はニセモノかもしれない

実データと置換データのt統計量ヒストグラムが重なり、閾値超過部分(誤検出領域)が赤くなるアニメーション
オレンジ=実データ、青=置換データ。両方のヒストグラムの裾が閾値を超えている

これが多重検定問題(Multiple Testing Problem)です。 多くのフィーチャーを同時に検定するとき、個別のp値は当てにならなくなります。

対策として、族別エラー率(Family-Wise Error Rate, FWER)があります。 「一族の検定(= 一連のM個の検定)のうち、1つでも誤検出が起こる確率」です。 独立な検定M個では:

$$\text{FWER} = 1 - (1-\alpha)^M$$

$M = 12{,}625$$\alpha = 0.05$ では FWER ≈ 1(確実に誤検出が起きる!)。

Bonferroni補正は「各検定のハードルを厳しくすることで全体の誤検出を防ぐ」方法です。 各検定の有意水準を $\alpha/M$ に下げてFWERを制御します。 しかし $\alpha = 0.05$$M = 12{,}625$ なら閾値は$3.9 \times 10^{-6}$。 12,625個の遺伝子の中でこれほど小さいp値を持つものは一つもありませんでした。 Bonferroni補正は厳格すぎて、真の発見も見逃してしまいます。

発想の転換——FDRという新しい指標

多重検定に対するより実用的なアプローチは、偽発見率(False Discovery Rate, FDR)です。

FWERは「1つでも誤検出するな」という厳格な要求でした。でもゲノム研究では 少し違う問いが重要です:「有意と判定した遺伝子のうち、どれくらいが本当のニセモノか?」

仮に100個の遺伝子を有意と呼んだとき、そのうち10個がニセモノなら、FDRは10%。 これは十分に許容できるかもしれません。

FDRを形式的に定義すると:

$$\text{FDR} = \mathbb{E}(V/R)$$

ここで $V$ は偽陽性(本当はnullなのに有意と判定)の数、$R$ は有意と判定された総数です。$V/R$ はゼロ除算を避けるため$R=0$ のとき0とします。

Benjamini と Hochberg(1995)は、FDRを所定のレベル$\alpha$ 以下に制御する手続きを提案しました(BH法):

  1. p値を昇順に並べ替える:$p_{(1)} \leq p_{(2)} \leq \cdots \leq p_{(M)}$
  2. 最大の $j$ を求める:$L = \max\{j : p_{(j)} < \alpha \cdot j/M\}$
  3. $p_j \leq p_{(L)}$ なる $H_{0j}$ をすべて棄却する
p値の順位プロットとBH閾値線(黄色の斜め線)との交点でカットオフを決めるアニメーション
青い点=p値(昇順)、黄色の斜め線=BH閾値(α·j/M)。線より下の最後の点(j=11)が赤くなる

この手続きの美しさは、独立な仮説検定のもとで$\text{FDR} \leq (M_0/M) \cdot \alpha \leq \alpha$が保証されることです($M_0$ はnull仮説が真の検定の数)。

マイクロアレイ例では $\alpha = 0.15$ で試すと、 BH法は 11個の遺伝子を有意と判定します (Bonferroniは1つも見つけられなかった!)。

FDRを直接数えてみる——置換という武器

BH法はp値から出発しますが、より直接的なアプローチとしてプラグイン推定があります。

アイデアは「置換データを使ってニセモノの数を推定する」というものです。 閾値Cを設定したとき:

FDRの推定値は:

$$\widehat{\text{FDR}} = \frac{\widehat{E(V)}}{R_{\text{obs}}}$$
実データ分布(オレンジ)と置換データ分布(青)を重ね、閾値より右の比率でFDRを推定するアニメーション
閾値C(黄色の線)より右側:オレンジ領域が実データ超過数、青領域が置換データ超過数(推定誤検出数)

マイクロアレイ例でCを4.101($|t_j|$ が11番目に大きい値)に設定すると:

これはBH法で $\alpha=0.15$ を使ったときの結果とほぼ一致します。 両者は実は等価です。

ポイントは「置換データ」という考え方です。グループラベル(どの患者がどのグループか)を ランダムに並び替えたデータで検定を繰り返せば、「もし本当に差がないなら」という 帰無仮説のもとでのt統計量の分布が得られます。 この分布と実データの分布を比べることで、FDRを直接推定できます。

SAM法——非対称な検出

ここまでは、遺伝子の発現が増える方向(正)と減る方向(負)を対称に扱ってきました。しかし現実の実験では、 ほとんどの変化が一方向に起こることも多い。 たとえば「放射線感受性の患者では遺伝子が発現増加する傾向がある」なら、 正と負を同じ閾値で扱うのはもったいないです。

BH法とプラグイン推定は両方の方向を等しく扱います。しかしSAM(Significance Analysis of Microarrays)法はこの非対称性に対応します。

SAMは次の美しいプロットを使います:縦軸に実際の順序統計量$t_{(1)} \leq t_{(2)} \leq \cdots \leq t_{(M)}$、 横軸に置換データからの期待順序統計量$\bar{t}_{(j)} = \frac{1}{K}\sum_{k=1}^K t_{(j)}^k$を置きます。

SAMプロット:実際のt統計量(縦軸)vs 置換からの期待t統計量(横軸)のQ-Qプロット。バンドを外れた赤い点が有意な遺伝子
白の45°線に沿う点=ランダムな変動。グレーのバンドから外れた赤い点=有意な遺伝子

もし実データが「ランダムに過ぎない」なら、点は45°線に沿って並ぶはずです。 本当に有意な遺伝子は45°線から大きく外れます

閾値パラメータ $\Delta$ を設定し、 45°線から $\pm\Delta$ だけ離れた2本の平行線を引く。 点がこのバンドから外れたとき、初めてそれを有意と判定します:

$$|t_{(j)} - \bar{t}_{(j)}| > \Delta$$

非対称性の利点:右上の点(正方向の変化、過剰発現)と 左下の点(負方向の変化、過少発現)を別々のカットポイントで制御できます。 プロットから視覚的に「どちらの方向に多い」かが一目瞭然です。

FDRのベイズ的な意味

FDRには深いベイズ的解釈があります。

各遺伝子について、「この遺伝子が本当にnull(実際には差がない)かどうか」を表す 潜在変数 $Z_j$ を考えます:$Z_j = 0$(null)または$Z_j = 1$(alternative)。

t統計量は混合分布に従います:

$$t_j \sim \pi_0 \cdot F_0 + (1-\pi_0) \cdot F_1$$

ここで $F_0$ はnull仮説下での分布、$F_1$ は対立仮説下での分布、$\pi_0 = \Pr(Z_j=0)$ はnull遺伝子の割合です。 つまり、全遺伝子は「本当は差がない $\pi_0$ 割合のnull遺伝子」と 「本当に差がある $(1-\pi_0)$ 割合の遺伝子」が混在しており、 全体のt統計量分布はこの2つの重ね合わせになります。

F0(青、null分布)とF1(オレンジ、対立分布)の2つの確率密度曲線。右側の棄却領域で青の尾(偽陽性)がオレンジの尾(真陽性)より小さい
青=F0(null仮説下)、オレンジ=F1(対立仮説下)。棄却領域(白線より右)での青/オレンジの比がpFDR

pFDR(正の偽発見率)は:

$$\text{pFDR}(\Gamma) = \Pr(Z_j = 0 \mid t_j \in \Gamma)$$

ここで $\Gamma$棄却領域——たとえば$|t_j| \geq 4.101$ のように「有意と判定する範囲」のことです。 この式は「棄却領域 $\Gamma$ に入った場合に、 実はnullである事後確率」を意味します。ベイズ統計でいう偽陽性の事後確率そのものです。

さらに、遺伝子ごとの指標としてq値(q-value)があります。 q値は「この遺伝子を有意にするあらゆる棄却領域のうち、FDRが最小となるもの」として定義されます。 q値が小さいほど、その遺伝子が真に有意である可能性が高い——個別のFDRアナログです。

このようにFDRは単なる統計的補正ではなく、 「私が有意と呼んだ発見の中でニセモノはどれくらいか」という直感的な問いへの、 数学的に厳密な答えなのです。 12,625個の遺伝子を調べても、適切な手法を使えば信頼できる発見を得られます—— それがFDRの本質です。