A/Bテスト設計のテンプレートを作りました(具体例2)

前回のブログでは、タイミー社のA/Bテスト設計の雛形を元に新たなテンプレートを作成しました。

timotimotimotimo.hatenablog.com

今回の記事では、前回と異なる事例を考えながらこのテンプレートの使い方をお伝えしようと思います。

前回事例と異なる点

前回の記事では、「決済情報入力ページのデザインを変えることによって決済完了者率が増えるか」という仮想的な事例を考えました。

このケースでは評価指標が1つのみでしたが、今回は複数の評価指標があるケース(特に「A/Bテスト実践ガイド」本のp.201で言うグループ1とグループ2の指標がそれぞれ1つずつあるケース)を考えます。

今回の事例

今回は、自社ECサイトの買い物かごページに「よく一緒に購入される商品」を表示することによって平均購入額が上がるか、という仮想的なケースを考えます。ただし、この変更によって売り込み感が強くなり購入者率が下がらないかを確認したいため、「A/Bテスト実践ガイド」p.201のグループ2の指標に購入者率を設定することにします。

このような前提の下、前回のブログで紹介したテンプレートを埋めると以下のようになります。

※ 以下二点、補足です。

  • 当テンプレートでは、「A/Bテスト実践ガイド」p.201に記載のグループ1を「第1指標群」、グループ2・グループ3を「第2・3指標群」と言い換えています。
  • 実務においては、買い物かごページ訪問から購入完了まで日を置くことがあったり、その間に別デバイスでECサイトに訪れたりするなど、様々な状況を考えなければなりませんが、便宜的にここではそういった複雑な状況が発生しないと考えることにします。

第2・3指標群の記入項目

上記のテンプレートにおいて、第2・3指標群の記入項目は第1指標群とほぼ同じですが、「最小検出可能効果」と「サンプルサイズ」は設けませんでした。これは「A/Bテスト実践ガイド」本に明示的な記載はないものの、そのように推察できるためこうしました。

というのも、「A/Bテスト実践ガイド」では第2・3指標群の有意水準をそれぞれ0.01、0.001としていますが、このとき有意水準が小さいことから、必要なサンプルサイズを求めようとすると(最小検出可能効果も影響するものの)基本的に大きくなります。

この場合、必要なサンプルサイズを確保するためにA/Bテストの実験期間をより長期にする必要がありますが、これはこれで長期実験の際の注意点を考慮しなければなりません。

しかし、「A/Bテスト実践ガイド」本のp.201にはあくまで「シンプルな」方法として第1~3指標群に分ける方法が紹介されており、こういった考慮まで行うと複雑になってしまいます。そのため、「最小検出可能効果」と「サンプルサイズ」は考えないのではないかと思います。

最後に

以上が第2・3指標群がある事例を考えた際のテンプレートの使い方でした。

ただ、前回の記事でも述べましたが、規模が大きな会社などで見るべき指標が多い・指標の変化をより厳密に調べたいときなどは上記のテンプレートでは不足する部分があるかと思います。この辺りは今後改良していきたいと考えています。

A/Bテスト設計のテンプレートを作りました

A/Bテスト設計のテンプレートを作った経緯

A/Bテスト設計をなるべく抜け漏れなくできるようなテンプレートを探していたところ、タイミー社の以下のブログ記事に辿り着きました。

より信用できる効果検証のためにA/BテストとDIDの仕組みづくりをした話 - Timee Product Team Blog

そして、この記事に記載のテンプレートを参考に幾つかの要素を付け加えれば、抜け漏れが少なく振り返りやレビューがしやすい雛形を作れるだろうと思ったため、今回作成することにしました。

このような実用的なテンプレートを公開して下さったタイミー社には感謝申し上げます。

テンプレートの概要

まず、テンプレートの内容は以下の通りです。各項目の書き方が分かるよう、具体例も合わせて記載しています。

(Notion で作成したものを画像として貼り付けています)

テンプレートの詳細

今回テンプレートを作る際には、「テンプレートに記載の項目を埋めることで、A/Bテストの設計上なるべく抜け漏れがないようにすること」と「他の人が見たときや後から振り返ったときにテストの内容をなるべく把握しやすくすること」を考えました。

