トレジャーデータ(Treasure Data)ブログ

トレジャーデータ(Treasure Data)ブログです。

本サイトは移転しました。新サイトにリダイレクトします。

トレジャーデータで実践:A/B テスト(理論編)

本記事は移転しました。新サイトにリダイレクトします。

はじめに

トレジャーデータはクラウドでデータマネージメントサービスを提供しています。

 

本記事ではテストの概念および解釈の方法について説明します。はじめに統計学を強力にサポートする確率論の「大数の弱法則」「中心極限定理」を紹介し,次に背理法に基づくテストの概念を紹介します。

Ⅰ. 統計学の基本スタンスについて

私達が手元に得られるデータというのは,たいていの場合が全体(母集団)の中の一部(標本)である事が多いです。例えば労働調査データでは国民全員のデータでは無く,その中の10万人を独立ランダムにピックアップしたものです。

また,母集団の中からどのようなルール(分布)に従って標本が得られるのかもわからないことが多いです。例えば(必ずしも平等でない)コイン投げでは,その母集団は {表, 裏} であることは知っていても表がどれくらいの確率で現れるのかはわかりません。

世の中の多くの事象というのはこのように母集団や分布といったそれの本質的な部分を知ることはできず,そこから抽出される一部の標本の持つ(統計量と呼ばれる)情報からそれらを類推しないといけません。

統計学(特に推測統計学と呼ばれますが,ここでは統計と呼ぶことにします)というのは,得られている標本の統計量(標本平均や標本分散)をもとに全体(母集団)や真の分布をテスト(検定)したり推定したりする学問領域です。 

Ⅱ. 現実と神の世界を結びつける架け橋:確率論

統計は,現在手元に得られている標本から理論上の真の分布や母集団の情報(誰も知り得ない言わば神の世界)を想像しようとしますが,そのためには「現実」と「理論」を結びつけるための何かしらのサポートが不可欠です。この大きな隔たりを極限の世界において華麗に結びつけてくれるのが「大数の弱法則」と「中心極限定理」と呼ばれる,確率論より導かれる性質です。

大数の弱法則

X_1,X_2,...,X_n が,平均 \mu,分散 \sigma^{2}\lt \infty の独立同一な確率変数列であるとする。今,\bar{X}_n=(X_1+X_2+...+X_n)/n と置いたとき,任意の ε > 0 に対して,

 \lim_{n\rightarrow\infty}Pr\left(|\bar{X}_n-\mu|\geq\epsilon\right)=0

が成立する。 

大数の弱法則を大まかに言えば,標本数 n を十分に大きくしていけばその標本平均は定数 μ(真の平均)に限りなく近づいていくということを表しています。コイン投げの文脈では,試行回数が多ければ多いほど実験で表の出る確率は真の確率,つまり真のコインの姿をより鮮明に浮かび上がらせる事ができることを示しています。

中心極限定理
期待値 μ, 分散\sigma^{2}の独立同分布の確率変数列 X_1, X_2,...X_k に対し、
S_n := \sum_{k = 1}^n X_k

とすると、S_nの標準化統計量 Y=(S_n-n\mu)/\sqrt{n}\sigma は平均 0, 分散 1 の正規分布 N(0, 1) に分布収束する:

P \Big( \frac{ S_n - n \mu }{ \sqrt{n}\sigma } \leqq \alpha \Big) \to \frac{1}{\sqrt{2 \pi }} \int_{-\infty }^{\alpha } e^{- \frac{x^2}{2}} dx  。
 
中心極限定理を大まかに言えば,標本数 n が十分に大きい状況では標本平均 \bar{X}_n=S_n/n の分布は近似的に平均 \mu, 分散 \frac{\sigma^{2}}{n} の正規分布 N(\mu, \frac{\sigma^{2}}{n}) に従う事を述べています。(また,S_n の分布は近似的に平均 n\mu, 分散 n\sigma^{2} の正規分布 N(n\mu, n\sigma^{2}) に従うとも言えます。) 
(大数の弱法則・中心極限定理の証明や確率収束・分布収束などの説明は省略するが,WEB参考資料としてはこれこれがわかりやすいです。) 

コイン投げから観察する「大数の弱法則」と「中心極限定理」

