Google AnaltyicsでのABテスト

google_analytics_abtest_with_custom_reporting

ABテストのようなものを行ったので、メモを残します。

テストのようなと言う理由は、このサイトは、wordpress(CMS)で、アクセス数が少ないという条件なので、

  • サイドバーの特定のリンクが押されたのをコンバージョンとした。
  • CMSのサイドバーなので、どんなページでも、そのリンクが出る。

としたからです。同一条件とは言えないです。ランダムに振り分けた二つの群の数値、という説明が適当です。

ABテストを行う前に

必要性を考えましょう。アドバンスセグメントで十分かも知れません。

また、Google Web Site Optimiserで、ABテストそのものが無料で提供してます。

準備

ただ、必要性の検討も時間がかかるので、とりあえずやってみました。前のエントリーに書きましたが、http://www.rowtheboat.com/archives/39 (AB Testing with Google Analytics)が参考になります。A,Bに振り分けて、カスタムレポートで見る方法です。なので、手順は、

  • cookieに該当する値がなければ、PHPで乱数を振る。あれば、そのまま。これで、AかBを決める。(ユーザ固定方式)
  • 設定した値で、sytlesheetを読み込み、Google Analyticsのカスタム変数を設定する。
  • pageTracker._trackPageview()を送る。

ちなみに、AとBの違いは、リンクの色が赤いかどうかです。今作ってる、WikiへのリンクをAの方は赤くしただけです。

WS000029

最後に、一応コードを貼り付けます。(PHPは、hello worldくらいしか書いた事なかったので、変なコードかも)

レポート画面

冒頭の絵が出来上がりの図です。そこまで、至る過程としては、

WS000025WS000026

カスタムレポートのディメンジョンで、カスタム変数のキー > 値とし、

アドバンスセグメントで、ゴールのURLがページとなってるものをセグメントします。

WS000028

カスタム変数のキー1には、他の名前のものが出る人もあると思います。

該当するABTest20100120と選ぶと、冒頭の図になります。

考察

こんな感じでも、それなりに良い感じだと思います。コンバージョンが3つだけですが、レポートで、数字を解釈できると思います。

ただ、A/Bテストは差がでるものでやるべきだと思いました。あと、コンバージョンが上がるゴールにしないと、いつまで経っても有意な数字が得られません。

しかし、今回の複数に振り分けた群での指標を比較は、発見があるかもしれないです。なぜなら、普段のアクセス解析では、こういう行動をしたユーザは何を考えているのだろう? と分析します。分析した人は、それを踏まえ条件を設定し、群に振り分けるます。こういうのは、実装としては心理的抵抗感が少なく、アクショナブルかなと思います。がちがちのABテストよりも楽?な感じがします。

付け足し

今回、カスタム変数をいじったのですが、ページレベルのカスタム変数を、コンバージョンページに割り当てておくべきだったかもしれません。そうすれば、レポート画面でもう少し簡単に結果が見れたかもしれません。さきほど、設定してみたので、また書きたいと思います。

コード

$GLOBALS["flg"] = mt_rand(1,2);
function init(){
  function f($value,$i){
    $a = split("=", $value);
    if(count($a) > 2){
      if($a[0]=="1" && $a[1]=="ABTest20100120"){
        $GLOBALS["flg"] = $a[2];
        return;
      }
    }
  }

  $s = h($_COOKIE['__utmv']);
  if($s){
    $ret = split("|",$s);
  }else{
    return;
  }
  if($ret && $ret[1]){
    $ret = split(",", $ret[1]);
  }else{
    return;
  }
  if(!$ret){$ret = array('');}
//echo $GLOBALS["flg"];
  array_walk($ret, 'f');
}
init();

この後に、$GLOBALSに合わせて、stylesheet読み込み、カスタム変数の設定などを行いました。

初心者丸出しかも知れませんが、指摘してもらえると有り難いです。

ABテストと統計数字(A smart bearのblogから)

