こんにちは。データアナリティクスチームの【もりし】です。
<CRESCOデータ分析サービスの紹介ページはこちら>
https://www.cresco.co.jp/service/data_analytics/
今回はTableauを使って、できそうで…なかなかできない…でも頑張ればできる!「統計検定」に挑戦してみます。
サンプルファイルはこちらからダウンロードできますので、お試しください。
※流用の際は自己責任でお願いします
Webサイト分析でよく使われているABテスト結果をTableauで表示してみました。
Webサイトのデザイン
・cards layout
・single column layout
のどちらが成果につながりやすいか?を比較しています。
<数値の説明>
UU:ユニークユーザー数、Webサイト閲覧人数
CV(unique):(ユニーク)コンバージョン数、Webサイトの成果
CVR:CV/UU、Webサイトを閲覧した人の何パーセントが成果につながったか
ABテストの結果、CVRは「cards layout」のほうが高くなりました。
しかしCVR「0.39%差」という数字はどんな意味を持っているのか、直感的にはわかりにくいですね。
そこで「差が偶然である確率を求め、どのくらい信頼できる結果なのかを可視化したい」というのが今回のテーマです。
細かな用語解説は多くの本やサイトでされていますので、ここでは簡単にまとめるだけにしておきます。
・サンプル数(UU数)は100以上を前提とする
・正規分布を前提としたZ検定を使用する
これは実装を簡単にするための前提で、今回のケースではサンプル数が多いので問題ないと判断しました。
・有意水準は設定せずにP値をそのまま表示する
「誰が何を判断したいか?」で「何を可視化すべきか?」が変わります。
今回は先述の通り「どのくらい信頼できる結果なのか」という参考値を示したいのでP値を表示します。
詳細はサンプルをダウンロードして見てもらうことにしてポイントのみ解説します。
ポイント1:他の行と組み合わせて計算したいのでLOD関数を使用します
{EXCLUDE [design]: |
SUM( |
IF [design]='cards layout' THEN [UU] |
ELSE 0 |
END |
) |
} |
ポイント2 : LODで一意にした数値を使ってZ値を計算します
ABS( |
([p1]-[p2]) |
/SQRT([p_]*(1-[p_])*((1/[UU1])+((1/[UU2])))) |
) |
ポイント3 : Z値を利用してP値を計算します
IF [Z] > 4 THEN 0 |
ELSE |
1 - 1/(1+exp(-sqrt(PI())*(-0.0004406*[Z]^5+0.0418198*[Z]^3+0.9*[Z]))) |
END |
※エクセルの NORM.DIST()にあたる関数が無かったので近似値を求めています
※Tableauの有効桁数をオーバーするとNULLになってしまうのでIF文で防いでいます
(参考)https://community.tableau.com/message/207827
こんな感じでP-valueを表示することで、
AとBの差が偶然である確率は4%くらい → 参考にして良い結果なのでは?
という判断ができるようになります。
(一般的には5%を下回ればOKと判断することが多いようです)
なお、有意水準を設定したい場合は下記のようにすればマークや色付けができます
IF [P-value]<[有意水準] THEN '*' |
ELSE '' END |
以上、質問(ツッコミ)や興味のある方はお気軽にお問い合わせください。
<CRESCOデータ分析サービスの紹介ページはこちら>
https://www.cresco.co.jp/service/data_analytics/