b.hatena.ne.jp
で、ブコメでもちょっとコメントしてますが。
このサンプルサイズでは、検定をしても仕方がない。
まあ、A/Bでそれぞれn=10000みたいな状況の場合には、統計手法の選択もクソもなく、ほぼほぼ元々の母集団での比率に差があればpは0に近くなります。
計算するだけ時間の無駄です。比率出して比較すればいいだけです。
ちなみに、SASのコードで書くとこんな感じですが。
data test ;
attrib pattern length=$1. ;
attrib cv length=8 ;
attrib imp length=8 ;
input pattern cv imp ;
cards ;
a 30097 100399
b 28901 99896
; run ;
data test2 ;
set test ;
attrib event length=$4. ;
attrib uu length=8 ;
event = 'cv' ;
uu = cv ;
output ;
event = 'miss' ;
uu = imp-cv ;
output ;
run ;
proc freq data=test2 ;
table pattern * event /cmh ;
weight uu ;
quit ;
FREQ プロシジャ
表 : pattern * event
pattern event
度数 |
パーセント |
行のパーセント|
列のパーセント|cv |miss | 合計
--------------+--------+--------+
a | 30097 | 70302 | 100399
| 15.03 | 35.10 | 50.13
| 29.98 | 70.02 |
| 51.01 | 49.75 |
--------------+--------+--------+
b | 28901 | 70995 | 99896
| 14.43 | 35.45 | 49.87
| 28.93 | 71.07 |
| 48.99 | 50.25 |
--------------+--------+--------+
合計 58998 141297 200295
29.46 70.54 100.00
pattern * event の要約統計量
Cochran-Mantel-Haenszel 統計量 (テーブルスコアに基づく)
統計量 対立仮説 自由度 値 p 値
----------------------------------------------------------------
1 相関統計量 1 26.3809 <.0001
2 ANOVA 統計量 1 26.3809 <.0001
3 一般関連統計量 1 26.3809 <.0001
共通オッズ比と相対リスク
統計量 手法 値 95% 信頼限界
------------------------------------------------------------------------------
オッズ比 Mantel-Haenszel 1.0516 1.0316 1.0721
ロジット 1.0516 1.0316 1.0721
相対リスク (列 1) Mantel-Haenszel 1.0362 1.0222 1.0503
ロジット 1.0362 1.0222 1.0503
相対リスク (列 2) Mantel-Haenszel 0.9853 0.9797 0.9909
ロジット 0.9853 0.9797 0.9909
標本サイズの合計 = 200295
このモデルをそのまんま使って、ただし、
a 30097 100399
b 28901 99896
を
a 30 100
b 29 100
a 300 1004
b 289 999
で同じように検定してみましょう。
(見ればわかると思いますが、サンプルサイズを元の千分の一、百分の一という感じにしてます)
FREQ プロシジャ
表 : pattern * event
pattern event
度数 |
パーセント |
行のパーセント|
列のパーセント|cv |miss | 合計
--------------+--------+--------+
a | 30 | 70 | 100
| 15.00 | 35.00 | 50.00
| 30.00 | 70.00 |
| 50.85 | 49.65 |
--------------+--------+--------+
b | 29 | 71 | 100
| 14.50 | 35.50 | 50.00
| 29.00 | 71.00 |
| 49.15 | 50.35 |
--------------+--------+--------+
合計 59 141 200
29.50 70.50 100.00
pattern * event の要約統計量
Cochran-Mantel-Haenszel 統計量 (テーブルスコアに基づく)
統計量 対立仮説 自由度 値 p 値
----------------------------------------------------------------
1 相関統計量 1 0.0239 0.8771
2 ANOVA 統計量 1 0.0239 0.8771
3 一般関連統計量 1 0.0239 0.8771
共通オッズ比と相対リスク
統計量 手法 値 95% 信頼限界
------------------------------------------------------------------------------
オッズ比 Mantel-Haenszel 1.0493 0.5713 1.9270
ロジット 1.0493 0.5713 1.9270
相対リスク (列 1) Mantel-Haenszel 1.0345 0.6739 1.5880
ロジット 1.0345 0.6739 1.5880
相対リスク (列 2) Mantel-Haenszel 0.9859 0.8241 1.1795
ロジット 0.9859 0.8241 1.1795
標本サイズの合計 = 200
FREQ プロシジャ
表 : pattern * event
pattern event
度数 |
パーセント |
行のパーセント|
列のパーセント|cv |miss | 合計
--------------+--------+--------+
a | 300 | 704 | 1004
| 14.98 | 35.15 | 50.12
| 29.88 | 70.12 |
| 50.93 | 49.79 |
--------------+--------+--------+
b | 289 | 710 | 999
| 14.43 | 35.45 | 49.88
| 28.93 | 71.07 |
| 49.07 | 50.21 |
--------------+--------+--------+
合計 589 1414 2003
29.41 70.59 100.00
pattern * event の要約統計量
Cochran-Mantel-Haenszel 統計量 (テーブルスコアに基づく)
統計量 対立仮説 自由度 値 p 値
----------------------------------------------------------------
1 相関統計量 1 0.2183 0.6403
2 ANOVA 統計量 1 0.2183 0.6403
3 一般関連統計量 1 0.2183 0.6403
共通オッズ比と相対リスク
統計量 手法 値 95% 信頼限界
------------------------------------------------------------------------------
オッズ比 Mantel-Haenszel 1.0469 0.8638 1.2688
ロジット 1.0469 0.8638 1.2688
相対リスク (列 1) Mantel-Haenszel 1.0329 0.9018 1.1831
ロジット 1.0329 0.9018 1.1831
相対リスク (列 2) Mantel-Haenszel 0.9866 0.9324 1.0440
ロジット 0.9866 0.9324 1.0440
標本サイズの合計 = 2003
という感じで、「同傾向のデータでも増やすとより有意を見つけやすくなります」。
元の話に戻って考えてみればいいのですが、
- 「Aだと10万人来てコンバージョンしてくれた(?)のが3万人」
- 「Bだと10万人来てコンバージョンしてくれた(?)のが2万9千人」
というぐらいな話なのです。
この3万/10万と2万9千/10万で表されるような「サンプルでの比率」は「母集団の比率の推定値」になるわけなんですが、そうした時に「母集団でも確かにこの比率の差が発生する」という事を仮説として考え、その対立仮説「母集団ではこの比率の差がない」の確率を求めているというのがこのp値です。
まあ、例えば「想定される母集団が例えば10万人程度だったら」、ほぼ全例調査なわけで、そりゃその1千人の差は確かでしょうし、
- 「Aだと100人来てコンバージョンしてくれた(?)のが30人」
- 「Bだと100人来てコンバージョンしてくれた(?)のが29人」
だと、先ほどの話よりもサンプルが偶然そうなってただけの可能性があるわけです。
そもそもこんな例数で検定かけるとかwというものです。
連続性の補正。
"2-sample test for equality of proportions with continuity correction" は 2 郡の比率が等しいかどうかを検定したことを意味しています。その際、連続性の補正 (continuity correction) を行った旨が表示されていますが、連続性の補正の有無で経営判断が変わるほど結果に影響を及ぼすことはまずないと思われるので気にしなくて大丈夫です。
A/B テストで施策の効果を検証!エンジニアのための R 入門 - クックパッド開発者ブログ
連続性の補正というのは、カイ二乗検定は、この分布が連続した関数であるカイ二乗分布に従うという仮定で行うのですが、実際には人が0.1人とかそんな分離の仕方しないので、その補正の為に行うものです。
で。
これだけ例数が多いと、一人程度での不連続はあんま意識しなくていいので補正は入れなくてもいいでしょう。
そこら辺の丁寧な説明は
Fisherの正確検定かカイ2乗検定か
とかにあります。
ちなみに、他によく使うのは青木先生の所とか。
「経営判断が変わるほど結果に影響を及ぼすことはまずないと思われる」は、サンプルサイズが小さい時には可能性としてありますが、サンプルサイズが小さい時には、二項検定使うでしょうね。
というか、A/Bテストの結果が経営判断に直結するというのは、そもそも会社の経営として頭がおかしだけという話もありますが。
CVRが30%とか言っている時に、1%の差は意味があるんだろうか。
という事を考えた方がいいです。逆に、「どれぐらいの差があった時に検出できるようにするか」という事を検討していった方がいいでしょう。
A/Bテストを「した方がいいのか」というのも、一つの判断になります。
余談。
このあたりの人に、たまにあるのですが、CVRの足し算引き算して前後比較するのに躊躇いがない人がたくさんいます。
一見正しそうですが、サンプルサイズおんなじだった?とかそういう情報ガスガス落としたスライド見る事も多いです。
また、1回のテストでは、どうしてもそれに紛れ込んでくる影響が気になります。タイミングの影響がそこはかとなく存在したりする場合もあるわけですよ。そういうすべての要因を考慮するのは難しいのですが、
- 理想の条件でテストすれば、実態に合わないテストになる
- 実態に合わせてテストすると、どうしても沢山の要因を考えないといけない
という二律背反な所があります。
1%ぐらいのCVRなら、幾らテストで高い評価を得てたとしても、おそらくどんなユーザに届いたかとかの方が影響が大きく、そこに金をかけるのは効果的ではない、というような感じですね。
まああと、A/Bテストとかで画面考えてくのって、どちらかと言うとメンテナンスモードの改修で使えるか、ぐらいですねえ本当は。
サイトの成長期なら、テストで出てくる確率ほどの信頼性は当然ないです。検定とかではあくまでテストの対立・帰無仮説を包む大きな仮説が成り立つ時、使えるというものだったりするので。