廿TT

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

(R + Google アナリティクス)ランディングページの集客力推移のヒートマップ

多くの訪問を集める主要ページにはこういう施策、テールの部分を支える裾野ページにはこういう施策、といった具合に、ランディングページを層別にして対策を立てる場合を考えます。

このとき、訪問(セッション)数全体の推移を見ただけでは、どの層がどう変化したか掴みきれず物足りないかもしれません。

そこで、下図のようなクロス集計表を作りました。

f:id:abrahamcow:20160204014608p:plain

横軸が直近三ヶ月のセッション数、縦軸がその前の三ヶ月のセッション数です。

例えば、縦 (50,100] 横 (100,150] のマスには 6 という数字が入っています。

これは、前の三ヶ月のセッション数が 50~100 で、直近三ヶ月のセッション数が 100~150 になったランディングページが 6 つあることを示しています。

ヒートマップの対角線より右のほうに明るい色がついていたら、前の三ヶ月より上位層に移動したページが多いことが分かります。

今回はとくに目立った推移はありませんでした。直近三ヶ月で微増、といったところです。

このグラフを書いた R のコードを以下に記します。

library(RGA)
library(dplyr)
library(pipeR)
authorize()
prof <-list_profiles()
#RGAパッケージでデータ取得
dat_row <-get_ga(profile.id = prof$id[1],
              start.date = "2015-08-01",
              end.date = "2016-01-31",
              dimensions = "ga:yearMonth,ga:landingPagePath",
              metrics = "ga:sessions")
dat1 <-dat_row[dat_row$landing.page.path!="(not set)",]
#直近三ヶ月とその前の三ヶ月に切り分ける
last <-dat1 %>% dplyr::filter(year.month==201508|year.month==201509|year.month==201510) %>%
  group_by(landing.page.path)%>%
  summarise(sessions=sum(sessions))
this <-dat1 %>% dplyr::filter(year.month==201511|year.month==201512|year.month==201601) %>%
  group_by(landing.page.path)%>%
  summarise(sessions=sum(sessions))
#ふたたびくっつけた
dat2 <- rbind(cbind(term="last",last),cbind(term="this",this))
#セッション数で層別
breaks <-seq(0,500,by=50)
groups <-cut(dat2$sessions,breaks)
level1 <- levels(groups)
groups <-as.character(groups)
groups[is.na(groups)]<-"(500,Inf)"
dat2$groups <-groups

sub1 <-dplyr::filter(dat2,term=="last")
sub2 <-dplyr::filter(dat2,term=="this")

dat3 <-full_join(sub1,sub2,by="landing.page.path")%>%
  select(groups.x,groups.y)

dat3$groups.x[is.na(dat3$groups.x)] <- "0"
dat3$groups.y[is.na(dat3$groups.y)] <- "0"

dat_out <-group_by(dat3,groups.x,groups.y)%>%
  tally()

dat_out$groups.x <-factor(dat_out$groups.x,levels = c(0,level1,"(500,Inf)"))
dat_out$groups.y <-factor(dat_out$groups.y,levels = c(0,level1,"(500,Inf)"))
#ここまでで集計表は完成
dat_out<-rename(dat_out,last=groups.x,this=groups.y)
#以下プロット
library(ggplot2)
ggplot(dat_out)+
  geom_tile(aes(x=this,y=last,fill=n))+
  geom_text(aes(x=this,y=last,label=n),colour="white")+
  theme_grey(15)

参考文献は森藤・あんちべ(2014)pp.169-171。