Rという統計用?言語でData Export Apiを使うscriptを書きました(コードはこちら)
統計用言語なのですが、グラフ出力も充実しており、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
週末と夜間は空白に近い。
曜日別に傾向があるかもしれない。見てみる。
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))
まあ、なにもない。深夜に起きる人は、木曜くらいから出始めるのか?というか、祝日補正してないせいだろう。
また、サイトによっては、キャンペーンやコンテンツ投入のタイミングが見えるかもしれない。
んじゃ、とりあえず、メディア別にして、期間を長くして平均を見てみる。
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="曜日別|メディア別”)
検索活動は集中するくらいしかわからない。今年の平均だけど、、
これでも、具体的なユーザー像にはならない。
そこで、ある特定のキャンペーンを行った場合の波及効果みたいなのをみたいが、出せるデータがないので、このブログの公開記事の閲覧数の減衰具合みたいなのを見てみる。
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="特定ページメディア別”)
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="特定ページメディア別”)
あとは、、、、
会員情報などとマッチングしてるサイト(外部ソースとの照合は規約違反かも)なら、ユーザー属性別のアクセス状況などは、比較表示しやすいと思います。
検索ワードで属性を分けたり、地域と時間情報と天候情報(外部から引っ張る)で属性を仮定したりと思ったのですが、余裕ができたらやってみたいと思います。
とりたてて何か発見ができたわけではないですが、Rを使うと、こんな感じで手短にグラフ出力ができます。ただ当然ながら、学習曲線はキツイ。ここまで来るのに相当な学習時間がかかりました。データ分析ではなく、データ表示だけなのに、、、
以下コードです。RCURLとXMLが必要です。