RでGoogle Analtyics: 時間帯別グラフ

Rという統計用?言語でData Export Apiを使うscriptを書きました(コードはこちら)

(2010/12/10 追記 )どうやら googleの中の人も R用のライブラリーを出したみたいです。テストもついてるし、サンプル誤差もついてくるので、僕自身もあっちを使うつもり。account系のデータ、ゴールとかも取れるといいなと思う

統計用言語なのですが、グラフ出力も充実しており、latticeというパッケージを使うと分類した上でのグラフ表示が一行でだせます(マニュアル見る時間がかかるけど)。なので、グラフを図示していきます。

下のような感じでデータを取得します。

#認証tokenを取得
auth <- getAuth(email, password)
#アカウント+プロファイル情報を取得
acs <- getAccounts(auth)
>str(acs)
str(ac) 'data.frame': 45 obs. of 4 variables:
$ ac.ids : chr "xxxx";,"xxxx" ...
$ ac.names: chr "名前1" ,"名前2" ...
$ pr.ids : chr "1111111","222222" ...
$ pr.names: chr "xxxx","xxxx", 

#プロファイル名で検索
> ac[grep("abc.*wiki",ac$pr.names),]
ac.ids ac.names pr.ids pr.names
10 188512 abc-analyticsさん 25.... abc-only-wiki-except-me
12 188512 abc-analyticsさん 255xxx... 

#キーワードを取得(デファルトで過去一ヶ月)
data <- getData(auth,id=2551xxxxx,metrics=c("visits"),dimensions=c("keyword"))
[1] "https://www.google.com/analytics/feeds/data?ids=ga:25513728&dimensions=ga:keyword&metrics=ga:visits&start-date=2010-09-03&end-date=2010-10-03"
[1] "visits"
[1] "(1-874)/874"
[1] 2
                                         keyword visits
14                                     (not set)    341
573 googleanalytics タイトル別のコンテンツ index     29
651                                         utma     17
851                        目標到達プロセス 画面     16
36                                     _gaq.push     15
221                         funnel visualization     14
662                                         utmz     11
853                     目標到達プロセスの放棄数      8
316                        google analytics wiki      8
30                                          _gaq      8
> str(data)
'data.frame':    874 obs. of  2 variables:
 $ keyword: chr  "(not set)" "googleanalytics タイトル別のコンテンD
[1] "visits" num 341 29 17 16

それで、時間帯別の表示をlevelplotという機能を使って表示していきたいと思います。

セッション数を時間帯と地域別で取得

data <- getData(auth,id=25513728,
+ metrics=c("visits","goal3Completions"),
+ dimensions=c("date","hour","region"),
+ start.date="2010-08-30",end.date="2010-10-03",
+ max.results=10000)
[1] "https://www.google.com/analytics/feeds/data?ids=ga:25513728&dimensions=ga:date,ga:hour,ga:region&metrics=ga:visits,ga:goal3Completions&start-date=2010-08-30&end-date=2010-10-03&max-results=10000"
[1] "visits"           "goal3Completions"
[1] "(1-10000)/1060"
[1] 5
          date hour region visits goal3Completions
