アドバンスセグメントで擬似加重ソート(Excel のTable機能)

Google Analyticsだけに限らないTIPSですが、簡単でそれなりに実用的に使える方法だとおもうので、紹介します。

2010年の秋にGoogle Analyticsの加重並び替えが導入されました。Wikiの方の紹介。新機能として紹介されたに似た感じのものを、アドバンスセグメントでやろうとするものです。

ちょっとズルですが、APIでデータを取得するのが前提です。

APIでのデータの取得は、実は簡単で、

    1. Date Feed Explorerを使う(日本語だと止まるので、IDを直接入れる必要がある。)
    2. http://excellentanalytics.com/ を使う。
    3. //abc-analytics.com/data-feeds-query-explorer-in-windows-applicationを使う。

で出来ます。他にも、色々なツールがあります。

今回は、Cの自作ツールを使ってデータを取得しておきます。

閲覧開始ページ、キーワード、開始数、直帰数を取ります。

WS000033

で、タイトルの話のエクセルの貼り付けます。ここから、本題です。

コピペしたあとは、テーブルにします。

  • テーブル名を英語にします。大事です。
  • 一行目に数字を入れるので、空けておきます。

WS000034

もう少し、下ごしらえが続きます。

  • 直帰数になっているので、直帰率をいれます。
  • 一行目に集計値を出すようにします。
    • ここで、テーブル機能が行きます。

entrancesの集計値は、下図のようにススメます。

(テーブル名が英語だと補完が効いて、マウス無しで^^です)

WS000035 WS000036 WS000037

式は、=SUBTOTAL(9,table1[entrances]) になります。

同じようにbounces(直帰数)も計算します。=subtotal(9,table1[bounces]) ですね。

bounceRate(直帰率)は、この2つを割り算します。

ここで、もう一回、画像。

WS000038

ここから、本当の本題であった、加重ソートを入れます。

前提として、100回以上セッションがあった、キーワード+ページは、そのまま。ソレ以下のものを、全体の平均値と按分する方針です。

B1に 分かれ目の数字、100を入れておいて、TrueBounceRateの列を作りましょう。

WS000039

上の数式を説明します。

entrancesが100以上なら、その列のBounceRateのまま。なので [@BounceRate]

以下なら、全体の平均値(E1)と[@BounceRate]を 全体のEntrances(C1)と列のentrances([@enttances])で按分する。

([@bounces]/$B$1 * [@BounceRate] )   +   (1 – ([@bounces]/$B$1)) * $E$1

Googleの加重ソートは、たぶん似たような感じだと思う。

加重ソートはいろいろ本を読んだけど、理論的背景はよく理解できなかった。

2次元の正規分布の場合に、なんやからすると、上記のような単純な式でもOKという話だったと思うけど、よく理解できなかったので、公開レクチャーしれくれる人がいたらお願いします。@phar

で、ここまでは単に計算しただけど、ここからエクセルのテーブル機能が生きて来る。

ランディングページ単位のキーワードでの加重ソート、ある単語が含まれるキーワードデータの加重ソートとかが簡単にできる。

最初の画面で、

WS000040

landingを/api ディレクトリ以下のものに絞る。

WS000041

その後、TrueBouncecRateを昇順に。(自動で順列にならない、、、フィルターするたびに、並べ替えの必要がある。ここは、イケテナイ。)

WS000042

まあ、それでもそれっぽいソートが出来上がる。landingページを絞った上での、加重ソート。

今回は、ディメンジョンがキーワード、閲覧開始ページという組み合わせだけど、ソレは自分でデータを持ってくるときに好きに選べばいい。

また、加重平均の按分の中心になる平均値(直帰率)も、テーブルでフィルタリングすると、subtotalでそのフィルタリングされたデータの平均値で計算し直されるので、都合が良い。

あまり、データ数が少なくなるとだめだけど、そのデータ全体での平均値を適用して計算しなすのは、フィルタリング前のデータの平均値を持ち出すより適切なはずだ。

まとめ

google analyticsには、加重ソート機能がありますが、似たような事をエクセルでしました。