そのような目的の元、タイミー社のテンプレートに以下の主な変更を加えています。

  • 「仮説」「実験概要」の項目を追加
    • これによって、どのような目的で何をテストしたいのかが分かりやすくなり、加えて仮説に合った評価指標であるかもチェックしやすくなります。
  • 「評価指標」の項目を明示的に記載
    • 何を評価指標としているのか、その評価指標の中でも重要視しているものは何なのかが分かりやすい構成にしました。これによって、記載事項を流し見した際に重要な情報が目に入ってきやすいようにしました。
  • サンプルサイズの計算や検定に用いたコードを追加
    • A/Bテストの設計自体は正しいものの、サンプルサイズの計算や検定時のコードに誤りがあることもあるため、これをチェックできるようにしました。

今後に向けて

今回新たに作成したテンプレートを使用しつつ、改良できる点があれば変更していこうと思います。

また、このテンプレートは特に規模の大きな会社では不足している部分がいくつかありそうなため、こういった点も考慮しつつ改良していければと考えています。(規模が大きいほど見るべき指標が多い、指標の変化をより厳密に調べたいなどがあると考えられ、その観点で上記の雛形は改善の余地があると感じています)

なお、今回は「# テンプレートの概要」の添付画像で「具体例1」と書いていましたが、もう1つ具体例を用意しています。こちらは「評価指標」の「第2・3指標群」があった時のことを想定したもので、別記事でご紹介しようと思います。

最後に、再度にはなりますが本テンプレートの参考とさせて頂いたタイミー社の記事に改めて感謝申し上げます。

「効果検証入門」の読書メモ

2020年に読んだ「効果検証入門」を1年ほど前に読み返しており、その際に読書メモを作っていたのでブログとして公開します。

学んだ事・思った事

1章 セレクションバイアスとRCT

  • p.6: 効果検証におけるセレクションバイアスとは、比較しているグループの潜在的な傾向が違うことによって発生するバイアス(本来の効果との差)のことを言う。

2章 回帰分析

  • p.42, 52: 介入をもたらした要因が分かる場合、それを共変量として回帰分析を行うことで、セレクションバイアスの影響を減らすことが出来る。
  • p.60: 効果検証における回帰分析では、共変量が同じであれば介入がランダムにされているという仮定を設けている。
  • p.61: 効果検証における回帰分析の問題として、得られた効果の推定量がどの程度バイアスを持っているかが分からないことや、必要な共変量がデータとして得られない可能性があることがある。
  • p.64: 効果検証における回帰分析では、介入の影響を受けるような変数をモデルに含めてはいけない。
  • p.85: 介入変数が0か1の値しか取らない場合、E[Y|Z=1] と E[Y|Z=0] の関係は線形になるため、当書ではロジスティック回帰を用いず線形回帰を行っている。

3章 傾向スコアを用いた分析

  • p.93: 傾向スコアを用いた分析では、傾向スコアが同一のユーザーの中ではランダムに介入がされているという仮定を設けている。
  • p.96: 傾向スコアマッチングでは、傾向スコアが似ているサンプルをペアとして、ペアの中で目的変数の差を算出する。この結果について平均を取ったものを平均処置効果の推定値とする。
  • p.101: 逆確率重み付き推定では、傾向スコアの逆数で重み付けされた平均を取る事で、E[Y(1)] と E[Y(0)] を推定する。その差を取る事で、平均処置効果を推定する。
  • p.107: 良い傾向スコアというのは、マッチングや重みづけを行った後のデータにおいて、共変量のバランスが取れているもののことを言う。ここで、共変量のバランスは標準化平均差によって測られ、この差が小さくなっていれば、バランスが取れていると言える。
  • p.109: 傾向スコアと回帰分析を比較すると、回帰分析は手軽で取り組みやすい・正しくモデリングが出来れば標準誤差を小さく出来る、などのメリットがある。一方で、このモデリングそのものが難しいケースがある、というデメリットもある。他方、傾向スコアにおいては被説明変数に対するモデリングをする必要がなく、介入変数の決定方法を調べるのみで良い、というメリットがある。