702 2010-09-21   15  Tokyo     11                3
92  2010-09-01   09  Tokyo     11                2
607 2010-09-16   18  Tokyo      9                1
920 2010-09-29   15  Tokyo      8                0
608 2010-09-16   19  Tokyo      8                2
178 2010-09-03   12  Tokyo      8                0
105 2010-09-01   14  Tokyo      8                0
923 2010-09-29   16  Tokyo      7                0
520 2010-09-14   19  Tokyo      7                0
474 2010-09-13   17  Tokyo      7                2
グラフにする。
levelplot(tapply(data$visits,list(data$hour,data$date),sum),  col.regions=colorRampPalette(c("white",  "red"))(256),layout=esuln

2

週末と夜間は空白に近い。

曜日別に傾向があるかもしれない。見てみる。

wdays <- c("a日","b月","c火","d水","e木","g土”) #表示順を揃えるため

levelplot(tapply(data$visits,list(data$hour,wdays[as.numeric(strftime(data$date, "%w"))+1]),sum),  col.regions=colorRampPalette(c("white",  "red"))(256))

3

まあ、なにもない。深夜に起きる人は、木曜くらいから出始めるのか?というか、祝日補正してないせいだろう。

また、サイトによっては、キャンペーンやコンテンツ投入のタイミングが見えるかもしれない。

んじゃ、とりあえず、メディア別にして、期間を長くして平均を見てみる。

d.m <- getData(auth,21600568,metrics=c("visits"),dimensions=c("hour","date","medium"),start.date="2010-01-01",max.results=10000)

d.m.a <- d.m[d.m$medium %in% c("organic","referral","(none)"),]
> levelplot(tapply(d.m.a$visits,list(d.m.a$hour,wdays[as.numeric(strftime(d.m.a$date, "%w"))+1],d.m.a$medium),mean), col.regions=colorRampPalette(c("white",  "red"))(256),sub="曜日別|メディア別”)

4

検索活動は集中するくらいしかわからない。今年の平均だけど、、

これでも、具体的なユーザー像にはならない。

そこで、ある特定のキャンペーンを行った場合の波及効果みたいなのをみたいが、出せるデータがないので、このブログの公開記事の閲覧数の減衰具合みたいなのを見てみる。

d.m <- getData(auth,21600568,metrics=c("entrances"),dimensions=c("hour","date","landingPagePath",”medium”),start.date="2010-08-01",max.results=10000)

rev(sort(tapply(d.m$entrances,d.m$landingPagePath,sum)))[1]
 /multi-cookie-tracking                                                                  338

と一番多い、multi-cookie-tracingを見てみる。メディアタイプを、オーガニックと参照リンクに絞って表示

d.m <- getData(auth,21600568,metrics=c("entrances",”newVisits”),dimensions=c("hour","date","medium"),start.date="2010-01-01",max.results=10000) 

d.m.a <- d.m[d.m$medium %in% c("organic","referral"),]
> levelplot(tapply(d.m.a$entrances,list(d.m.a$hour,d.m.a$date, d.m.a$medium),mean), col.regions=colorRampPalette(c("white",  "red"))(256),sub="特定ページメディア別”)

5

9月1日の深夜に出して、リンク中心にアクセスが上がって、その後は検索にかかるようになる。しかし、検索に乗るのも早いものだ。

次のものは、新規に絞ってみたもの。本当に新規でないのもあるだろうけど。検索による継続的な流入はある。

d.m <- getData(auth,21600568,metrics=c("entrances",”newVisits”),dimensions=c("hour","date","medium"),start.date="2010-01-01",max.results=10000) 

d.m.a <- d.m[d.m$medium %in% c("organic","referral"),]
> levelplot(tapply(d.m.a$newVisits,list(d.m.a$hour,d.m.a$date, d.m.a$medium),mean), col.regions=colorRampPalette(c("white",  "red"))(256),sub="特定ページメディア別”)

6

あとは、、、、

会員情報などとマッチングしてるサイト(外部ソースとの照合は規約違反かも)なら、ユーザー属性別のアクセス状況などは、比較表示しやすいと思います。

検索ワードで属性を分けたり、地域と時間情報と天候情報(外部から引っ張る)で属性を仮定したりと思ったのですが、余裕ができたらやってみたいと思います。

とりたてて何か発見ができたわけではないですが、Rを使うと、こんな感じで手短にグラフ出力ができます。ただ当然ながら、学習曲線はキツイ。ここまで来るのに相当な学習時間がかかりました。データ分析ではなく、データ表示だけなのに、、、

以下コードです。RCURLとXMLが必要です。

こちらに移動しました。

コメントを残す