エクセルのテーブル機能を使うことにより、簡単に特定ディメンジョンの加重並び替え(条件は複数でもOK => アドバンスセグメント)ができることを図示しました。 これは、たぶん、今のレポート画面ではできないことだと思います。 ただし、並び替えのアルゴリズムは違うのでしょう。

冒頭のリンクにも 今回のようなことをやった記録があって(加重ソートが出始めたころに書いたやつ) 、実際の GAでの順番と比較したグラフがありますが、そんなにズレはないと思います。

そんなにってどんだけ? 主観です^^。前やったとき、順位相関とか計算してみたけど、それを用いるのが正しいのかさっぱり分からなかったし、数値も直感的に理解できなかったので、、、単純な加重ソートもGAのソートも、結果としてはそんなに変わらないと思いました。

確か、加重ソートをアドバンスセグメントでという話は、結構要望であったと思うので、擬似ですが、それなりに役に立つ作業工程の紹介だと思います。試してみてください。

アドバンスセグメントを使った上での、疑似目標到達プロセス

先週のアクセス解析ワークショップで、考えた事を元にこのエントリーを書いてます。今回のエントリーの内容としては、ROI revolutionの記事(funnels_on_the_fly_in_google_analytics)とほとんど同一です。参考にしました。

目標到達プロセスとアドバンスセグメント

目標到達プロセスで、目的達成を図示する

アクセス解析の目的は、ビジネスゴールの達成ができているのかを測定することです。もちろん、サイトによってゴールの種類はさまざまです。PVから始まって、直帰率、読んで欲しいコンテンツへの到達率、資料請求申し込み、商品販売、さまざまですが、解析の目的には、ゴールがついて回ります。ゴールの達成度を測るわけです。でも、その過程も評価できたら嬉しいです。Google Analyticsでは、この過程を図示する機能があります。目標到達プロセスと呼ばれるものです。(プロファイルごとに設定が必要です)

目標到達プロセス

* 数字の見方に気を付ける。途中のプロセスをすっ飛ばして、ゴールに来た奴はどうやってカウントしているかです。

  • 何もかもすっ飛ばしたものは、直接、横に表示される。
  • トップ(図の場合Home)に来て、途中を飛ばしてgoalしたもの。こういうものも、図の中では途中を経過しているように図示される。

となってます。フォームの離脱率など順番が保証されている場合は、心配はいりませんね。

数字の見方に気を付ける点はあるものの、ゴールの過程が図示されます。どこでセッションが切れている(到達してる)が分かりますので、離脱の多い所の改善を考えて、リンクの位置を変えようといった話につながります。

分析手段である、アドバンスセグメント

こうやって、道のりの過程を考えてデータを見る方法とは別に、ユーザ属性を仮定して特定の属性の人(セッション)の行動指標を見る事もGoogle Analyticsではできます。特定のセッションのみを抽出してレポートしてくれるアドバンスセグメントです。

検索してきたセッションはどうなんだろう? 特定のデバイスからのセッションはどうなんだろう? ページビューが5以上あるセッションはどうなんだろう? Google Analyticsで使うディメンジョン・指標のほとんどについて、セッションデータの切り出しができます。

目標達成プロセスがサイト全体でのセッションが、ゴールまでの到達(逆にいえば離脱)を見たのに対して、アドバンスセグメントでは、特定のセッション(複数)についていろんな指標面を見る、すなわち、これら(セッション)がいったいどんなものだったのかを見るわけです。目的達成のための調査をしてくれるわけです。

しかし、目標到達プロセスとアドバンスセグメントは同時に使えない

同時に使いたいですよね。僕もしたいです。でも、機能として出来ません。パフォーマンス上の理由なのか、特定の指標については、アドバンスセグメントが用意されていません。以前のエントリーで書いたユニークユーザー数もそうでした。

でも、セグメントしたデータでの目標到達プロセスを知りたいですよね?少し面倒ですが、やってみましょう。

アドバンスセグメントのテストを使った擬似的な離脱プロセス数