カイ二乗値が4より上の組み合わせ(A,Bの回数)を緑色にしてる。
ちなみに、カイ二乗が自由度1で値が3の時、p値は0.92。4で0.97くらい?

僕を含めた大部分の人は統計が苦手。だって直感じゃだめだから。そこで、英語で書かれたblogで良い記事を見つけたので、紹介します。Adwordsを題材にしています。

http://blog.asmartbear.com/easy-statistics-for-adwords-ab-testing-and-hamsters.html(ハムスターの動画がかわいい)

* Google AnalyticsでABテストやりたい! という人は、Google Analyticsでのマルチカスタム変数を使ったA/Bテストの例があります。http://www.rowtheboat.com/archives/39 (AB Testing with Google Analytics)。参考として。

基本は、コインの裏表が出た回数が、どれくらい開けば、インチキと言っていいのかの話だと思います。ABに差があると。

数式は、http://blog.asmartbear.com/easy-statistics-for-adwords-ab-testing-and-hamsters.htmlの引用で、

Okay okay, we suck at math. So what’s the answer? Here’s the bit you’ve been waiting for:

The way you determine whether an A/B test shows a statistically significant difference is:

  1. Define N as “the number of trials.”
    For Hammy this is 8+4 = 12.
    For the AdWords example this is 32+19 = 51.
  2. Define D as “half the difference between the ‘winner’ and the ‘loser’.”
    For Hammy this is (8-4) ÷ 2 = 2.
    For AdWords this is (32-19) ÷ 2 = 6.5.
  3. The test result is statistically significant if D2 is bigger than N.
    For Hammy, D2 is 4, which is not bigger than 12, so it is not significant.
    For AdWords, D2 is 42.25, which is not bigger than 51, so it is not significant.

(For the mathematical justification, see the end of the post.)

AとBの回数を足したのがN。AとBの差を引いて半分にしたのがD。Dを二乗してD2。D2がNより大きくなれば、晴れてイカサマ(信頼度がある)と言っていい。adwordsなら、AとBで勝負が付いた!という話になる。

  • 条件はAとBのimpression回数が同じ(adwordsのデフォルトは、そうでなかったかも?)
  • Aのクリック回数がA,Bのクリック回数がBとして、
  • Nは、A+B。クリック総数。Dは(A-B)/2
  • 上の例だと、32と19という数字でも十分ではない。34対19までいけば十分イカサマ。

これで、終わり。34対19だと、差(D)が15/2=7.5なので、7*7=49, 8*8=64で、N=53を超えそうだなあ、、という感じです。

かけ算の九九で、ABテストの結果を判別する話でした。