ではコイン投げを例に,大数の弱法則と中心極限定理の持たらす意味を考えてみることにしましょう。今,平等なコインのコイン投げにおいて表の出る確率を実験によって求めてみる事にします。

※ コイン投げでは,i 回目のコイン投げにおいて表が出たときに1, 裏が出たときに0を取るような確率変数 X_i を仮定すると,独立な変数列 X_1,X_2,...,X_n の和 S_n=X_1+...+X_n は表の出る回数を表していることになり,これを標本数 n で割った平均 \bar{X}_n=S_n/n は表が出る確率を表している事になります。この時 X_i をベルヌーイ確率変数とよび,和 S_n の分布は二項分布に従います。

大数の弱法則

大数の弱法則が意味するところは,コインを投げる回数を増やしていけば行くほど,実験から求めた表の出る確率は真の確率 1/2 に近づくことを示しています。コインを n = 1,2,…,1000回独立に投げた場合の表の出る確率をグラフにしてみると,

f:id:doryokujin:20150611101100p:plain

のようになり,確かに n が大きくにつれて確率 1/2 に近くなっていきます。Rにおけるサンプルコードはこちら。

 中心極限定理

標本数(試行回数) n を一定の値に固定し,毎回コインの表が出ると1, 裏が出ると 0 を標本として取る事にします。ここでは標本平均では無く標本の和,つまり表の出る回数 s を求める動作を 1 セットとして,これを数セット繰り返しヒストグラムを描くことで表の出る回数 s の分布を見てみることにします。下図は左から標本数を n = 10, 20, 1000としたときの分布を表しています。標本数が大きいほど,表の出る回数の分布はこの定理より導かれる平均 n*0.5,分散 n*0.5*0.5 の正規分布を良く近似していることがわかります。(ここでセット回数は関心の中心ではありません。ヒストグラムの様子を良く表すために n に応じて回数を増やしています。)

f:id:doryokujin:20150611101245p:plain

また,パラメータ σ = 100 の指数分布においては,標本数 n が大きくなるほど,標本平均の分布がよく正規分布を近似している事がよくわかります。

f:id:doryokujin:20150611101318p:plain

Rでのサンプルコードはこちら。

標準正規分布

標準正規分布は平均 0, 分散 1の正規分布です。この確率密度関数のグラフは以下の図様に表されます。縦軸は出やすさの度合い,横軸の値は標本値(標準正規分布における横軸の値をz-valueと呼ばれます。)を表しています。縦軸が最大となる標本値はその平均 0 に一致し,そこを頂とする山を形成しています。これは標準分布に従った標本を抽出していく場合には,平均値 0 周りを中心に多くの標本値が得られることを意味しています。100個の標本値の様子をRで実験してみましょう。

table関数によって頻度集計を行うと,ほとんどの標本値が区間 [-2, 2] 内に落ちていることがわかります。実際,95% の標本値が区間 [-1.96,1.96] に落ちることになります。逆に言えば標本値が ±1.96 より離れた標本が得られる確率は両側合わせてたった 5%でしかありません。もしあなたがちょうど1回の標本を抽出してみたときに,±1.96 より離れた標本が得られたならば,そのあまりにも希少な出来事に目を疑うことでしょう。

f:id:doryokujin:20150611101704p:plain

(上記の標準正規分布の描画コードはこちら。)

Ⅲ. テストの概念について

さて,テストの概念について説明できる準備が整いました。ここまででわかっている事実を改めて並べて見ましょう。(以降で扱う標本は,独立かつ同一な分布から得られていると仮定します。)
  1. [大数の弱法則]: 標本数が十分大きければ標本平均は真の平均に近づいていく。必要ならば真の平均の代替としてこの標本平均を用いて計算を行う事が可能である。
  2. [中心極限定理] :標本数が十分大きければ元の標本が従う分布が何であっても,標本平均の分布は近似的に正規分布 N(μ, σ^2/n) に従う。さらに標準化と呼ばれる変換を施すことによって得られる統計量 T は標準正規分布 N(0,1) に従う。
  3. [稀なケース] :標準正規分布においてz-valueが区間 [-1.96, 1.96] 内に収まらない確率は 5% でしかない。(ここで 2. における統計量 T と3. における z-value は同じである。)