4章 差分の差分法(DID)とCausalImpact

  • p.135: 差分の差分法とは、介入前後の差分を介入が行われたグループと行われなかったグループで算出し、そのグループ間の差を介入効果の推定値とする方法。
  • p.141: 差分の差分法において、時間による効果を考える際に絶対数を用いるか比率を用いるかは、どちらの方が時間の効果をより適正に表しているかという分析者の解釈に依存する。
  • p.146: 差分の差分法において平行トレンド仮定が満たされるかどうかの判断は、分析者がデータを生み出した物事(地域など)についてどのような解釈をしているかに依存する。
  • p.146: トレンドが同一でない場合は、2つの対策を取ることが出来る。一つ目は、平行トレンド仮定を満たさないと考えられるデータを取り除くこと。例えば、トレンドが同一になるようなサンプルを自動的に検出する合成コントロールという手法がある。もう一つは、トレンドの乖離を説明するような変数をモデルに加えること。
  • p.148: CausalImpact では様々な種類の変数Xを利用して、目的変数Yをうまく予測できるようなモデルを、介入が行われる前の期間のみで作成する。この時、作成されたモデルはXを入力すると介入前の状態のYを予測するため、介入後のXのデータを入力することで、介入が行われなかった場合のYの値を予測として出力する。この予測値と本来のYの差が介入効果の推定値になる。
  • p.149: CausalImpact においては、Xは介入の影響を受けるような変数であってはいけない。また、Yから影響を受けるような変数(X)であってもいけない。そのため、何を変数として用いるかは分析者に依ることとなる。

5章 回帰不連続デザイン(RDD)

  • p.164,173: 回帰不連続デザイン(Regression Discontinuity Design, RDD)は、「年齢が30歳以上の場合は必ずメールを送る」など、介入の有無が明確なルールに従って行われる際に用いられる手法であり、介入を決定する変数(running variable)の閾値(カットオフ)周辺の効果を推定する。この効果のことを Local Average Treatment Effect(LATE)と言う。
  • p.180: 回帰不連続デザインでは、Continuity of Conditional Regression Functions という仮定を満たしている必要がある。この仮定は、介入を決定する変数(running variable)が与えられたときの E[Y(1)|X] と E[Y(0)|X] は X に対して連続である、というもの。
  • p.180: 回帰不連続デザインでは、non-manipulation という仮定も満たす必要がある。この仮定は、分析の対象が自身の介入を操作することが出来ない、というもの。これは例えば、ユーザーが「購入額がある一定以上であれば次の年クーポンを受け取れる」と知っている場合においては、カットオフに近い金額のユーザーは意図的に追加購入をするため、自身の介入を操作している状況にある。
  • p.181: 回帰不連続デザインによって推定された LATE をデータ全体における平均的な効果と考えるには、LATE が running variable の値によって変化しないという仮定を置く必要がある。しかし、この仮定の妥当性をデータから検証する方法はないため、分析者の解釈によってこの仮定が現実的かどうかを判断する。

「リーダブルコード」の読書メモ

「リーダブルコード」の読書メモです。1年ほど前に読んでその際にブログの下書きも書いていたので、投稿します。

この本を読んだ理由

Python でコードを書いていると同じ処理でも書き方が複数あり、「どれが読みやすいか」と迷うことがありました。その際の判断軸を得たいと思ったため、本書「リーダブルコード(The Art of Readable Code)」を読みました。

なお、原著を読んでおり、以下に記載のページ数は原著でのページ数を表しています。

学んだ事・思った事

全体の大まかな感想を述べると、まずパート3までの内容は基本的に自分が既に他の人のコードを見て学んできたことと同じ、という印象を受けました。ただ、自分がこれまで得てきた知識が本書によって裏付けされた、ということに価値があったと思います。

一方でパート4については、学びの多い非常に素晴らしい内容だと感じました。まず Chapter Fourteen についてはテストに対する考え方とその実行方法を知ることができ、Chapter Fifteen については実践的な例からコーディングをする際に気を付けるべきことを具体的に知ることが出来ました。

以下では、本書で学んだ事・思った事の詳細を記載します。

Chapter One

  • p.3: コードの可読性において最も重要なのはコードを読む人が理解するまでに掛かる時間を減らすこと。

Chapter Two

  • p.8: 関数の命名GetPage とした場合、その get が具体的にどのような処理を意味しているかが分からないため、fetchdownload などのより明確な名前を用いるべき。
  • p.18: 変数名の長さは、スコープの大きさで決めるのが良い。小さなスコープでしか使わない変数の場合は短い変数名で良く、逆に大きなスコープで使う場合は明確に分かる変数名を付けるのが良い。

