Alluvial diagram(アルビアルダイアグラム)をかんたんにプロットできる ggalluvial パッケージが、Rで解析:Alluvial diagramsをプロットしませんか「ggalluvial」パッケージで紹介されていた。
これを使ってみようと思う。
入口ページと出口ページ
まずは RGA パッケージで Googleアナリティクスのデータを R に読み込む。
Googleアナリティクスではランディングページとコンバージョンに至ったページのデータを取得している……はずなんだけど、両者をいっしょに取得することはできない。
library(RGA) authorize() prof <-list_profiles() dat1 <-get_ga(profileId = prof$id[1], start.date ="2016-02-01", end.date ="2016-04-30", dimensions ="ga:landingPagePath,ga:goalCompletionLocation", metrics ="ga:goal3Completions")# エラー: client error: (400) Bad Request#Bad request: Selected dimensions and metrics cannot be queried together.# というエラーがでる
このデータが取れていないことはないと思うので、なんらかの意図があってかくしているのかもしれない。
しかたないので、ランディングページと出口ページのデータを取得する。
当ブログではアマゾンへのリンクのクリックをコンバージョンとして設定している。
dat2 <-get_ga(profileId = prof$id[1], start.date ="2016-02-01", end.date ="2016-04-30", dimensions ="ga:landingPagePath,ga:exitPagePath", segment ="sessions::condition::ga:goal3Completions>=1", sort ="-ga:goal3Completions", metrics ="ga:goal3Completions")
図示の都合上、ランディングページと出口ページが同一のセッションはいったん除外する。
library(dplyr) dat2_2 <- dat2 %>% filter(landingPagePath!=exitPagePath)
ggalluvial パッケージはほんとうにかんたんで、描画にあたっては特にデータの加工も必要ない。
library(ggplot2)library(ggalluvial) ggplot(dat2_2, aes(freq = goal3Completions, axis1 = landingPagePath, axis2 = exitPagePath))+ geom_alluvium(aes(fill=landingPagePath))+ geom_stratum()+ geom_text(stat ="stratum",family="HiraMaruProN-W4")+ theme(legend.position="none")
(どうせならテキストをクリックしたら指定したページに飛ぶようにしたい。geom_hyperlink をだれかつくってください)
先の太さがコンバージョン(CV)数に対応する。
注目すべきはトップページへ遷移しての離脱じゃないかと思う。
各記事から流入してトップページへ遷移するのは、このブログ自体になんらかの興味を持ってくれたサインだと思う。
大事にしたい。
- http://abrahamcow.hatenablog.com/entry/2016/02/05/031844
- http://abrahamcow.hatenablog.com/entry/2015/01/15/073029
から、トップページへの遷移が確認された。
マルチチャネルレポートの終点と始点
Googleアナリティクスの「コンバージョン経路のレポート」からはこんな感じのレポートが見れる。
このコンバージョン経路の中で、特に注目したいのは、経路の始点と終点じゃないかと思う。
終点はユーザーがコンバージョンに至ったセッションでの訪問経路で、始点というのはコンバージョンに至ったセッションから、巻き戻して何日か前にサイトに訪れた際の訪問経路のこと。
(より正確な説明は マルチチャネルについて - アナリティクス ヘルプを参照してください)
始点はユーザーがサイトに興味を持ったきっかけとなったセッションと解釈できる。
コンバージョン経路の途中経過は捨てて、始点と終点だけを可視化してみる。
dat_mcf <-get_mcf(profileId = prof$id[1], start.date ="2016-02-01", end.date ="2016-04-30", dimensions ="mcf:basicChannelGroupingPath,mcf:conversionGoalNumber", metrics ="mcf:totalConversions") dat_mcf_goal3 <- dat_mcf[dat_mcf$conversionGoalNumber=="003",] sep <-strsplit(dat_mcf_goal3[,1]," > ") len <-sapply(sep, length) mat1 <-sapply(sep[len>1],function(x){ n<-length(x) c(x[1],x[n])}) tmp <-data.frame(enter=mat1[1,], goal=mat1[2,], CV=dat_mcf_goal3$totalConversion[len>1]) out <- tmp %>% group_by(enter,goal) %>% summarize(CV=sum(CV)) ggplot(out, aes(freq = CV,axis1 = enter, axis2 = goal))+ geom_alluvium(aes(fill=enter))+ geom_stratum()+ geom_text(stat ="stratum")
「オーガニック検索 >ダイレクト」というのは、検索経由で来たユーザーが次のセッションでは直接訪問してコンバージョンに至ったと解釈できて、検索を通じてサイトを認知させた、一種の勝ちパターンと言える。
こういうのは SEO施策の振り返りなんかに使えるんじゃないだろうか。