このサイトはデータが少ないので、分かり易いデータではないのですが、このサイトの3つのページ、what_are_visits…, top, profileで、what_are_visitsがランディングになったページで、profileをゴールとし、topをプロセスとします。what_are から topへいって、profileというイメージです(実は、それは出来ないのですが、便宜上そうさせておいて下さい、出すのは疑似的な数字です)

では、実際のデータをみていきましょう。

まずは、アドバンスフィルターでページ別セッション数をCHECK

特定の閲覧開始ページでのページ別セッション数

正規表現は覚えると便利です。僕も昔は、???でしたが、使えると便利です。Google Analyticsでは使う場面がチョコチョコ出てくるのが頑張りましょう。

それぞれのページがどれくらいのセッションを獲得したかが、ページ別セッションに現れます。”/”が9。”/profile”が4。ただこれは、ばらばらの数字で、ゴールの過程がどうかわかりません。ゴールに設定したprofileでは4セッションという目標を達成したのですが、トップの”/”が目標達成プロセスとして、何セッション数いたのかが不明です。

アドバンスセグメントの管理画面で、テスト機能を使う。

アドバンスセグメントの管理画面は、もちろん、設定をする場所なのでが、セグメントのテストを使うと、おもしろい数値が取れます。

セグメントのテスト1

上と同じ数字です。セッション数9ですね。

それではその中で、ゴールであるprofileまでは、どれだけのセッションが行ったのかというと、上の図に And条件を足して、

セグメントのテスト2

最終的には、セッション数1、、、です。上のセッション数9が、1になりました。最初にアドバンスセグメントで上位のコンテンツを見た時は、”/”が9セッションで、”/profile”が4セッションでしたが、両方を通過(到達)したセッションは、1となったわけです。

疑似的目標到達プロセス

整理しますと、/what_areで、169セッションありました。で、top と profileを同時に見られたセッションは、1セッションだった。

実際のプロセスなどで順番が仮定できる場合は、これでセグメントしたセッションで、離脱(到達)プロセスの数字が出せます。

Topがプロセスで、profileをゴールという順番を仮定すると、169 → 9 → 1となります。9/169=5.2%。最初に85%が離脱して、次に 1/9=11%なので、89%が離脱。

数字も1があったり、信頼性はないですが、フォ-ムなどのプロセスで分析できるデータをお持ちの方は、今回のような形で、セグメントされたセッションに対しての目標到達プロセスで見た離脱数を出せると思います。(プロセスの順番が想定できるものという条件になりますが)

まとめ

  • Google Analyticsで使う事の多い、アドバンスセグメントと目標到達プロセスがどういうものかの説明をしました。
  • その後、この二つは、同時に使う事ができない事を書きました。
  • 代替的手段として、アドバンスセグメントの条件を一つづつ増やす事で、疑似的(順番を仮定)に目標到達プロセス(プロセスでの離脱数)をだしました。
  • 順番さえ想定できれば、絞り込み条件を一つづつ増やす事で、3つ以上のプロセスにも適用が可能です。フォームなどの離脱プロセスを、アドバンスセグメントで見たいと思った場合に有効だと思います。

指標数値の補正とアドバンスセグメント

平均値が出発点になる

サマリ-画面で、いろんな数値を見る時に、多くの数値は平均値が出てきます。平均値に回数を掛ければ、全体の数字が出るわけですから、データをイメージする方法としては、とても合理的です。日常生活でも、平均にするといくら、というのは頻繁に出てきます。僕らは、どれくらいの確率で起きそう?と問われたら、過去の平均を即座に計算します。 webサイトなら、コンバージョン率。どれも、成功したものを試行回数で割った数字=平均値を議論のたたき台にしています。

それで、でてきた平均を元に、サイトには、毎日これくらいのユ-ザが来て、これくらいのペ-ジ数を見てくれると想像します。その後に、トラフィックをチェックしたり、特定ペ-ジの貢献度を分析したり、コンバージョンへの導線を見たりすると思います。

分布データが見れるモノもある