Chapter Three

  • p.25: 数量などの限度を表したい場合は minmax を使うのが良い。これによって inclusive な限度であることが明確に伝わる。
  • p.26: 両端を含んだ範囲を表したい場合は firstlast を使うのが良い。 startstop を使うと、 stop の値が含まれるのかが分かりづらい。
  • p.26: beginend は、始点が含まれ、一方で終点は含まれない範囲を一般的には表す。
  • p.28: getMean という名前の関数があった場合、これはこの関数内で平均を計算する処理をしているのか(計算量が多いのか)、それとも既に計算されている値を取得するだけなのか(計算量が少ないのか)が分かりづらい。そのため、前者だった場合は computeMean といった名前にすることで処理の内容がより明確に伝わるようになる。

Chapter Ten

  • p.116: get_cookie のように何をしているかが明確な場合には get を用いて良い。

Chapter Twelve

  • p.134: 自分が書くコードの処理を分かりやすくするには、まず「簡単な言葉で」その処理を表現し、その表現をコードで表していく、というプロセスを踏むのが良い。このプロセスを再帰的に繰り返していくことによってコード全体が読みやすいものとなる。

Chapter Thirteen

  • p.140: コードというのは、必ずしも処理が早いものを求められている訳ではない。同様に、全てにおいて正しい必要もなく、全ての入力を処理できるようにする必要もない。重要なのは、与えられている要件を詳しく調査してよりシンプルな問題を解くようにすること、その結果としてよりシンプルなコードを作り上げること。

Chapter Fourteen

  • p.152: コードのテストというのは多くの場合、「このインプット/状況の時に、この振る舞い/アウトプットが得られるか」を確認する。そのため、テストを書く時にはこの「インプット/状況」と「振る舞い/アウトプット」を引数として取れるようにする必要がある。
  • p.162: テストカバレッジを100%にすることに拘る必要はない。バグによる影響がどれくらいかによって、テストコードに費やす時間を決めるのが良い。

「A/Bテスト実践ガイド」の読書メモ

「A/Bテスト実践ガイド」の読書メモです。1年ほど前に読んでその際にブログの下書きも書いていたので、投稿します。

この本を読んだ理由

この本を読むまでA/Bテストに関する知識が自分の中でバラバラになっていると感じていて、これを体系的に整理したいと思ったため本書を読むことにしました。

なお、日本語だと分かりづらい表現等があったため、原著も一緒に読みました。以下に記載の括弧内のページ数は原著でのページ数を表しています。

学んだ事・思った事

第1章 導入と動機付け

第2章 実験の実行と分析

  • p.34(p.32): A/Bテストのデザインにおいては、次の4つを決める必要がある。1. ランダム化単位は何か、2. どのような特徴を持った人をテスト対象とするか、3. どれほどのサンプルサイズが必要か、4. どれくらいの期間テストを実施するか。
  • p.40(p.37): A/Bテストにおいて、統計的なしきい値・実用的なしきい値を決める際には、異なるメトリクス間でのトレードオフやリリースのコストなどを考慮する必要がある。その結果として、図2.4に記載されたような6パターンが得られる。A/Bテストの結果が出たときには、このようなパターンの内どれに当てはまるかを考え、それに応じて行動を決めていく必要がある。

第3章 トワイマンの法則と実験の信用性

  • p.50,78(p.47,73): ユーザーを振り分ける際に使われるハッシュ関数には MD5 や、Microsoft で利用されている Jenkins SpookyHash などがある。
  • p.54(p.51): プライマシー効果やノベルティ効果がある場合には、介入群の効果が安定するまで実験を行う必要があり、その上で分析をする必要がある。

第6章 組織を運用するためのメトリクス

  • p.96,110(p.91, 104): メトリクスの種類には主に、ゴールメトリクス、ドライバーメトリクス、ガードレールメトリクスがある。実験をする際には、これらのメトリクスの中で測定可能性・紐付け可能性・敏感かつ即時性のあるサブセットを用いる。時に応じて、代理指標を追加することもある。

