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

廿TT

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

Google アナリティクスデータのレポーティングを R で自動化しよう(ランディングページと検索キーワード)

はじめに

これまで、R を活用したGoogle アナリティクスデータの可視化をいろいろと紹介してきました。

Google アナリティクス カテゴリーの記事一覧 - 廿TT

このブログはたぶん統計屋とかエンジニアよりの人しか読んでいないんじゃないかと思いますが、本エントリは非エンジニア、非プログラマーの方にこそ読んでいただきたい内容です。

「データ分析とかプログラミングとか数学とかあんまり勉強してこなかったけど、会社入ったらマーケティングとか Web 系のこととかの担当になっちゃった」という方、お仕事でデータ集計やグラフの描画をすることが多いと思います。
(文系・理系という区分け、あまり好きじゃないんだけど暫定的には便利なのでつい使ってしまう)

R というフリーのソフトウェアを使えば統計解析、データの可視化が非常に簡単に、効率よく行えます。

R はプログラミング言語の一種ので、最初はとっつきにくいかもしれませんが、少し慣れれば報告書等の作成が楽になりますし、高度な分析も可能になります。

事例

論より証拠、ということで R を用いてちょっとしたレポーティングを行う様子をビデオにしました。

お聞き苦しいところはあるかもしれませんが、非常に手軽に気楽に作業していることがお分かりいただけるかと思います。

アウトプットは下の Word ファイルです。

ランディングページと検索キーワード

今回のレポーティングにあたって参照したページは、
http://seo.webcrew.co.jp/2014/10/landingpage-analysis/
です。

SEO 対策やコンテンツ施策にあたって、まず注目したいのは、ランディングページ(LP)と検索キーワードのデータです。

検索キーワードからはユーザーがどのようなニーズを持って貴社サイトにアクセスしたかが伺えます。

ランディングページは、ユーザーがサイトにアクセスしてまず最初に目にするページです。第一印象がユーザーのニーズにマッチしているか、検索キーワードとランディングページを見ることで明らかになる(かもしれない)のです。

f:id:abrahamcow:20141107135841p:plain

上のグラフはセッション(アクセス数)上位 10 LP での、「直帰」数と「回遊」数を示しました。

直帰が多く、回遊が少ない LP は、第一印象がユーザーのモチベーションとマッチしていなかった可能性があります。

オレンジ色の割合が多いページについて、ユーザーがどんなワードで検索してきたか見ることで、サイト改善への示唆が得られます。

今回、事例として紹介した可視化は地味で簡素なものですが、基本として大事なものなので参考にしていただければと思います。

スクリプト

動画の冒頭で「最初にこうやって認証……」「アクセストークン……」と言いながらいじっているのは下のコードです。

RGoogleAnalytics をいじっている - 廿TT を参照してください。

これは .R または .r 等の拡張子で保存すれば、だれでも使用可能です。

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

次、「ソースを流し……」と言っているのは下記です。
一度こうやってスクリプト化しておけば、それ以降ワンクリックで、定期的な報告、KPI の定点観測ができるわけです。

これも .R または .r 等の拡張子で保存すれば、だれでも使用可能です。

#setwd("~/desktop")
#
ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)

query$Init(start.date = "2014-11-01", #データ抽出したい期間を入力
           end.date = "2014-11-06",
           dimensions = "ga:landingPagePath,ga:keyword",
           metrics = "ga:sessions,ga:bounces",
           sort = "-ga:sessions", #降順
           #filters="",
           segment="gaid::-5", #自然検索トラフィック
           #max.results = ,
           table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),
           access_token=access_token)

lpkw <- ga$GetReportData(query)
# データ抽出は以上で完了

#head(lpkw)

# 以下データ集計
lp <- aggregate(lpkw[,3:4], by=list(lpkw$landingPagePath),sum)
lp <- lp[order(lp$sessions, decreasing=TRUE),]
#head(lp)
sumlp <- lp[1:10,]
other <- apply(lp[-c(1:10),-1],2,sum)
sumlp
other <- data.frame(Group.1="その他", sessions=other[1], bounces=other[2])
other

sumlp <- rbind(sumlp,other)

library(ggplot2)
library(reshape2)

sumlp$"回遊" <- sumlp[,2] - sumlp[,3]

colnames(sumlp) <- c("LP", "セッション", "直帰", "回遊")
LP10 <- melt(sumlp[,-2],"LP",value.name = "セッション")

#グラフの描画
theme_set(theme_bw(base_size=15, base_family="HiraKakuProN-W3")) 
#日本語フォントを指定
p1 <- ggplot(data=LP10, aes(x=reorder(LP,rep(11:1,2)),y=セッション,fill=variable))
p2 <- p1 + geom_bar(stat="identity") +
  scale_fill_manual(values = c("#f39800","#0068b7"))+
  coord_flip() +
  labs(x="",y="") + 
  theme(legend.title=element_blank(),
        legend.position="bottom")+
  ggtitle("LP別セッション数(直帰・回遊)")
