こんにちは。データアナリティクスチームの【もりし】です。

 

<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] &gt; 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]&lt;[有意水準] THEN '*'
ELSE '' END

以上、質問(ツッコミ)や興味のある方はお気軽にお問い合わせください。

<CRESCOデータ分析サービスの紹介ページはこちら>
https://www.cresco.co.jp/service/data_analytics/