第15章 実験対象の拡大

  • p.183(p.173): A/Bテストを実施し、それを対象となる全てのユーザーに拡大していくまでには、次の4つのフェーズを経る。まずはMPR前のフェーズで、このフェーズにおいては社内におけるA/Bテストや、本番環境における段階的なテストの拡大を行う。これによって、テストが安全であるか(バグがないか・ガードレールメトリクスが正常であるかなど)を確認する。この次にMPRのフェーズがあり、ここでは介入による効果を測る。このMRPのフェーズの期間は、曜日効果など時間に依存する要因を捉えられるほどの長さでなければいけない(p.35(p.33)も参照のこと)。3つ目のフェーズはMPR後のフェーズであり、ここではオペレーション上の懸念がある場合に、A/Bテストにおける変更を全ユーザーに適用するのではなく、75%に適用するなどする。オペレーション上の懸念というのは、例えばサーバーが負荷に耐えられるか、といったことを指す。4つ目のフェーズは長期ホールドアウトや実験の複製を行う。
    • (感想・考察)つまり、サンプルサイズを計算するときは何らかの分布を仮定してそこから自動的に計算することが多いが、それだけを持って集計期間を決めてはいけない(サンプルサイズ÷1日当たりのユーザー数などとしてはいけない)。例えば曜日によって大きな変化が現れる場合は、分布のサンプルサイズが十分であっても1週間などの期間をデータの集計期間とする必要がある。
  • p.185(p.175): 長期ホールドアウトを実施するケースには次の3つのものがある。1. 長期的な介入効果が短期的な効果と異なる場合、2. 先行指標では効果があると分かったが、真に重要なメトリクスが長期のメトリクスである場合、3. 長期で実施すると分散が小さくなる場合。

第18章 分散の推定と分析感度の向上

  • p.206(p.195): 外れ値があることによって、t統計量が小さくなり有意でなくなることがある。詳細は図18.1に記載の通り。そのため、分散を推定する際には外れ値を除くことが重要になる。

第19章 A/Aテスト

  • p.210(p.200): 「p値の計算にt検定を行った場合、A/Aテストの繰り返しから得られたp値の分布は一様分布に近づくはずである」の厳密な証明は調べてみても良く分からなかった。ただ、直感的には以下のリンクのように理解することができる。すなわち、「p値がある値α(0~1)未満となる確率は、p値の定義よりαとなる。これは累積分布関数FがF(α)=αであることを意味し、このことよりp値は[0,1]を台とする連続一様分布に従う。」と理解できる。
  • p.211(p.201): A/Aテストは次のような理由から行われる。1. 第1種の過誤が期待通りであるかを確認するため。分散の計算が誤っていることや、正規性の仮定が成り立っていないことがあるため、A/Aテストで確認する。2. キャリーオーバー効果などによってA/A間にバイアスが生じていないかを確認するため。3. メトリクスの分散を推定するため。
  • p.212(p.201): 分析単位とは、何らかの値を平均化する際の分母の1つ1つの単位のことを言う。例1の1の定義の場合は、分母に総ページビューがあることから、分析単位は一つ一つのページビューになる。p.177(p.168) も参照のこと。
  • p.213(p.203): ページごとに独立でないことを、数式を用いて理解するとおそらく次のようになる。まず、あるページビューに対するクリック数を表す確率変数をXとして、これがxを取る時の確率密度関数をf(x)とする。また、同じようにページビューに対するクリック数を表した別の確率変数をYとし、これらXとYの同時確率密度関数をf(x,y)とする。このとき、f(x,y) = f(x) * f(y) とはならない。なぜなら、例えばXがX=1など1以上の値を取っている場合(すなわちあるページビューに対してクリックがある場合)、Yも同様に1以上の値を取りやすいため。言い換えると、YのページビューがXのページビューと同じユーザーに表示された場合、「XでクリックをしているからYでもクリックしやすい」となるため。
  • p.215(p.205): A/Bの比率に偏りがある場合、中心極限定理を用いた正規分布への収束率が異なる。そのため、A/Aテストを用いた方が良い。
  • p.215(p.205): 帰無仮説の下でのp値が一様分布になることに関する参考文献が載っている。

第20章 分析感度を向上させるトリガー

  • p.222(p.212): 新旧の機械学習モデルを比較する際は、両モデルによる分類結果やレコメンド結果が同じものになることがある。そのためA/Bテストにおいては、まずコントロール群では新旧どちらのモデルも走らせ、ユーザーには旧モデルの結果を適用し、ログとして新旧どちらの結果も残す。次に介入群においては、新旧モデルどちらも実行し、ユーザーには新モデルの結果を適用し、ログとして新旧どちらの結果も記録する。その中で、新旧の結果が異なる場合にのみトリガーとする(分析対象とする)。
  • p.224(p.215): 本書ではトリガー(trigger)という言葉を、「介入効果を測定する」「分析対象とする」という意味で使っていると考えられる。この例2においては、おそらくこの10%のユーザーがトリガーの対象者(介入効果の測定対象)となっていて、一方でA/Bの割り振り自体はトリガーの対象者以外にもいる、という状況を想定しているのだと思われる。