ちなみに、この記事(http://www.fallinstar.org/2010/01/ab.html)での数字は、350/4963, 285/4953 ですね。

少し強引ですが、同じ回数の試行と考えるために、350, 286 とすると、

D=1024  > N=636 となり、

と晴れて有意に差があると言えます。仮に、350, 290でも、D:900 > N:640で、差(カイ二乗値が4超え)はあると言えます。

信頼度がどれくらいかみておきましょう。http://stattrek.com/Tables/ChiSquare.aspx

ここでみると、自由度1のカイ二乗値が6.15の場合は、98-99%の有意水準になります。逆に言うと、1ー2%くらいはこういう結果になり得るみたいなので、100回同じページでのABテストをやっても、1,2回くらいこういう結果がありそう、とも言えそうです。

とりあえず、テストを打ち切る場合には、信頼度はこれくらいだったとメモを残しておけば良いのだと思います。何かの御札になるかもしれません。


Q&A

でも、その記事が良いのは、その後のバックグランンドの説明と、コメントのやりとりが教育的な事。とても良い記事です。

詳しくは読んで頂くとして、 僕が理解したことは書いていきます。

インプレッション数は関係ないの?

(訂正: 同じインプレッション数という前提で) 関係ないです。クリックされなかったという事はA/Bの差に関する話には関連しません。今回は、AとBが同じ確率であるはずという前提で、Aがクリックされた数とBがクリックされた数を比較してるだけの話です。

カイ二乗値の出し方

我慢して数字を飲み込みましょう。

  • 出す数字は、(実際の結果の数字 – そうであるべき数字)を二乗して、回数で割ったものです。
  • 今回は、その数字をAとBについてやるので、AとBで出た数字を足し上げて、試行回数で割ります。
  • それぞれの試行期待回数が、N/2になるのは、A/Bテストだからですね。100回コインを投げたらN/2の50回になって欲しいですよね。

数式も引用させてもらいましょう、(nと小文字になってますが、見易いので、僕の文では大文字のNにしてます、総試行回数と結果回数がこっちゃになりますが、気になる人にはごめんなさいです)

分数の計算をして、

  • (A*A + B*B – AN – BN + N*N/2)/(N/2) で、
  • Dは、(A-B)の差を半分にしたものだったので、2D=(A-B)で、
  • N=A+Bなので、N*N=A*A+2AB+B*Bとして、
  • ガチャガチャして、
  • 4D*D/Nです。 カイ二乗の値が。

それで、自由度1(A/Bの二つを比べるので1)のカイ二乗値の表を引っ張りだす or Excelを使って(冒頭の図は、Google DocsにExcelからコピーしたもの)出します。このカイ二乗値(実際の値とあるべき値の差を取って、二乗して、割った値)は、大きくなればなるほど、あるべき値から離れていて、イカサマ具合が増す数字です。3.8までいくと、95%くらいは、、、、イカサマと言っていいです。A/Bが半々とは、とても信頼できないです。

以下、数字で感覚をつかみます。

カイ二乗値(自由度1)が6.6までいくと、99%あり得ない。

3.8とか6.6とかのカイ二乗値は、上でガチャガシャやって 4D*D/Nでした。Dは、1番最初にやった、とにかく、AとBの差を取って半分にしろ! と言って便宜的に決めた数字でしたね。D = (A-B)/2

4D*D/Nの計算値が、4くらいまで膨らめば(Dが大きくなる = 差が開く)、まあイカサマというか、あるべき数字からは外れてると考えると、4くらいまで来てる、4D*D/Nが、なので、4=4D*D/Nで、D*D = N ですね。

8くらいまで値が外れてる事になれば、4D*D/Nが8なので、   D*D = 2N ですね。(信頼区間の数字は限りなく100%でしょうが)

冒頭にやった 31対19でいくと、D=(31-19)/2=6, N=50で、 4でも 36と50,8だと 36と100で話にならないですね。

35対19でいくと、D=8,N=54で、 4(カイ二乗の値)だと、64と54で、イカサマラインをやっと超えました。

というわけで、あるべき数字からのズレを計算して、分布表から、これくらいズレてれば、OKという数字をみてみました。4という数字の信頼度はネットの分布表をみたら、96%でした。なので、差を取って、半分にして、二乗した値と、それぞれの回数を足したものを比較して、差を取った方が大きければ、会議で、こっちのがコンバージョンが取れるパターンといえますね。保険として、100回に4回くらいで、同じクオリティ(コンバージョンが取れる)でも、こういう結果は出ると言っておくべきかもしれません。

以下: ココらへんから怪しくなる(2013/04/08)

信頼度10%だと、カイ二乗値は2.7なので、概算で、回数の方を7掛けにして、比較しても良いかもしれません。31対19は、ちょうど2.7くらいになるので、9割方は、こっちで良い!と言える話になります。

ビジネスの算段は8割方OKでイケの話だと、カイ二乗値は1.6くらいなので、回数を4掛けでいいです。50回なら20ですね。30対20なら、((30-20)/2)^2は、25なので、8割方違うとなります。29対21になると、8割でもそうだと言えないです。

*あくまでも、二者択一で、お互いの結果の原因に関連が無い場合です。それでも29対21だと8割方と言えない、、、という話になります。普通は、お互いの結果の原因は出所が同じで、どの出所の量で結果が決まったりするので、その場合は別に考える事になります。この場合は、ユーザの偏りとかでしょうか?

冒頭のGoolge Docsのテーブル図は、ここらあたりをまとめたものです。

T分布の話

CTRの数字をT検定するのではだめなのか?という話ですが、adwords(AB)は二項分布だけど、確率小、回数大だからいけるとありますが、よくわからなくなったので、パス。だれか解説して下さい。

破産、ガケからの転落のメタファー

上で出した表ですが、有意ゾーンに入った瞬間にテストの打ち切りをすると、結果にバイアスがかかります。

メタファーとしては、崖から落ちる酔っぱらいの話がでてます。僕は、昔、相場の人だったので、破産確率の話と同じだと思いました。人の信頼みたいなのも、こういう感じでしょうか?数式は難しくて、分からないのでパスします。

a smart bearのblogでは、回数(コンバージョンの数)を予め決めておけ!という話になってますが、少なくとも、実際に判断に使う有意水準より、テスト期間中では、その水準を引き上げておくべきなのは確かでしょう。

サンプル数の話

5個以上はいる。統計的にそうらしいです。理由はわかりませんので、分かるように説明してくれる人がいたら嬉しいです。

テストは、現場の判断で切り上げる事は多いでしょうが、どれくらいの信頼度で、そのテストを切り上げたかをメモとして残せば、暗黙知から形式知への転換の可能性も残ると思います。

ユーザインサイトの話を聞いてきた。

アクセス解析イチシアチブのツール勉強会で、ユーザインサイトのアクセス解析ツールの話を聞いてきた。他の方からのとてもまとまったレポートはこちら

背景情報

以前のベンダーツールをまとめて紹介してもらうセミナーでも聞いたんだど、今回はより細かい話が聞けるのかなという期待はあった。

ユーザインサイトの特徴は、http://ui.userlocal.jp/functions/ に書いてある。

話は、画面を見ながらの機能解説という流れだった。解説した人は、ハンサムな営業担当の人と美人な開発担当の人だった。

導入実績は、大手の企業が多いのかな?導入数は聞けなかったような。

無料版の中の人は11万サイト。動く人は3万サイト。動く人の総計でのPVの伸びは勢いが付いてるらしい。導入サイト数が増えたのか、個々のサイトのPVが増えたのか、どっちもだろけど。

英語と中国語も提供してると。(サポートはメールといってたけど、中国語の場合は、どうしてるんだろう。書ける人がいるのか、外注してるのか)。コンサルではなく、ツールベンダーなのでいいのかも。

特徴(ユーザ属性、ヒートマップ)

ユーザ属性

ユーザ属性情報を自社で算出?していて、それを解析情報にくっつけて出して価値を創出してる。

データは、どっかから買ってるわけではないと。

無料の”なかの人”から集めた情報を属性情報の推計に使ってると。実際のテストで推計情報と実際の情報の差をみたら、年齢と性別で8-9割、7-8割当たっていたと。年収などは、ipを元にした会社情報から、公開されてる年収情報を当てて出しているみたい。ネット習熟度という属性もあった。はっきり言って、アクセス解析なんかより、属性算出のがおもいろいかも。でも、中見は当然ブラックボックス。導入企業には、もう少し情報があるのかなあ? パネル調査の情報とも違うし、この事業領域には、他の会社がいるのだろうか? 謎だ。

ヒートマップ(+マウスレプレイ)

海外だとclicktaleが有名なのか。

試しに両方とも入れてみた。(後でupdateして、絵を張る。張った。)

http://friendfeed-media.com/bfe437d5b94818bdad84cc35fb0714478316f97e
clicktaleの方は、アクセスの無いサイトに張ったので、データがたまらないけど、画面構成だけ。
http://friendfeed-media.com/35d61fba8edaecc13a197f15d4acec808d3f2913

ここでも、ユーザ属性が効いてくる。通常のアクセス解析は、自分のところへの訪問者のデータの中からしかユーザのカテゴライズ(参入元、ページ閲覧履歴)できないけど、ユーザインサイトには推計とは言え、データがあるので、企画担当の人とかには便利そう。仮に施策が当たれば、相当なアドバンテージになりそう。実際の例はわからないけど、導入実績があるのは営業がすごいか、実際に役立つかしかない。ヒートマップとユーザ属性でクロス分析ができるので、見てても、お腹いっぱいになってくる。これを見てすぐにデザイン変更とはいかないかもしれないけど、A/Bテストの案とかは、これを見てたら浮かんできそう。

他には、新機能でマウスの動きを見せてくれるものや、ユーザのアクセス状況のリアルタイムでの表示や、機能追加がどんどん進んでる印象。ツール自体のOEM提供も始めるようで、元気のある感じを受けた。海外展開もしてるし、ビジネスモデルはユニークだし。中国でも、なかのひとをやって、ユーザ属性を取れたらおもいしろそう。

ちょっと脱線

ヒートマップは、マウスの動きから、視線の動きを推計して表示するもの。たぶん。文章なら熟読。絵なら注目。attentionを計測することになる。将来は、瞳孔の開き具合とか、脳波の発生具合までいけば、おもしろいと思った。ユーザテストとかで、やってる会社もあるのだろうか?

僕がアクセス解析をやってるのは、究極的には、情報が頭の中で伝達されたかどうかが知りたいわけで、マウスでもキーボードでも、なんでも測れと思うけど、ユーザインサイトは、ユーザ属性も含め、興味深い情報を集めてると思う。(キーボードの情報を集めないのか?と聞いたら、キーロガーになると一笑に付された。clicktaleの方は取ってる

* 今年は、電子書籍の普及元年と言われているけど、サイト解析より、電子書籍の閲覧解析がしたい。電子書籍端末の値段が下がれば、教育関係からその手の端末がでてもおかしくない。まずは、閲覧解析ではなく、採点からはいるだろうけど。理解のフィードバックを機械的に得られれば、公文的なドリル学習も一世代、先に進める。また、速読関連にも役立ちそう。

妄想モード二、ハイッテシマッタ。

以上です。

Google Analyticsでのマウス位置からFunnelReportもどき

google analyticsでは、もちろんヒートマップなんて高機能なものはない。ただ、apiは充実してるので、頑張れば、データ自体は取れる。

下の図は、10秒間隔で、ページの高さで見たマウスの位置をデータとして送っていた時のデータ。動機は、時間別にマウス位置が下まで下がっていけば、読まれてる計れるかなと思ったこと。今は取ってないけど(今日2010/01/16から再開した)、長いランディングページとかの設定の以来とかあれば、計画を立てて計測したいと思っている。時系列でなくて、ポイントを設置して、そのポイントをいつ通過したかみたいな、マラソンのコース取りみたいなのをイメジしてる。

何はともあれ、データはこのページの10秒事でのマウス位置。イベントアクションが経過時間数。ラベルにページurl、値にマウス位置(ぺージ内

割合)。1番右が平均値。いつもの事ながら母数が少ないけど。アクションの値は文字列なので、数字的な順列で並ばない。

マウス位置より、イベント数で見た時間別の離脱率?みたいなものの方が興味深いかもしれない。

image
google analytics event report mouse tracking

エクセルに落として、グラフにしてみた。棒はイベント数(時間経過での離脱率)、折れ線がマウス位置。

ヒートマップのファネルレポートとは、比べようがないけど、時間経過、離脱、読まれた位置という3要素は入っているので、想像はできる。

image
google analtyics event tracking time, mouseposition,visitor

突出したのは、スクロールして戻った人がいるかもしれない。

ヒートマップを作る人は、いろんなロジックを詰め込んでいるんだろう。