もし実験から得た標本から求める統計量 T が計算可能ならば,Tは標準正規分布からの1つの標本であると考えることができます。 

定義

「テスト(仮説検定:Hypothesis Testing または有意性検定:Significance Test)とは,母集団または真の分布について設定した仮説の妥当性の判断を,標本を元に計算する統計量を元に一定の確率水準で判定する事である。」

概念

A/Bテストの同型問題であるコイン投げの例では「コインAとコインBの表の出る確率は異なるはずだ」とういう仮説の下でテストを行います。今コインAの表の出る確率を p_a, コインBのそれを p_b とすれば,この仮説は数学的表現として「p_a ≠ p_b である」と表すことができます。しかし実際に設定する仮説は,その対となる「p_a = p_bである」の方になるので注意が必要です。(「p_a = p_bである」という仮説を帰無仮説,これに対立する「p_a ≠ p_bである」という仮説は対立仮説と呼ばれます。 )

これには以下の様な理由がります。(主に最初の方が重要です)
  • テストは背理法に似た論法を持って仮説の検証を行う。(背理法とはある主張を真としたとき,その主張に矛盾がある事を示すことでこの主張を否定する方法である。)よって支持する仮説は対立仮説に据える。
  • 帰無仮説によって,母集団および真の分布についての何らかの設定がなされる。これによって中心極限定理を利用することができるようになり,標本から求めた統計量 T が標準正規分布に近似的に従う事が言える。統計量 T を求めるに当たって,不等号や≠を用いている設定よりも等号のみで成立している設定の方が遙かに計算が容易になる。
テストは棄却を目的とした帰無仮説「p_a = p_bである」の元に検証が行われる。もしこの仮説が妥当では無い(完全否定とは意味合いが異なる)と判断できる場合は帰無仮説を棄却し,対立仮説「p_a ≠ p_bである」の方をより妥当として採択します。
 
テストでは「否定」という言葉は使わずに「棄却」という言葉を使用します。また帰無仮説の「帰無」とは「棄却することを前提に設定されているので,無に帰す」という意味合いが込められています。

帰無仮説を棄却するということの意味

(今後は区間 [-1.96,1.96] を「採択域」,採択域の外側を「棄却域」と呼ぶことにします。)

ではどのようにして帰無仮説を棄却するのでしょうか?ここで標本分布の話を思い出し下さい。帰無仮説の元では統計量 T は標準正規分布に従います,その値が棄却域に入っているならばこのテストにおいては非常に稀な値を手にしてしまったことになります。
 
もし私達が真の分布を知っている神の立場であれば,この場合でも「稀なケースだったね」という話で済みますが,何せ私達は(仮定はおいているものの)真の分布を知りません。そのような立場からこの状況を判断するならば,「稀なケース」と考えるよりも「そもそも帰無仮説が正しくなかったのでは無いか」と考える方が妥当の様に思われます。
 
その考えのもと,T が棄却域に落ちるケースでは帰無仮説を棄却し,例えば「有意な差があると言える」と判断します。「有意」という言葉には「起こる確率が小さい場合には,それはめったに起こらないのでもしそれが起こったとすれば,それは偶然ではなく何か明白な意味が有ると考える方が妥当である」という意味合いが込められています。
 
ただ状況によっては棄却するか否かの厳しさ,つまり「妥当性の天秤」が異なってくることに注意が必要です。帰無仮説の元で稀なケースを観測する確率を α  (ここではずっと α = 0.05 と置いてきました) とし,これを有意水準と呼びます。この有意水準を調整することによってこの妥当性の天秤を調整するのです。一般的に有意水準 α は 0.05 か 0.01 に設定されます。後者はより起こりにくい確率を定義しているので,前者よりも帰無仮説を棄却しにくくなりより厳しいテストとなります。有意水準 0.01 の元では採択域は [-2.58, 2.58] と広くなるからです

第一種の誤り・第二種の誤り

ただ,本当に稀なケースに遭遇していた可能性もありえます。帰無仮説を誤って棄却してしまう(これを第一種の誤りと呼ぶ)可能性です

 
テストにおいて最終的に導かれる判断には第一種の誤りの可能性を常に含んでいるために,「有意な〜」や「〜であると言える」という控えめな表現を用います。逆に採択域に収まるケースでは,帰無仮説を棄却することはできないので「このテストからは何もわからない」という判定をします。ここで,”帰無仮説を採択する”という判定を行い,「〜は同じであると言える」などと言ってはいけません。
 