第21章 サンプル比率のミスマッチと信用性に関連するガードレールメトリクス

  • p.234,241,243(p.222,229,232): 機械学習を用いたA/Bテストの場合、分析対象の決め方に注意する必要がある。また、実験期間中にモデルを更新する場合、そのトレーニングデータの選び方にも注意する必要がある。さらに、トレーニングデータの量についても注意を払う必要がある。

第23章 介入効果の長期影響の測定

  • p.253(p.241): 長期影響の分析方法は様々な方法が提案されているが、全てのシナリオに当てはめられるような汎用的な手法は現状ない。
    • (感想・考察)本書では各手法が大雑把に説明されているため、実際に使えるようにするには専門書を読む必要がありそう。また、ここで紹介されている幾つかの手法は実行に移す上で幾らか複雑なシステムを作る必要があり、そこに掛かるコストと、分析で明らかに出来ることの大きさを天秤にかける必要があると感じた。

A/Bテストの理論と実務の結び付き・相違

A/Bテストを解説した本や資料は理論もしくは実務どちらかに寄っており、両者の結びつきや違いを明らかに出来ていないと感じることがある。またそのことによって、仕事で実際にA/Bテストをする際に「(実務だとこうだけど)本当にこれで良いのだっけ」と立ち止まって考えてしまうことがある。

当記事では、こういった際に私が感じた理論と実務間の結びつきや相違をまとめ、考察することにする。

なお、以下の内容は「理論から考えると実務はこのように結び付いている『はず』」と考えたものであり、また一部は数学的な理解までは出来ていないため、ある程度の誤りがあるかもしれない。

統計的手法を用いたA/Bテストは何を明らかにしようとしているか。

  • 統計的手法を用いたA/Bテストでは、A/Bに分ける前の全体を母集団として、その性質を明らかにしようとしている。もう少し詳しく言うと、母集団を二つに分けることによってA/Bパターンそれぞれの統計量を出し、それに加えて標本抽出したことによって生じる標本誤差を統計的に考慮する、というのが統計的手法を用いたA/Bテストの考え方である。

  • これについて、間違えやすい考え方として「抽出されたサンプルの揺らぎそのものを考慮する」、すなわち「抽出されたサンプルは、全く同じサンプルであったとしてもその時々に応じて違う振る舞いをするので、その揺らぎを考慮する」というものがある。しかし、ここで考えているものはそうでは無い。

ランダムに抽出とは何か。

  • 推測統計学では「サンプルがランダムに抽出された」という仮定で理論が展開されることがあり、この理論がA/Bテストにも用いられているが、「ランダムに抽出」とは単純無作為抽出のことを言う。

  • この単純無作為抽出とは、母集団を構成する一つ一つの抽出単位が分け隔てなく等しく選ばれる抽出方法のことで、別の言葉で言い換えるとn個を抽出するときに母集団のどのn個のサブセットに対しても選ばれる確率が同じである抽出方法の事を言う。

  • 具体的な抽出方法は以下の Wikipedia の記事に記載されている。 en.wikipedia.org

理論と実務の違い①

  • 理論において良く学ばれることと実務におけるプラクティスには、まず次のような違いがある。

  • 理論においては多くの場合、母集団のサイズNが無限または復元抽出のケースを考えており、つまり復元単純無作為抽出の状況を考えている。一方で、実務においてはNが無限であることはまず無く、復元抽出も考えていない。そのため、A/Bそれぞれの標本を構成する確率変数列 X1, X2, …, Xn はそれぞれもはや独立ではなくなり、結果として中心極限定理が厳密には当てはまらなくなる。

  • 勿論、母集団のサイズが大きく、その結果Nを無限と考えても問題がない場合もあるが、それでも例えば母集団を50%対50%に分けたときには、各標本を構成する一つ一つの抽出単位を選んでいくときには各々の試行がもはや独立ではなく、しかもそれぞれの標本について全体の50%を選ぶとその影響も大きいのではないかと考えられてしまう。

  • それなのになぜ実務的には50%といった取り方が許容されているのかについては、以下の Wikipedia の記事に「Sampling done without replacement is no longer independent, but still satisfies exchangeability, hence most results of mathematical statistics still hold.」と書かれている。すなわち、この exchangeability という特性によって、一つの標本で50%を取っても良いと考えられているのではないかと思う。 en.wikipedia.org

