RGAでページビュー数 VS 滞在時間 の散布図を描く

RGAというRのgoogle analytics用ライブラリがあります。
このライブラリを使って、google analyticsのデータを出力してみます。題材としては、GAのウェブUIで見られる平均の指標である滞在時間とページビューではなく、滞在時間とページビューそのまののデータを出力し、plotします。

データの取得

具体的な取得項目名は、ディメンジョン側にvisitLengthとpageDepathを使います。 指標側のtimeOnSiteやpageviewsではありません。個別に分類して見たい場合はディメンジョンを指定して、欲しい指標を取ります。今回の欲しい指標は訪問数(visits)になります。
また、新規・リターンユーザー別のvisitorTypeでのデータの違いを見るために、ディメンジョンにvisitorTypeを指定します。
これで、データとして、滞在時間(秒数), ページビュー数, 新規・非新規別の訪問数がでます。

データの加工

今回は散布図にしたいので、訪問数分だけ、データの行を複製します。
(*そのままでも、バブルチャート表示用のデータになります)
今回は、粒度の細かいデータに変換します。
その後、グラフで出力します。

以下が、その出力したグラフになります。

pageDepth_visitLength_in_googleAnalaytics1
まずは、普通にplotです。↑ y軸対数表示log10でした。マイナスは一分以下
pageDepth_visitLength_in_googleAnalaytics2
次にggplotです。↑
pageDepth_visitLength_in_googleAnalaytics3
次に平均をラインで。↑
(前のグラフに重ね書きする方法がわからなかった)

以下は、コードです。
認証部分 + プロファイルID は各自で埋めて下さい。

library(rga)
rga.open(instance = "ga",
         where = "/home/shirai/rga/shirai/.ga",
         client.id = "指定してください", 
         client.secret = "指定してください")
start.date = "2011-03-30"
end.date = "2013-04-14"
ID <- "ga:指定してください"
dt <- ga$getData(ID, start.date, end.date,
                 dimensions="ga:visitLength,ga:pageDepth,ga:visitorType",
                 metrics = "ga:visits,ga:timeOnSite,ga:pageviews",batch=TRUE)

##散布図用にデータを拡張?する
ret <- dt[unlist(lapply(1:nrow(dt), function(i)rep(i, dt[i,4]))),]
dt0 <- dt[,c("visitLength","pageDepth","visits")]
ret0 <- dt0[unlist(lapply(1:nrow(dt0), function(i)rep(i,dt0[i,3]))),]
for(i in 1:2)ret[,i] <- as.numeric(ret[,i])

##通常のplot表示
png(file="~/tmp/pageDepth_visitLength_in_googleAnalaytics1.png")
plot(ret$pageDepth, log(ret$visitLength/60,10),xlab="ページビューー数",ylab="滞在時間(分)")
dev.off()
##アウトプットがイマイチ
## alphaを入れて、jitterを入れる
p <- ggplot(ret[ret$visitLength!=0 & ret$visitLength<1200 & ret$pageDepth<16,],
            aes(pageDepth,visitLength/60, colour=visitorType))
png(file="~/tmp/pageDepth_visitLength_in_googleAnalaytics2.png")
p + geom_point(alpha=1/10,position="jitter") + xlab("ページビュー数") + ylab("滞在時間(分)")
dev.off()

## 平均で見る。前のグラフにimposeする方法わからず、、、
avgSOT <- ddply(dt, .(as.numeric(pageDepth),visitorType), summarise, ats= sum(as.numeric(timeOnSite)/sum(as.numeric(visits))))
names(avgSOT) <- c("pageDepth","visitorType","AvgTimeOnSite")
png(file="~/tmp/pageDepth_visitLength_in_googleAnalaytics3.png")
ggplot(avgSOT[avgSOT$pageDepth<16,], aes(pageDepth, AvgTimeOnSite/60, color=visitorType))+geom_line() + xlab("ページビュー数") + ylab("滞在時間(分)")
dev.off()

ページ遷移データをグルーピング化する

フォーラムで質問を見かけました。
パラメータが付いたURLで、パラメータを除いた合計での遷移数
GAのウェブUI上でページグループの遷移のセッション数を出す方法も回答してありますので、上記のリンク先をご覧下さい。

ページ間の遷移データ(pageviewが指標となる)をいろいろな条件でグルーピング化するという命題だと思います。

この間作った自作のツールを使うと便利にできます。
データ項目は、指標: pageviews ディメンジョン:previousPagePath, nextPagePath
(*nextPagePathはpagePathでも同じ)
PV数ベースではなく、セッション数ベースの値が欲しい時は、指標をuniquePageviewsにして下さい。
その後、expression filterというところで、LIKE演算子を使って絞り込みをします。