∵ テストにおいては先ほど紹介した第一種の誤りの他に,第二種の誤りの可能性も内在しています。第一種とは逆で,「偽である帰無仮説を採択してしまう誤り」です。第一種ではその誤りの確率は有意水準に等しく,故に制御可能な誤りです。一方,第二種の誤りの方は制御不可能な誤りであり,その確率は未知です。故に安易に帰無仮説を採択する行為は,確率未知の第二種の誤りを容認してしまうことになるので安易に帰無仮説を採択することはできない,故に「何も言えない」という判定にするのです。
問:『今年,新型かもしれないインフルエンザ n1 が流行の兆しを見せている。もし過去に類を見ないタイプであればすぐに新薬を開発して流行を食い止めなければ大変な事になる。そこで,n1 が本当に新型かどうかを確認するために,患者の症状および血液検査の結果を,過去の似通ったインフルエンザ n2 が流行した際に取っていた結果と比較し,結果に差があるかどうかをテストすることにした。帰無仮説を「インフルエンザ n1 と n2 は同じである」とした時,第一種の誤りおよび第二種の誤りが何であるかを指摘し,それがもたらす影響を考え,どちらが重大な過ちであるかを考えよ。』
答:
  • 第一種の誤り: n1 は過去のインフルエンザ n2 と「同じ」ものであったのにも関わらず,誤って「有意に違う」,つまりn_1 は新型である」と判断してしまい,新薬の開発に無意味な研究費を投じてしまいました。
  • 第二種の誤り: n1 は過去のインフルエンザ n2 と「異なる」ものであったのにも関わらず,誤って「同じである」と判断してしまい,過去の効果のない薬を提供する判断を下したために流行が拡大し,より多くの人命が危機にさらされてしまいます。

Ⅳ. A/Bテストにおける統計量の計算方法について

(※ 統計量の計算とそれの従う分布について,興味の無い方は種々の公式だけ覚えておけば良いので読み飛ばしてもらっても構いません。)

A/Bテストの「比率の差」と同型問題のコイン投げで考えます。コインAを n_a 回投げて表の出た回数を y_a,コインBを投げて表の出た回数を y_b と置き,ここでは標本数 n_a, n_b が十分大きいとします。また,それぞれの標本平均を \tilde{p}_a=y_a/n_a および  \tilde{p}_b=y_b/n_b と置く。帰無仮説を「p_a = p_b (= p)である」とおきます。これは2つの分布の差「p_a - p_b が 0 である」とも書けます。ところで正規分布には以下の様な良好な性質を持っています。
「 2つの独立な正規分布 N(\mu_1,\sigma_1^2) および N(\mu_2,\sigma_2^2) の和の分布もまた正規分布 N(\mu_1+\mu2,\sigma_1^2+\sigma_2^2) に従う。」
これを利用すると,帰無仮説の下でコインAの分布 p_a とコインBの分布 p_b の差の分布もまた,平均 0 正規分布に従う事が言えます。 \tilde{p}_a\tilde{p}_b の差の分布の分布は,中心極限定理より近似的に
N\left(0,\left(\frac{1}{n_a}+\frac{1}{n_b}\right)p(1-p)\right)
に従います。帰無仮説の元で共通の確率 p を標本推定値
\tilde{p}=\frac{y_a+y_b}{n_a+n_b}
で置き換えることにすると,標準化した統計量 T は
T=\frac{\tilde{p}_a-\tilde{p}_b}{\sqrt{(1/n_a+1/n_b)\tilde{p}(1-\tilde{p})}}
となり,この時 T は近似的に標準正規分布に従います。

サンプル数とサンプル数の偏りの影響 

心の準備編では,「テストの判定が(人間の感覚的に)標本数の大きさや,標本数で偏りで信念が揺らぐ」傾向にあるという事に触れました。これは先ほど求めた統計量 T が標本数 n_a および n_b の値に依存していることより正しくそれが言えます。今回のA/Bテストで導かれた統計量は n_a や n_b が大きくなれば分母が小さくなり,統計量 T としては値が大きくなる傾向にあります。これは区間 [-1.96, 1.96] からどんどん遠ざかっていく事を意味し,「とっても稀なケース」としてより確信度高く帰無仮説を棄却できます。