理論と実務の違い②

  • 加えて、50%対50%に分けたときには、各標本「内」が独立でないだけでなく、各標本「間」も独立でない。分かりやすく言えば、Aに振り分けられた抽出単位というのはBには振り分けられないため、その意味で独立とは言えなくなってしまう。

  • つまり、多くの本や資料では、A/Bがそれぞれ独立に母集団に従っている状況、すなわち X_bar ~ N(μ_a, σ2/n) かつ Y_bar ~ N(μ_b, σ2/m) という状況を考えているが、これはそのままは当てはまらないと考えられる。

  • これについては、なぜそれでも通常の統計的検定が行われるのか・問題ないのかは理解していないが、直感的にはAの取り方がどのようなものであっても平均的に Y_bar ~ N(μ_b, σ2/m) となるから、というのが理由なのではないかと思っている。

理論と実務の違い③

  • 理論と実務の違いとしてもう一つあるのが、実務においては単純無作為抽出ではなく系統抽出をしている事があるという点。具体的に言えば、例えば実務においてはユーザーIDを2で割った余りが0であればAパターン、1であればBパターンといった分け方をすることがあり、これは母集団をユーザーID順に並べて一つ間隔でユーザーを抽出しているという行為になる。

  • これによって単純無作為抽出を想定して展開していた理論が使えなくなる。これについては、数学的な理解までは出来ていないものの、以下の Wikipedia の記事では系統抽出について「However, it is not the same as SRS… . It is, however, much more efficient (if the variance within a systematic sample is more than the variance of the population).」との記載があり、単純無作為抽出よりも効率的であるのだろうと思われる。 en.wikipedia.org

  • すなわち、系統抽出を行っていたとしても、それは単純無作為抽出より効率的であることから、単純無作為抽出と想定したときの棄却は、系統抽出では必ず棄却になるのではないかと考えられる。その意味で、単純無作為抽出と仮定しても良いのではないかと思われる。

統計的検定でよく使われる手法をまとめる

思い出すのに時間が掛かってしまうことがあるので、よく行われる検定においてどの手法がどのように使われるか、なぜ使うことができるかをまとめようと思います。

母比率の検定

母比率の検定においては、 n が十分大きいときに二項分布が正規分布に近似できることを用いて  z 検定を行います。詳細な流れは以下のようになります。

まず、成功確率が  p のベルヌーイ試行を考え、これを  n 回独立に繰り返すとします。 このとき、 n 回の中で出てきた成功回数を  X という確率変数で表すと、 X は二項分布に従います。すなわち、

 \displaystyle
X \sim B(n, p)


と表されます。また、このとき  n が大きいと二項分布は正規分布に近似できるため、 X は平均  np 、分散  np(1-p)正規分布に従います *1 *2 。すなわち、

 \displaystyle
X \sim N(np, np(1-p))


となります。更にこの  X n で割った確率変数、すなわち標本の比率(これを  \hat{p} とします)は正規分布の再生性により次のように表されます *3

 \displaystyle
\hat{p} \sim N(p, \frac{p(1-p)}{n})


そしてこの確率変数を標準化することで検定が行われます。

このように、母比率の検定では  n が十分大きいときに二項分布が正規分布に近似する性質を利用し  z 検定を行います。

補足

少し混乱しやすいですが、母比率の検定では上記のように  n が大きいときの近似の性質を使っているため、「得られたデータが正規分布に従っているか」ということを考える必要はありません。すなわち、正規性の検定を行う必要はありません。

母比率の差の検定

母比率の差の検定においては、各群が正規分布に従うことと正規分布の再生性を利用し、 z 検定が使われます。詳細な説明としては以下の通りです。

まず、1群目のサンプルサイズを  n_1 、母比率を  p_1 、標本比率を  \hat{p_1} とし、2群目も同様に  n_2 p_2 \hat{p_2} とします。このとき、 n_1 n_2 が十分に大きければ、標本比率  \hat{p_1} \hat{p_2} はそれぞれ正規分布に従います。

