#アクセス解析
R言語でA/Bテストの結果を検定してみよう

どちらのデザインがいいかという議論はデザイナーのこだわりやクライアントの好みなどの主観が入り、あまり建設的ではない場合が多い。
そんな時A/Bテストを行い、どちらのデザインがよりコンバージョン率が高いかなどを述べられると定量的にどちらのデザインがよりいいか判断する材料となりえる。
ただ、サンプル数が十分に大きくない場合A/Bテストの結果を真に受けるのは時に危険だ。
例えば赤色のボタンと緑色のボタンとでどちらがよりクリック率が高いかテストした時に、どちらのパターンにも1000人のユーザーが訪問し
赤:20クリック
緑:30クリック
という結果が得られたとしよう。単純にクリック率を考えれば赤色のボタンは2%、緑色のボタンは3%だから緑色のボタンの方がいい、という気がする。
しかし、この結論は本当に正しいと言えるだろうか。ただの偶然であった可能性はないだろうか。
このようにデータの信頼性を検討したい時に使えるのが、統計学でいうところの「有意であるか」という考え方だ。
「有意である」とは「偶然ではない」ということだと思っていただければいいだろう。
では、どうすれば「偶然ではない」と言えるのだろうか。
前提として、100%「偶然ではない」と言い切れることはない。例えば100回コインを投げた時100回とも表が出た、という偶然が起こり得る確率はどこまでいっても0にはならない。
そこで統計の世界では「有意水準」を定めて、まぁこのくらいの確率なら現実的には「偶然ではない」と言っていいだろうという判断基準とする。一般的に有意水準には1%または5%がよく用いられる。
A/Bテストなどはそこまで厳格に信頼性が求められない、かつ十分なデータ量が得られないことも多いので、私は5%以下、つまり95%以上の確率で「偶然ではない」という基準で十分だと考えており、本記事ではこれを有意水準とする。
偶然らしさを求める検定方法はいくつも存在するが、最も一般的に使われている(汎用性の高い)ものとしてピアソンのカイ二乗検定が挙げられるだろう。A/Bテストの信頼性を確かめるには大体これが使われることが多い。
カイ二乗値は
χ^2 = Σ(観測値 – 期待値)^2 / 期待値
で求められる。
求められるが、計算式を書き出すとアレルギーが出る人が多いので割愛しサクッと検定する方法を紹介する。
今回はR言語を使って検定してみよう。
R言語とは統計解析に特化したプログラミング言語だ。データサイエンス界隈でよく使われている。
https://cran.r-project.org/
インストーラーをポチポチするだけなので導入に躓くことはないだろう。GUIも用意されているので、マニアックな用途のわりにはとっつきやすいと思う。
上述の赤いボタンと緑のボタンの例をRでカイ二乗検定してみよう。
先程の例をまとめて表にすると
クリックした|クリックしてない|合計
赤|20    |980     |1000
緑|30    |970     |1000
ということになる。
まず、この表を行列として変数に格納する。

小難しい式を入力する必要はなく、組み込み関数を打ち込むだけ。

これだけ。しかし、注意点としてRでカイ二乗検定をした場合、デフォルトではイェーツの補正がかかる。
イェーツの補正はデータ数が少ない時に有用とされるが、補正が強すぎるので必要とされない場合が多い。そこでオプションを追記し補正させないようにしておこう。

とすると

こんな感じの値が返ってくる。
読み解くとカイ二乗値が2.0513、自由度は1、p値が0.1521。
ここで着目すべきなのはp値だ。p値とは、検定したデータが偶然起こり得る確率を示している。
つまり、このデータはおよそ15%の確率で偶然起こりうることであることがわかる。
この値と、先に示した有意水準を比較する。
私は有意水準5%と定めたので、それより大きいp値を示したこのデータは「偶然だった可能性が高く、緑色のボタンの方がクリック率が高いとは言いがたい」という結論が出せる。
 
このように、データを直感的に受け入れるのではなく統計学的に有意であるかを検定する試みは有意義だ。
しかし「統計的に正しい」ということを鵜呑みにするのもまた危険なことだ。「そのデータ、15%の確率でただの偶然ですよ」などと述べる人がいたらどうだろうか。間違いなく嫌われる。
あくまでどちらがいいか答えが出せない時の一つの指標程度に覚えておくとよい。
もしくはどうしても論破する必要がある場合にも有用だろう。嫌われるけど。

CONTACT

この度は当社へご興味お持ちいただき
ありがとうございます。
Webに関するお悩みございましたら、
是非一度お気軽にご相談ください。
平日10:00~19:00