p-値 

ところで,この「確信度」というのは「p-値」と呼ばれており,帰無仮説の下で実際にデータから計算された統計量よりも極端な(大きな)統計量が観測される確率です。標準正規分布に従う統計量が T=1.96 の時,有意水準 0.05 の元では p-値は0.025です。(両側を併せると有意水準に一致する)。p-値が小さければ小さいほどより稀なケースが起きていることになり,故に帰無仮説が間違っていると考えることの確信度が高まります。p-値は帰無仮説を棄却する事の確信度,というあいまいな感覚値を数値化した有用な指標であると言えます。

Ⅴ.「AとBの母平均に差があるか」という問題に対するアプローチ

本章では,A/Bテストの一種である「AとBの母平均に差があるか」という問題をとりあげて詳細に説明していきます。これに対するアプローチは,まず十分な数の標本からの標本平均を計算し,これを母平均の替わりをさせようとするところから始まります。

しかし,標本平均は"確率変数"であったので同じテストを複数回行うならば,標本平均 \bar{X}_A\bar{X}_B はだいたい各母平均の近くにばらつくものの,その位置関係・距離関係は毎回異なります。

ここで重要なのは,AとBの母平均を知り得る事はできない事です。あくまでもA, B の標本平均と標本分散しかわかりません。このような状況で「母平均の違い」を判定することは本質的に難しい問題であると言えます。下図は母平均が同じ/違う場合での \bar{X}_A\bar{X}_B位置関係のいくつかのケースを書いています。※ 以降では A と B の標本数は十分に大きいと仮定します。(図のクリックで拡大します)

f:id:doryokujin:20150611104507p:plain

  • 左図は母平均が同じ(ここではあくまで母平均の違いについて関心があるので,分散は異なっていても良い)場合。A, Bの標本数が十分に大きければ,得られる各標本平均は同じ値の母平均の近くでばらつくので標本平均間の距離も小さくなる傾向がある。
  • 中図は母平均が異なる場合。得られるA, Bの標本平均は,各母平均の近くでばらつくので,標本平均の距離は自然と離れている傾向がある。
  • しかし右図のように母平均が異なる場合でも,"たまたま" A, Bの標本平均の距離が小さくなるようなケースが得られる場合もある。また逆に,母平均が同じ場合でも,"たまたま"標本平均の距離が離れる場合もある。この場合は厄介である。

では,どのようにしてAとBの真の「違い」を判断すれば良いのでしょうか?A, B の標本平均がどれくらいの距離内におさまっていれば良いのでしょうか?

帰無仮説を持って棄却する,というアプローチ

ここから前に進む方法は,まずは「母平均が等しい」と置いてみることから始まります。そのように仮定することで,2つの標本平均から新しい統計量 T を作ることができます。この T もまた実験の度に変動する確率変数ですが,T は母平均が等しいという仮説の下で,平均 0,分散1の標準正規分布に従います。しかしこの仮定が不適切な場合は T はこの分布のはるか両端に追いやられることになります。つまり統計量 T への変換は「標本平均の差」が元々大きければ大きいほど両端遠くへ,小さければ小さいほど母平均値 0 の近くにばらつくようにする変換なのです。

また,T の従う分布は言わば「母平均が 0 であるという帰無仮説の支持率」を示す診断と考えてることができます。「有意水準」というのは「この値以下の支持率なら帰無仮説を疑う」任意の値です。有意水準 0.05 というのは,「T の支持率が5%以下ならば帰無仮説を受け入れない」ことを意味します。

A,B の母平均が同じ場合

