Skip to content

カスタム変数で試行錯誤した

2010/02/02 17:25 少し修正しました。

Google Analtyicsにカスタム変数が導入されて数ヶ月経った。未だに???なので、試行錯誤してみた。

まず、公式の文書は、http://code.google.com/apis/analytics/docs/tracking/gaTrackingCustomVariables.html

読んでも、よく分からない。文が英語のせいだけではないはず。なぜなら、日経BPのGoogle Analyticsは、Google Analtyicsのhelpの英語の説明を丁寧に説明してくれてる本なんだけど、それを読んでも良く分からなかったから。(*日経BPのGA本について書いた別の記事)

自分で試さないからだよ、と天の声に従い、試行錯誤した。

疑問点

  • カスタム変数をレポ-トで見ると、指標としてはセッション数とか出る。
    • これとスコ-プの話(ペ-ジ、セッション、ユ-ザレベル)の話がイメ-ジしづらい。
  • 同じindexを使うと、値が上書きされるらしい(そのセッションが、そのカスタム変数の値になるという事?)
    • でも、スコ-プが違うと、そうじゃ無い場合もある。
  • 複数のindexを同じセッションで使うと、どういう知見が得られるか? がイメ-ジしづらい。

解消のための行動方針

  • 同じセッション内で、カスタム変数の値を上書きしまくる。
    • 条件
      • スコ-プの違い
      • 上書きのタイミング
  • 同じセッション内で、複数のindexを同時に使う。

実際の設定

  • まず、a.html, b.html, c.htmlの3つのファイルを用意。
  • a → b → c と閲覧する
  • それぞれで、indexの1,2にカスタム変数を当てていく。

具体的な設定と結果

設定部分:表の水色部分です。

結果: 赤の部分より下です

*結果について)   通常のレポ-ト画面(+アドバンスセグメント)だと、複数のカスタム変数を合わせた上での指標数値は出せないようです。カスタムレポ-トなら、サブディメンジョンで複数のカスタム変数で降りて見られます。今回はData export apiで出した数値です。
別ペ-ジで開きたい方はこちら

別ペ-ジで開きたい方はこちら

(Data Export API Explorerで出しました dynamicセグメントは便利です)

WS000004

得られた事

  • ユ-ザレベルの上書きは、上書き前と後のセッションが、それぞれ提示されている
  • ペ-ジスコ-プの上書きは、セッション最後の値(ペ-ジ最後ではなく)しか記憶されない?
    • だとすると、ペ-ジレベルとセッションレベルが分かれている、その存在理由が分からない。
    • 僕の結果の指標数値の出し方に問題があるのか???
  • なぜか、ペ-ジビュ-が2倍になってカウントされている。(pagepathで値を見ると、a → a… cとなっているので、a,a,b,b,c,cとなっていそう)

やっぱり、ペ-ジレベルの変数設定は、このままでは使えない。何かがおかしい、、、、

感想を押しておく
分かった だいたい分かった よく分からない 納得いかない

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から)

僕を含めた大部分の人は統計が苦手。だって直感じゃだめだから。そこで、英語で書かれた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回くらいで、同じクオリティ(コンバ-ジョンが取れる)でも、こういう結果は出ると言っておくべきかもしれません。

信頼度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個以上はいる。統計的にそうらしいです。理由はわかりませんので、分かるように説明してくれる人がいたら嬉しいです。

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

感想を押しておく
分かった だいたい分かった よく分からない 納得いかない