読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

(R + Google アナリティクス)バブルチャートの書き方+マトリクス分析の注意点

バブルチャートの書き方

個人的にはあまり思い入れのない可視化なのですが、Google アナリティクス関連のエントリを書いているうちに、代表的な統計グラフは網羅してやろうという気分になって来たので、バブルプロットの書き方を簡単に紹介します。

下図は各ランディングページ(閲覧開始ページ、LP)ごとの新規率(新規訪問の割合)、直帰率、セッション(訪問)数を示したものです。

f:id:abrahamcow:20150205083028p:plain

多くのランディングページが新規訪問80%、直帰80%前後に集中していることや、新規率と直帰率の間に正の相関関係があることが見て取れます。

書き方は次の通り。

まずは RGoogleAnalytics のオーサライズ。

詳しくは、

を参照。

library("RGoogleAnalytics")
query <- QueryBuilder()
access_token <- query$authorize()

ここでアクセストークンをコピペ。

#データ取得
ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)

sta = "2014-01-01" #データ取得期間
en = "2015-01-31" 

query$Init(start.date = sta,
           end.date = en,
           dimensions = "ga:landingPagePath", 
           metrics = "ga:sessions,ga:bounces,ga:newUsers", 
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
#           segment = ,
           sort = "-ga:sessions",
           max.result = 10000,
           access_token=access_token)

LPdat  <- ga$GetReportData(query)
#データ取得は以上
LPdat$直帰率 <- LPdat$bounces/LPdat$sessions #新規率を計算
LPdat$新規率 <- LPdat$newUsers/LPdat$sessions #直帰率を計算

library(ggplot2)
library(scales)
#プロット
theme_set(theme_bw(15,"HiraKakuPro-W3")) #日本語のフォントを指定
p1 <-ggplot(LPdat,aes(x=新規率,y=直帰率))+
  geom_point(aes(size=sessions))+
  scale_x_continuous(labels=percent)+
  scale_y_continuous(labels=percent)+  
  labs(size="セッション")+ 
  theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank())
#grid(格子線)を消してる

また、

p1+stat_ellipse()

とやると、簡単に確率集中楕円を描くことができます。

f:id:abrahamcow:20150205083945p:plain

バブルチャートの書き方には他にもいろんな方法があるようです。

マトリクス分析の注意点

コンサルタントやマーケターはこのような図を2×2の表に分割し、4象限プロットとか、マトリクス分析などと呼ばれる解釈を与えることをよく行います。

p1 + geom_hline(yintercept=0.5,linetype=2)+
  geom_vline(xintercept=0.5,linetype=2)

f:id:abrahamcow:20150205084449j:plain

例えば上図のように、

  • ◎:新規ユーザーの獲得に成功し、ユーザーが定着した。
  • ◯:ユーザーの定着度は高いが、新規訪問の割合が少ない。この記事への集客を増やそう。
  • △:新規訪問は多いが、ユーザーが定着していない。記事の改善が必要だ。
  • ×:新規率、直帰率ともに低い。

といった具合です。

これはおすすめしない考え方です。

割り算値は解釈が一意ではありません。

上図で◯にした部分も分母のセッション数が少なく、偶然直帰率が低くなっているだけかもしれません。
(事実、×や◯や◎で示した部分はセッション数のバブルが小さいです。)

新規率が高いのは、再訪が少ないからなのか新規訪問が多いからなのかわかりません。

また、データを4つの矩形に分割できるという根拠もありません。

「4つに分割できるという根拠? わかりやすいように4段階にわけただけだよ?」と思われるかもしれませんが、4っていう数字はどこからきたの? なぜ四角形に切り分けたの? 丸や三角じゃだめなの? と考えてしまうのが数学好きな人の発想なのです。

データに基づいた分析をしたいのであれば、そういった懐疑的な視点は多かれ少なかれ必要だと思います。

全体的な傾向ではなく、各LPの特性を把握したいのであれば、エンゲージメントを測る指標はエンゲージメント「率」だけじゃない。やみくもに割り算値をKPIにするのはよくない。 - 廿TT で述べたような「分布を要約する」という視点からの可視化をおすすめします。

またユーザーの関心度合いの高そう(低そう)なLPを探したいならば、割り算値を使わずに単純な棒グラフで比較する方法もあります。


エノキタケみたいな棒グラフで Google アナリティクスランディングページ簡易レポート - 廿TT