でも、平均は信用ならないので、実際のデータの散らばりぐあいが見たくなる時があります。Google Analyticsでは、個別のセッションがどういったモノかを見る場合は、リピート訪問数(*)にいくのがいいです。ここではリピートセッションに関する情報だけでなく、セッションの滞在時間分布、ページビュー分布が表示されます。あとは、前回セッションからの間隔日数、そのユーザの何回目かの訪問がでます。

*この名前の付け方はヘン(英語の方は:loyalty)だと思います。

分布データからは、中央値とか散らばりとかがわかる

分布データでは、自分の頭の中に、イメ-ジができます。これくらいのセッションが、こうなる、、と。平均値はこうだけど、実際にはこういう感じなのだな、、、とイメージを、ボンヤリながらも自分の記憶に保持する事が可能になります。

でも、言葉抜きのイメ-ジは人には伝えられない

議論したり、blogを書いたりするときには、言葉が大切です。ビジネス度が上がれば上がるほど、言葉・数字以外でなんとかする、、、とはいかなくなります。

平均値を少しはマシな数字にする

なので、なんとか、アウトプットする数字を、分布データ図からのイメージに近づけたいです。

方法としては、外れにある奴には退いてもらうわけです。アドバンスセグメントさんが、やってくれます

指標を使ったアドバンスセグメントの絞り込み

アドバンスセグメントの利用方法としては、ディメンジョン側での絞り込み(トラフィックタイプの限定、特定ページ群でのデータに絞る)事が多いのですが、指標側でも絞り込みが可能になっています。指標数字で、外れに居る奴には退いてもらいましょう。

1. イレギュラーなセッションに退いてもらう

Google Analyticsでは、データの整理が難しいページビューを、特殊なセッションとして処理しているようです。セッション中の外部ドメイン経由の流入を、

  • トラフィックとしては記録
  • コンテンツはなしとする

こういうセッションとして扱うようです。退いてもらうには、コンテンツに関する指標(ペ-ジ別セッション数、ページビュー、閲覧開始数)がゼロで見つけます。

WS000007 WS000008

ペ-ジビュ-、滞在時間などに変化が見られます。(こんなに違うのは、僕のサイトの計測がヘンだからです。普通はほとんど変わらないかもしれません)。

2.ペ-ジビュ-の多いものに退いてもらう

autopagenizeなどで閲覧してもらう時は、実態以上にペ-ジビュ-などが増えます間違いでした。でも、とりあえず、10ペ-ジ以上のものを外しましょう。

もちろん、10ペ-ジ以上のものを見るのもありです。

WS000010 WS000011

若干ですが、平均ペ-ジビュ-に変化がみられました。滞在時間があまり変わらないのは、10ページ以上のセッションが特殊という傍証かもしれません。

3.滞在時間の多いものに退いてもらう

僕のサイトはeventTrackを延々と出し続ける計測方法なので、ページが開いている限りは滞在時間がカウントされます。また、最終ページがカウント対象外になる事もないはずです。ただ、タブ型ブラウザで放置されているのも滞在時間にされているので、そういうのを除けておきます。

advanced_segment_wih_time_on_site WS000013

2割強のセッションが放置されるのは、多いような気がしますが、、、平均PVは、異常値なので、平均ペ-ジ別セッション数を出しますと、1.21(全体), 1.25(20分以下)で、放置セッションを含む全体の方がPVは少なめと、通常の数値とは逆転します。

まとめ

  • 平均値と分布図を見比べる必要性を書きました。
  • セッションに関する情報が、名前がヘンだけど、ユーザー > リピート訪問数 でみるとイイと書きました。
  • 言葉にならない分布図に代わって、平均値で議論するための前提として、外れた値を持つセッションを除外しました。
  • その方法として、アドバンスセグメントの指標で設定をしました。

今回の話は、アクショナブルでもないし、キーパフォ-マンスと直接関連するものでもないのですが、分析するときに、ワーキングメモリーに入る事が多い平均値には、留保を付けておく事の価値を書いたものだと思ってます。

だんだん、書くネタに行き詰まってる証拠かもしれません。(分析、解説記事まで昇華できなかった言い訳です)