#######
png(file = "plot1.png")
p2
#図の保存
####
sub1 <- lpkw[lpkw$landingPagePath %in% sumlp[,1],]

sub1$"回遊" <- sub1[,3] - sub1[,4]
sub1$"直帰率" <- sub1[,4]/sub1[,3]

colnames(sub1) <- c("LP","キーワード","セッション","直帰","回遊","直帰率")

#write.csv(sub1, file="KW内訳.csv", fileEncoding = "Shift-JIS")

tab1 <- list()
tab2 <- c()

for(i in 1:10){
  tmp <- subset(sub1, LP == sumlp[i,1])
  rownames(tmp) <- NULL
  tab1[[i]] <-tmp[,-1]
  tab2[i] <- paste("http://abrahamcow.hatenablog.com",tmp[1,1], sep="")
#自分のサイトのURLをくっつけている
}

#集計したデータを保存
save(tab1,tab2, file="LP10.Rdata") 

「速報、とかにしとくか……」と言っているのは、下記です。
これは「R マークダウン」と呼ばれるもので、R で作成した表などを、マイクロソフトワードや html に書き出しつつ、ふつうの日本語の文章もかける便利なものです。

RStudioからknitrでレポートを自動作成してみた - Take a Risk:林岳彦の研究メモ 等の記事を参照してください。

このコードは、.Rmd という拡張子で保存してください。

---
title: "LP×KWレポート"
author: "@abiko_ushi"
date: "2014年11月7日"
output: word_document
---

11月第一週目のランディングページ(LP)トップ10は下記の通りです。

```{r, echo=FALSE,  results='asis'}
library(knitr)
load(file="LP10.Rdata")
cat(tab2)
```

以下、各LPごとの検索キーワード内訳を表に示します。

```{r, echo=FALSE}
cat(tab2[1])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[1]])
```

```{r, echo=FALSE}
cat(tab2[2])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[2]])
```

```{r, echo=FALSE}
cat(tab2[3])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[3]])
```

```{r, echo=FALSE}
cat(tab2[4])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[4]])
```

```{r, echo=FALSE}
cat(tab2[5])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[5]])
```

```{r, echo=FALSE}
cat(tab2[6])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[6]])
```

```{r, echo=FALSE}
cat(tab2[7])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[8]])
```

```{r, echo=FALSE}
cat(tab2[9])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[9]])
```

```{r, echo=FALSE}
cat(tab2[10])
```

```{r, echo=FALSE,  results='asis'}
kable(tab1[[10]])
```

以上。

word ファイルに出力されるレポートは簡素なものなので、体裁等は手動で調整しています。

(というか、体裁等手動で調整しようとしてめんどくさくなってやめています。動画内でワードに戸惑っているのはぼくが普段は tex というワープロのしょぼいやつみたいなソフトウェアを使っているからです。ビジネスマンの方にはワードのほうが馴染みやすいかと思い、ワードを選択しました。)

R について

本ブログは大半が R についての情報で占められており、R について説明しだすと切りがなくなるため、R の使いかたを学ぶのに適したページの紹介に留めます。

本ブログ内の R 関連のエントリは、R カテゴリーの記事一覧 - 廿TT を参照してください。

また、R 学ぶのでなく R 統計を学びたいという方には『R/S‐PLUSによる統計解析入門』をおすすします。

R/S‐PLUSによる統計解析入門

R/S‐PLUSによる統計解析入門

統計学の推定や検定を学ぶためには、やはり実際に手を動かして計算してみるのが一番です。

ただ一方で、実際問題、ペンと紙をもって確率論や微分積分線形代数をかっちり理論的に勉強するのは大変です。

途中計算はある程度ブラックボックスにして機械にまかせてしまい、分析結果だけは読めるようになるというのも一つの手だと思います。

またグラフを書いてみたりシミュレーションを行ったりすることで、理論についても理解が深まります。R を使えばシミュレーションやグラフの描画がかんたんに行えます。

最後に

ぼくは前 Web 系の会社につとめていて、グラフとか表とか全部エクセルで作っていました。

Excel が悪いソフトだとは思いませんが、エクセルにこだわりすぎるとかえって生産性が落ちるケースがままあると思います。

とにかくおれは自分の同期や派遣社員が毎日遅くまで(あるいは徹夜で)エクセル作業して心身のバランスをくずして会社やめていく、契約切られるみたいな光景はもうみたくない。

うんざりだ。

せっかくインターネットやコンピューターがある時代なんだからみんなもっとテクノロジーの力で楽になってほしい。

少しでもみなさんが幸せなれますように。

f:id:abrahamcow:20141107143055p:plain
f:id:abrahamcow:20141107143102p:plain
f:id:abrahamcow:20141107143110p:plain

アクセス解析レポートについて疑問、質問等ございましたらお気軽にコメント欄をご活用ください。

※私は株式会社イー・エージェンシー様には一切うらみはございませんし、仕事をご一緒したこともありません。

株式会社イー・エージェンシー