生存曲線による残存率の可視化
ランディングページ(LP)を評価する際は、直帰率が低く抑えられているかをチェックすることがよく行われます。
Googleアナリティクスの管理画面から LP ごとの直帰率を見てみます。
- http://abrahamcow.hatenablog.com/entry/2015/02/10/201256にランディングした場合、直帰率は82.39%
- http://abrahamcow.hatenablog.com/entry/2014/02/06/003147にランディングした場合、直帰率は82.32%
です。
直帰率だけを見ると両ページの回遊傾向はほぼ同等、ほんの少しだけ前者が勝っています。
ここで直帰率という指標が、もともとのデータを「直帰」「直帰でない」という情報に要約したものであることに注意します。
実際には「直帰」、「1ページ進んだ先で離脱」、「2ページ進んだ先で離脱」、……と様々なセッションがあります。
その様子を図に示します。縦軸の残存率は離脱率の反対語です。
この階段上のグラフは生存曲線と呼ばれます。これを見ると、
http://abrahamcow.hatenablog.com/entry/2015/02/10/201256
にランディングした場合のほうが右に裾が長く、ユーザーの回遊傾向が強いことが伺えます。
これは直帰率だけに注目していると見逃してしまう傾向です。
以下にこの図の書き方を記載します。
R のコード
RGoogleAnalytics でデータ抽出
アカウントのオーサライズ
library("RGoogleAnalytics") query <- QueryBuilder() access_token <- query$authorize()
ここでアクセストークンをコピペ。
詳しくは RGoogleAnalytics をいじっている - 廿TTを参照。
データ抽出時のクエリ
ga <- RGoogleAnalytics() ga.profiles <- ga$GetProfileData(access_token) query$Init(start.date ="2015-02-01", end.date ="2015-02-22", dimensions ="ga:landingPagePath,ga:pageDepth", metrics ="ga:sessions", sort ="-ga:sessions",#filters="",#segment=""#max.results =, table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","), access_token=access_token) LPPD <- ga$GetReportData(query)#データ取得完了
データ抽出時のクエリについては必要に応じて
R から API で Google アナリティクスのデータを読むこめるパッケージ, RGoogleAnalytics のクエリ作成方法 - 廿TT
を参照してください。
データ下処理と集計とプロット
LPPD$pageDepth <- as.numeric(LPPD$pageDepth) LPnames <- c("/entry/2015/02/10/201256","/entry/2014/02/06/003147")#注目したい LP のパスを入れる len <- length(LPnames) out <-numeric()for(i in1:len){ tmp <-subset(LPPD, landingPagePath ==LPnames[i]) t1 <- rep(tmp$pageDepth,tmp$sessions) out <- rbind(out,data.frame(LPnames[i],t1))} colnames(out)<- c("LP","time")library(survival) sf1 <- survfit(Surv(time)~LP,data=out)#nihongo() mac ユーザーは日本語のフォントを指定 cols=c("tomato","royalblue")#グラフの色 plot(sf1,col=cols, xaxt="n",yaxt="n",lwd=3,xlab="訪問時のページ数", ylab="残存率(%)") axis(1, at=0:14, lab=0:14) axis(2, at=pretty(c(0,1)), lab=pretty(c(0,1))*100, las=TRUE) legend("topright",legend=LPnames, col=cols, lty=1,bty ="n", lwd=3)
LP のパスと、グラフの色のところだけ変えてやれば 3 つ以上の LP の比較も可能です。
おまけ:ログランク検定
ログランク検定は「両者の生存曲線に差がない」という帰無仮説を検定する手法です。
実務上は仮説検定とかやらなくても、目視で比べて問題ないと思いますが、R では以下のようにするとログランク検定ができます。
> survdiff(Surv(time)~LP,data=out) Call: survdiff(formula = Surv(time)~ LP, data = out) N Observed Expected (O-E)^2/E (O-E)^2/V LP=/entry/2015/02/10/2012565285285360.1082 LP=/entry/2014/02/06/0031471981981900.3052 Chisq=2 on 1 degrees of freedom, p=0.157
p 値は 0.157 です。
(5%水準で有意になってくれたらおもしろかったんですが)
関連エントリ
参考文献
- 作者:中村剛,丹後俊郎
- 出版社/メーカー:朝倉書店
- 発売日: 2001/04
- メディア:単行本
- 購入: 1人 クリック: 4回
- この商品を含むブログ (1件) を見る
エンジニアのための データ可視化[実践]入門 ~D3.jsによるWebの可視化 (Software Design plus)
- 作者:森藤大地,あんちべ
- 出版社/メーカー:技術評論社
- 発売日: 2014/02/20
- メディア:単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る