読者です 読者をやめる 読者になる 読者になる

廿TT

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

RGoogleAnalytics で変化の要因を読みとく(変化量と寄与率のグラフ+散布図)

Google アナリティクス R Graphviz

変化量と寄与率のグラフ (折れ線付き積み上げ棒グラフ)

R + Google アナリティクス日記、いろいろ書いたけど、
Google アナリティクス カテゴリーの記事一覧 - 廿TT
いまにして思えば、いちばん最初にやるべきはこれだった。

f:id:abrahamcow:20150101161635p:plain

セッション(訪問数)全体の推移と、その内訳。

どのチャネル(経路)からどのくらい訪問されてるか。

サイトにユーザーをもっと呼び込みたいならたぶんとりあえずこれが基本。

この図の描き方を以下に記す。

R から APIGoogle アナリティクスデータの取得する方法は、
RGoogleAnalytics をいじっている - 廿TT
を参照されたし。

library("RGoogleAnalytics")
query <- QueryBuilder()
access_token <- query$authorize()

ここでアクセストークンをコピペ。

sta ="2013-05-01"
en ="2014-12-31"
#Google アナリティクス入れた時期から現在まで。
ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)

query$Init(start.date = sta,
           end.date = en,
           dimensions = "ga:yearMonth,ga:channelGrouping",  
           metrics = "ga:sessions",
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           access_token=access_token)
cg<- ga$GetReportData(query)

#head(cg)

cg$yearMonth <- paste(
  substr(cg$yearMonth,1,4),
  substr(cg$yearMonth,5,6),
  sep="/") #年と月の間にスラッシュ入れた

agg <-tapply(cg$sessions,cg$yearMonth,sum) #合算値(折れ線グラフ用)
ss<-data.frame(month=rownames(agg),sessions =agg)

library(ggplot2)
library(scales)
library(RColorBrewer)

theme_set(theme_bw(15,"HiraKakuPro-W3"))

p1 <- ggplot() + 
  geom_bar(data=cg, aes(x=yearMonth,y=sessions,fill=channelGrouping),
           stat="identity", alpha=0.75) +
  scale_y_continuous(labels = comma)+
  labs(x="年/月",y="セッション数")

p2 <- p1 +scale_fill_brewer(type = "seq", palette = "Paired",name="チャネル\n(訪問経路)", 
                      guide = guide_legend(reverse=T) )
p2 + geom_line(data=ss,aes(x=as.numeric(month),y=sessions),colour="grey20",size=1.2)+
  geom_point(data=ss,aes(x=month,y=sessions),colour="grey20",size=3) 

ポイント:

散布図を書いてみて、今後の集客施策を考える

セッション数が多い月はソーシャルの寄与が大きいが、ソーシャルにあわせて Referral(他サイトからのリンク経由)や Direct(直接訪問・ノーリファラー)も増えている。

直帰率と新規率の相関を調べて新規訪問者が回遊しやすいサイトになっているかチェックする - 廿TT でやったように、割り算して構成比に相関があるか見てみる。

library(dplyr)
library(tidyr)
cg2 <- cg %>% spread(channelGrouping, sessions) # クロス表の形式に変える
cg2 <-replace(cg2,is.na(cg2),0) #NA は 0 と置く
plot(cg2[,-c(1:3)]/agg) #散布図行列(other、not set は無視)

f:id:abrahamcow:20150101181840p:plain

Social と Referral、Direct には正の相関が見られる。

> cor(cg2[,-c(1:3)]/agg)
                  Direct Organic Search   Referral     Social
Direct         1.0000000      0.3078037  0.7096901  0.5778125
Organic Search 0.3078037      1.0000000 -0.1550454 -0.2835565
Referral       0.7096901     -0.1550454  1.0000000  0.7733619
Social         0.5778125     -0.2835565  0.7733619  1.0000000

これ、いわゆるバズってるっていう状況なんだと思う。

f:id:abrahamcow:20150101190412p:plain

//上図のコード(dot言語)
graph  {
	"バズ"[style = filled, fillcolor = grey];
	"Organic Search";
	"Direct" -- "Social";
	"Direct" -- "Refferal"
	"Refferal" -- "Social"; 
	"バズ" -- "Direct";
	"バズ" -- "Refferal";
	"バズ" -- "Social";
}

バズはコントロールするのがむずかしい。

だから安定して成長する自然検索(Organic Search)が重要になる。

バズる、バズらないは置いておいて、記事を増やせば単純に自然検索経由の訪問は増える。

これからは SEO 施策に力を入れよう。

ちなみに

ぼくがこういう書き方をしてるのはべつに、本気で SEO に取り組んで「アフィリエイトで月何万円稼ぐ」みたいのを目指してるからじゃない。(いや、稼げたらうれしいけど、実際問題むずかしすぎる。)

「メディア」を運営してる人がどういう風に Web 解析データを見るか、その気持ちを把握した上で可視化をしていこうとしているからだ。

このブログを書いてる当人であるぼくは、どの時期にどの記事がバズったかだいたいは把握してる。

統計手法を使って異常値の検出とかして何月何日にバズったとか言い当てることもできるけど、それをやってもメディア運営側としては知ってることの確認になってしまう。

それくらいは Google アナリティクスの管理画面ながめてればわかる。

f:id:abrahamcow:20150101170221p:plain

だから変数間の関係とかを記述してみたりしてる。

どの施策がなぜ大事なのか、という判断にちゃんとつながる可視化を目指してる。

統計グラフのウラ・オモテ―初歩から学ぶ、グラフの「読み書き」 (ブルーバックス)

統計グラフのウラ・オモテ―初歩から学ぶ、グラフの「読み書き」 (ブルーバックス)

無相関検定もやってみた

Rで無相関検定のメモ+(重なりのある)相関の差の検定 - 緒賀研究室―個人別荘

simple.cor なる関数を書いてくれている人がいたので使ってみた。

> simple.cor(cg2[,-c(1:3)]/agg)
相関係数 
               Direct Organic Search Referral Social
Direct             NA          0.308    0.710  0.578
Organic Search  0.308             NA   -0.155 -0.284
Referral        0.710         -0.155       NA  0.773
Social          0.578         -0.284    0.773     NA

無相関検定結果のp-value 
               Direct Organic Search Referral Social
Direct             NA          0.187    0.000  0.008
Organic Search  0.187             NA    0.514  0.226
Referral        0.000          0.514       NA  0.000
Social          0.008          0.226    0.000     NA

無相関検定結果の簡易表示 
               Direct Organic Search Referral Social
Direct         <NA>   ---            ***      **    
Organic Search ---    <NA>           ---      ---   
Referral       ***    ---            <NA>     ***   
Social         **     ---            ***      <NA>  
* p<.05, ** p<.01, *** p<.001