f:id:doryokujin:20150611105316p:plain

  • Case1 は母平均が同じで,共に母平均周りに標本平均がとれた場合。この場合,変換後の T は 0 の近くに移動する。この時の帰無仮説の支持率は非常に大きくなる。
  • Case2, Case3 では"たまたま"いずれかの標本平均がその母平均から離れた値であった場合だ。この場合は標本平均の差は大きくなり,変換後では両端にとばされてしまい,支持率は低いと見なされてしまう。(第一種の誤り

A,B の母平均が異なる場合(μ_A < μ_B)

A, B の母平均が異なり,かつ μ_A < μ_B の場合です。

f:id:doryokujin:20150611105356p:plain

  • Case4 の場合はもとの母平均の違いを標本平均が良く表しているために,変換後の T は右端へ追いやられる。これによって帰無仮説の支持率は低くなり「μ_A = μ_B」という帰無仮説は棄却され,「AとBには有意な差がある」と判断できる。
  • Case5, Case6 は厄介である。本来母平均が異なっていながら標本平均の差は近くなってしまっている場合だ。この場合は帰無仮説を支持し,棄却できないという「第二種の過り」を犯してしまうことになる。

A,B の母平均が異なる場合(μ_A > μ_B)

A, B の母平均が異なり,かつ μ_A > μ_B の場合です。

f:id:doryokujin:20150611105521p:plain

  • Case8, Case9 は先ほどと同じく,「第二種の過り」を犯してしまう例である。

A,B の母平均が異なる場合(μ_A < μ_B):片側検定

f:id:doryokujin:20150611105548p:plain

実は片側検定という考え方があります。AとBが単純に「違いがある」という対立仮説を作るのでは無く,「母平均Bの方がAよりも大きい」という対立仮説を立てる方法です。この場合「μ_A > μ_B」である事は全く関心が無いので,変換後の T が右側に飛ばされることがのみが棄却の動機になります。この場合の有意水準 0.05 というのは棄却域を今まで両端併せて 5% の領域と考えていたものが,今度は右側だけ考えて全体の 5% の領域となります。同じ値 T でも両側検定と片側検定の場合ではp-値が異なってきます。

「帰無仮説を棄却できない→何も言えない」というロジックについて

さて,帰無仮説を棄却できない場合は「AとBは同じ」と結論づけるのではなく,「何も言えない」という結論をするべきだと何度も行ってきたが,ここで改めてその理由を考えてみよう。

上図の Case5, Case6, Case8, Case9 をもう一度見て下さい。このケースは本来AとBに差があるのに棄却できなかった第二種の誤りの例であるが,これらがどれくらいの確率で起こりうるのかは全く未知なのです。もし本来異なるのに同じと判断してしまう確率が 30% だったらどうでしょう?「同じである」と判断しても,30% で間違っているのだからテストの信憑性は全く無くなってしまいます。このように,帰無仮説を容認することは,未知の確率で起こる第二種の誤りを内在することになってしまうので,精神衛生上大変よろしくないです。「何も言えない」という判断は,これよりはむしろ無難な判断をしていると言えます。

ⅤI. まとめおよびその他のテストに関して

ここではA/Bテストの例しか取り上げませんでしたが,テストは様々な種類があります。それによって計算する統計量 T と T に従う分布は異なってきます。今までは標準正規分布に従う統計量を用いてきましたが,その他にも t 分布・F 分布・χ^2 分布に従う統計量が存在します。それらはどれも出発点は中心極限定理と標準正規分布にあります。ただサンプル数の大小,または分散が既知か未知かによって計算することのできないパラメータが存在するので,それを四則演算によって巧みに打ち消すようにして作った統計量が t 分布や F 分布に従うのです。ただし,基本的にはどのテストにおいても,その概念は変わることはありません:

  1. 大数の弱法則および中心極限定理がテストを強力にサポートする。
  2. 棄却を目的として,帰無仮説をこしらえる。
  3. 帰無仮説の下,標本からある分布(正規分布・t分布・F分布・χ^2分布など)に従う統計量 T を求める。
  4. 統計量 T がその分布の元で稀なケースかどうかをチェックする。(p-値はどれ位稀なケースか、言い換えればどれ位の確信度を持って帰無仮説を棄却できるかを計るための、あらゆる統計量において有用な指標である。)
  5. 稀なケースであり,帰無仮説を疑う方が妥当であると判断できる場合は帰無仮説を棄却し、対立仮説を採択する。そうでないなら何もわからないと判断する。
  6. あらゆるテストは誤りの可能性を排除できない。また,第一種の誤り確率は有意水準に等しく制御可能であるが,第二種の誤りは制御不可能である。
興味を持たれた方は実践編色々な事例を調べて見て下さい。