また、2群の標本比率の差  \hat{p_1} - \hat{p_2}正規分布の再生性の性質により平均  p_1 - p_2 、分散  \frac{p_1(1-p_1)}{n_1} + \frac{p_2(1-p_2)}{n_2}正規分布に従います。すなわち、以下のように表すことができます。

 \displaystyle
\hat{p_1} - \hat{p_2} \sim N(p_1 - p_2, \frac{p_1(1-p_1)}{n_1} + \frac{p_2(1-p_2)}{n_2})


そして、この確率変数を標準化することで検定が行われます。

補足

母比率の差の検定においても事前に正規性の検定を行う必要はなく、また等分散性の検定も不要です *4

母平均の検定

母平均の検定では、母分散が既知で  n が大きいときには中心極限定理により標本平均が正規分布に従うため、 z 検定を行います *5

一方、母分散が未知または  n が小さいときには、母集団が正規分布に従っていると考えられる場合、 t 検定を使います。母集団が正規分布に従っていると考えられるかは正規性の検定によって調べ *6 、仮定ができる場合は  t 検定を行う、という流れになります *7

母平均の差の検定

ここでは2標本に対応がない場合を考えます。このとき、母平均の差の検定では両標本の母集団が正規分布に従っていると考えられる場合、ウェルチ t 検定を使います。

そのため、流れとしてはまず両標本について正規性の検定を行い、その結果正規分布の仮定を満たせる場合にウェルチ t 検定を行う、となります。

なお、等分散性の検定を行ったのち、スチューデントの  t 検定 or ウェルチ t 検定のどちらを使うかを判断する方法もありますが、こちらは検定の多重性の問題が生じたり *8 、等分散性の検定結果に関する問題が生じたりする *9 ため、等分散性の検定を行わずウェルチ t 検定を行うことが推奨されています。

正規性の検定で正規分布が仮定できなかった場合は、ノンパラメトリックな手法であるマン・ホイットニーのU検定などを使います *10

*1: n が大きいと言えるための条件は、文献によって書かれていることが異なるようです。例えば、以下の Wikipedia のページでは「期待値  np および  np(1-p) が 5 よりも大きいとき」と書かれていますが、もう一つ貼った別の解説記事では「 np > 5 かつ  n(1-p) > 5 のとき」と書かれています。 ja.wikipedia.org techtipshoge.blogspot.com

*2:証明は以下のページに載っています。physnotes.jp

*3:正規分布の再生性の内容・その証明は以下の記事に載っています。mathlandscape.com

*4:等分散性の検定が不要なのは、母比率の差の検定では正規分布の再生性を用いて検定しており、 t 検定のように等分散という仮定を置いていないためです(そのため、その仮定が合っているかという検証もする必要がありません)。実際、以下の記事でも等分散性の検定が行われていません。bellcurve.jp

*5: n が大きいと言えるための条件には厳密な定義はなく、サンプルサイズが26以上または31以上と慣習的に言われています。ただ、 t 分布は極限として正規分布を含むので、 n が大きいときでも  z 検定ではなく  t 検定を使うという考え方もあります。書籍「Rで学ぶ確率統計学 一変量統計編」の P124 より。

*6:正規性の検定をする際には、ダゴスティーノのK二乗検定などを使います。詳細については以下のページが参考になります。bellcurve.jp docs.scipy.org

*7:正規分布が仮定できなかった場合の検定方法についてはうろ覚えですが次のようなものだったはずです。まず、そもそもの  n を大きくし、そうすると

  • 不偏分散  s^{2} が母分散に近づいていく(不偏分散の一致性による)
  •  \frac{\sigma}{\sqrt{n}} \frac{s}{\sqrt{n}} の差が分母の  \sqrt{n} の作用により小さくなっていく( n が大きくなると分母も大きくなり差が小さくなる、という意味です)

となります。そのため、中心極限定理が適用できる(すなわち標本平均が  N(\mu_0, \frac{s^{2}}{n}) に従う)と考え、 z 検定を行います。出典元を忘れてしまったため、後日見つけたときに内容の正誤を確認し修正も行います。

*8:詳細は以下のページの通りです。ja.wikipedia.org

*9:等分散性の検定の結果、帰無仮説(等分散である)が棄却されなかった場合、これは「等分散である」ということが支持される訳ではなく、等分散かが分からないという情報が得られたにすぎない、という問題です。書籍「Rで学ぶ確率統計学 一変量統計編」の P136 より。

*10:詳細は以下のページに載っています。ja.wikipedia.org