課題設定
「当サイトでは、セッションは増加傾向にあるものの、リピーターが若干伸び悩み、ユーザーの定着に課題を感じている」ということにします。
この課題をより具体的に把握するために、品質管理の七つ道具の一つ、層別を使います。
層別(スライシング)
層別のためのツールとして、あんちべ『データ解析の実務プロセス入門』ではエクセルのピボットテーブル機能が紹介されています。
R では plyr、dplyr、ggplot2 などのパッケージ群がこれに相当します。
これらのパッケージは Web 上にいろいろ情報がありますが、ぼくは下記のページを参考にしました。
まずはデータ抽出。
RGoogleAnalytics では 7 つまでセグメントを切れるので、多めにデータを出しておきます。
データ抽出時のクエリはこんな感じです。
(詳しくは RGoogleAnalytics をいじっている - 廿TTを参照してください。)
#アカウントのオーサライズlibrary("RGoogleAnalytics") query <- QueryBuilder() access_token <- query$authorize()
ここでアクセス・トークンをコピペ。
ga <- RGoogleAnalytics() ga.profiles <- ga$GetProfileData(access_token) query$Init(start.date ="2015-07-01", end.date ="2015-07-31", dimensions ="ga:sessionCount,ga:channelGrouping,ga:source,ga:referralPath", metrics ="ga:sessions", sort ="-ga:sessions", table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","), max.result=10000,#segment = "", access_token=access_token) datChannel <- ga$GetReportData(query)
ディメンションとして取得した数字は文字列型で入ってるので、数値型に直しておきます。
datChannel$sessionCount <- as.numeric(datChannel$sessionCount)
パッケージをまとめてロード。
library(plyr)library(dplyr)library(pipeR)library(ggplot2)library(scales)
グラフの背景を白にセット。文字は大きめにしておきます。
theme_set(theme_bw(15))
リピートの回数(sessionCount)を軸に切り分けて、流入経路(channelGrouping)別セッション数の積み上げ棒グラフを書いてみます。
大体の場合、異なるユーザー層ですべての経路(チャネル)からの訪問が均等ということはありません
datChannel %>>% #データを左から右にわたす mutate(userType=ifelse(sessionCount >=2,"2+",sessionCount)) %>% #sessionCount 2 以上を切り分け ddply(.(channelGrouping,userType),summarize,sessions=sum(sessions)) %>>% #channelGrouping, userType という複数の因子ごとの集計 ggplot()+#プロット geom_bar(aes(x=userType,y=sessions,fill=channelGrouping),stat="identity")#積み上げ棒グラフ
これだと傾向の違いはわかりにくいです。
sessionCount 3 以上を切り分けてみます。
数字の 2 を 3 に変えるだけです。
datChannel %>>% mutate(userType=ifelse(sessionCount >=3,"3+",sessionCount)) %>% ddply(.(channelGrouping,userType),summarize,sessions=sum(sessions)) %>>% ggplot()+ geom_bar(aes(x=userType,y=sessions,fill=channelGrouping),stat="identity")
続けて sessionCount 4 以上を切り分け。
datChannel %>>% mutate(userType=ifelse(sessionCount >=4,"4+",sessionCount)) %>% ddply(.(channelGrouping,userType),summarize,sessions=sum(sessions)) %>>% ggplot()+ geom_bar(aes(x=userType,y=sessions,fill=channelGrouping),stat="identity")
sessionCount 4 以上の棒グラフはちょっとピンク色が多いように見えます。
帯グラフにしてみます。
p1 <- datChannel %>>% mutate(userType=ifelse(sessionCount >=4,"4+",sessionCount)) %>% ddply(.(channelGrouping,userType),summarize,sessions=sum(sessions)) %>>% ggplot() p1 + geom_bar(aes(x=userType,y=sessions,fill=channelGrouping),stat="identity",position="fill")
どうやら、sessionCount 4 以上のユーザーはソーシャル経由の訪問が多そうです。
でももうちょっと細かい数字がみたいなあ、と思ったら、このようにヒートマップ(色付きテーブル)にしてみましょう。
p1 + geom_tile(aes(x=userType,y=channelGrouping,fill=sessions))+ geom_text(aes(x=userType,y=channelGrouping,label=sessions))+ scale_fill_gradient(low ="white", high ="cornflowerblue")
あるいは、ひとにみせる用に軸や凡例を日本語にしたいなあとおもったらこんな感じです。
p2 <- p1 + geom_bar(aes(x=userType,y=sessions,fill=channelGrouping),stat="identity",position="fill") p2 +scale_y_continuous(label=percent)+ labs(x="リピートの回数",y="セッション",fill="チャネル")+ theme_bw(15,"HiraKakuPro-W3")
こんな風にちょっとコマンドを入れ替えるだけで、いろいろな集計や図示ができるところがピボットテーブル、ピボットグラフ感覚だと思うのですがいかがでしょうか。
詳細化(ドリルダウン)
粒度の粗い集計を行って狙いを定めてから、細かい内訳を見ていくと、最初から細かい内訳をみるより効率的です。
リピーターはソーシャル経由の訪問が多そうなことがわかったので、さらにその内訳をみてみます。
datChannel %>>% filter(sessionCount>=4& channelGrouping =="Social") %>>% #sessionCount 4 以上 かつ channelGrouping が Social のデータのみを取り出し ddply(.(source),summarize,sessions=sum(sessions))%>% #source ごとに合算 ggplot(aes(reorder(source,sessions),sessions))+ geom_bar(stat="identity")+ coord_flip()
sessionCount 4 以上のヘビーユーザーははてなブックマークやツイッターからの訪問が多いようです。
ユーザーの定着にはソーシャルブックマーク系のサービスが重要な役割を果たしていることがわかりました。
実際にユーザーが参照した URL まで掘り下げて csvに書き出すこともできます。
out <- filter(datChannel,sessionCount>=4& channelGrouping =="Social"&(source=="t.co"|source=="b.hatena.ne.jp")) out %>>% mutate(URL=paste0("http:/",source,referralPath)) %>>% select(URL,sessions) %>>% ddply(.(URL,sessions),summarize,sessions=sum(sessions)) %>>% arrange(desc(sessions)) %>>% write.csv(file="~/Desktop/social.csv")
この表を見ながらブックマークされやすい記事を考えたりできます。
流入経路以外にもいろいろな切り口があると思うので、いろいろ試して頂ければ幸いです。
参考文献
- 作者:あんちべ
- 出版社/メーカー:森北出版
- 発売日: 2015/06/20
- メディア:単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る