LoginSignup
9
9

More than 5 years have passed since last update.

p値とはなにか

Last updated at Posted at 2016-03-14

p値とはなにか

概要

一言で言うと、意味のない数字(偶然に起きる)可能性がx%

コイン投げの実験結果

  • 100回のコインを投げると、81%の確率で、44-56枚になる
  • 19%の確率で、7%以上本来の確率(50%)から値が離れる

100枚投げて44枚が表になるときのp値は?

  • 以下のようにbinom.testを実行する
  • binom.test(c(44, 56))
    • 44枚が表、56枚が裏という意味
    • p値は、0.27。(ざっくり言うと、0.5でない確率が0.27)
    • 95%の信頼区間で、0.34-0.54になる
> binom.test(c(44, 56))

    Exact binomial test

data:  c(44, 56)
number of successes = 44, number of trials = 100, p-value = 0.2713
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
 0.3408360 0.5428125
sample estimates:
probability of success 
                  0.44 

binom.testの使い方

  • 省略しないと、binom.test(c(44, 56), p = 0.5, conf.level = 0.95)となる
  • 確率が0.55の時は、p値は3%になり、55%である確率は3%となる。
> binom.test(c(44, 56), p = 0.55)

    Exact binomial test

data:  c(44, 56)
number of successes = 44, number of trials = 100, p-value = 0.03427
alternative hypothesis: true probability of success is not equal to 0.55
95 percent confidence interval:
 0.3408360 0.5428125
sample estimates:
probability of success 
                  0.44 
  • 信頼区間が80%の時は、37%-50.9%になる。
> binom.test(c(44, 56), conf.level = 0.8)

    Exact binomial test

data:  c(44, 56)
number of successes = 44, number of trials = 100, p-value = 0.2713
alternative hypothesis: true probability of success is not equal to 0.5
80 percent confidence interval:
 0.3727990 0.5090527
sample estimates:
probability of success 
                  0.44 

A/Bテストの行い方

  • A/Bテストを行った結果が偶然かどうかは以下のようにprop.testを使ってp値を計算する。
prop.test(c(5000, 53), c(10000, 100))
=> p値 0.6195

prop.test(c(5000, 58), c(10000, 100))
=> p値 0.1358

prop.test(c(5000, 58), c(10000, 100))
=> p値 0.02216

prop.test(c(5000, 510), c(10000, 1000))
=> p値 0.5688

prop.test(c(5000, 520), c(10000, 1000))
=> p値 0.2408

prop.test(c(5000, 530), c(10000, 1000))
=> p値 0.07574

=> 厳密には、このp値は1つをコインを投げたときと、2つのコインをなげて比較すると違うので、実験結果(例えば、100回のコインを投げると、81%の確率で、44-56枚になる)と同じではないですが、だいたい数字は近い。

信頼区間をいくつに設定するのか

=> Wantedlyでは、基本的には90%で見ているが、PVが多く実験しやすいページは95%。

練習: A/Bテストの検証をしてみてください

10万PVの画面で、AとBのボタンのテストをしました。

A 5.1万PV 5.5%
B 5万PV 5.7%

Bにすることで改善しました
AとB二つの画面で、応募ユーザの改善のA/Bテストをしよう
A 2万人 10.5%
B 2万人 10.0%
おお、Aの機能を追加することで、改善しました
10PVの画面で、ABのボタンのテストをしました。
Aは、click率は上がるけど、その後のコンバージョンは下がりそう。(応募数は増えるけど、企業からの返信率は下がりそう)
Bは、click率は低いけど、その後のコンバージョンは上がりそう。(募集のハードルは高いけど、いい人が応募してくれそう)

A 5万ユーザ 応募率 3% 返信率 50%
B 5万ユーザ 応募率 2.7% 返信率 55%

振り返り

  • 結果が改善しているかどうか、偶然なのか判断する必要がある
  • 信頼区間をいくつに設定するのかによって判断が変わる
  • p値は、結論を出す前に、サンプル数を増やすことで、p値を低くすることができる。(待つとp値 は下がる)
  • binom.testで信頼区間を調べる。prop.testでA/Bテストを行う

施策をする上でのA/Bテストの捉え方

  • 対象のPV(人数)が少ない、コンバージョン率が低いときは、検証しにくい
  • 実験対象のコンバージョンの影響範囲が分からないときも利用しにくい
  • 深いコンバージョンの精度は非常に悪く、期間内に判断できないことも多いが、サービスを続ける上では大切になってくる
  • A/Bテストすれば分かるということでもない。
    • 特に初期のリリースでは分からないことのほうが多い
    • A/Bテストで分からない改善に対してA/Bテストを行うことは無意味。よくなったかどうかも分からない。
  • 改善するときは、A/Bテストで分かる改善を行うか、分からない場合は別の判断(デザイナー判断)で行う必要がある。
  • PVが多い時は、A/Bテストより重要になる
  • 10万人のユーザがいるときにできる精度と、1万人のユーザがいるときにできる精度と、1000人のユーザしかいないときの精度は全然違う。

A/Bテストで重要なことまとめ

  • 今取り組む問題はどのくらいの精度(コンバージョン)で改善しないといけないか把握する
    • PVがある画面はA/Bテストをするのがいい
    • PVが少ないのに、数字を見て、改善をしても意味がない。数字をだけでなく、ユーザのフィードバックや自分で改善を見つけることも重要。
    • 深いコンバージョンの判断の場合は、数字で判断できない問題もある。その場合は、数字以外の判断が必要で、判断をしないことがいいわけでもない
  • p値を下げることと、判断を早くすることは両立できないときもある
    • 基本的には、正しく改善するのでなく、素早く改善するほうがよいことが多い

=> 施策を行う前にどのくらいのPVが必要か、どのくらいの改善が必要か考えよう

関連

9
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9