モザイクプロットの紹介
モザイクプロットはクロス集計表を図示するための統計グラフです。
例えば2015年1月にこのブログにアクセスしたユーザーを、年代、性別ごとにクロス集計すると下表のようになります。
18-24 | 25-34 | 35-44 | 45-54 | 55-64 | 65+ | |
---|---|---|---|---|---|---|
female | 292 | 487 | 253 | 93 | 49 | 28 |
male | 1155 | 4053 | 2166 | 590 | 217 | 157 |
これをモザイクプロットにしたものが下図です。
表の各セルの数字の大きさが、四角形の面積に対応しています。
探索的にサイトの課題をみつけ出したい際に活用できるかと思います。
(KPI として定点観測する場合は、モザイクプロットより帯グラフや積み上げ棒グラフにしたほうがよいという印象を持っています。期間比較がしやすいからです。RGoogleAnalytics で変化の要因を読みとく(折れ線グラフ、帯グラフ、積み上げ棒グラフ) - 廿TT)
R + Googleアナリティクスによる実践
RGoogleAnalytics でデータを取得します。
詳しくは、
- RGoogleAnalytics をいじっている - 廿TT
- R から API で Google アナリティクスのデータを読むこめるパッケージ, RGoogleAnalytics のクエリ作成方法 - 廿TT
を参照。
まずはオーサライズ。
library("RGoogleAnalytics") query <- QueryBuilder() access_token <- query$authorize()
ここでアクセストークンをコピペ。
#データ取得 ga <- RGoogleAnalytics() ga.profiles <- ga$GetProfileData(access_token) sta <-"2015-01-01"#データ取得期間は en <-"2015-01-31"#とりあえず直近一ヶ月にした。 query$Init(start.date = sta, end.date = en, dimensions ="ga:userGender,ga:userAgeBracket", metrics ="ga:users", table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),# filter = "", access_token=access_token) UGAB <- ga$GetReportData(query)#データ取得完了library(tidyr)library(dplyr)#クロス集計表を作っている UGAB2 <- UGAB %>% spread(userGender, users) UGABmat <- as.matrix(UGAB2[,2:3]) rownames(UGABmat)<- UGAB2[,1]#table オブジェクトを plot 関数にいれるとモザイクプロットになる#R はオブジェクト指向プログラミング原語なのです。 plot(as.table(UGABmat), main="", color=c("tomato","cornflowerblue"),cex=1.1)
新規訪問再訪問と、訪問経路(チャネル)ごとのグラフも書いてみましょう。
query$Init(start.date = sta, end.date = en, dimensions ="ga:userType,ga:channelGrouping", metrics ="ga:users", table.id = paste("ga:",ga.profiles$id[1],sep="",collapse=","),# filter = "", access_token=access_token) UTCG <- ga$GetReportData(query)#UTCG にデータが入った。 UTCG2 <- UTCG %>% spread(userType, users) UTCGmat <- as.matrix(UTCG2[,2:3]) rownames(UTCGmat)<- UTCG2[,1] plot(as.table(UTCGmat), main="", color=c("cornflowerblue","orange2"),cex=1.1)
> t(UTCGmat)(Other) Direct Organic Search Referral Social New Visitor 981578482023404119 Returning Visitor 68115590246795
ドキュメンテーション
ちょっとした表を作る際にはエクセルが便利です。
集計表をエクセルに書き出すにはこうやります。
library(xlsx) setwd("~/Desktop") write.xlsx(as.data.frame(t(UTCGmat)), file="UTCG.xlsx") write.xlsx(as.data.frame(t(UGABmat)), file="UGAB.xlsx")
パワーポイントに貼り付けてプレゼン資料風のものを作ってみました。
モザイクプロット、中学高校では習わないので、実際資料つくるときはもうちょっとていねいに説明したほうがいいかもしれないですね。
プロットに直接文字を書き込む
モザイクプロットは左下の座標が (0, 0), 右上の座標が (1,1) になっているので、座標を指定してプロットに直接クロス表の数値を書き込むこともできます。
plot(as.table(UTCGmat), main="", color=c("cornflowerblue","orange2"),cex=1.1) pct <- apply(UTCGmat,2,function(x)x/sum(x)) dim1 <- dim(pct) pct2 <- rbind(numeric(dim1[2]),pct[-dim1[1],]) posx1 <-apply(pct,2,cumsum) posx2 <-apply(pct2,2,cumsum) text((posx1[,1]+posx2[,1])/2,0.5, prettyNum(UTCGmat[,1],",")) text((posx1[,1]+posx2[,1])/2,0.02, prettyNum(UTCGmat[,2],","))
plot(as.table(UGABmat), main="", color=c("tomato","cornflowerblue"),cex=1.1) pct <- apply(UGABmat,2,function(x)x/sum(x)) dim1 <- dim(pct) pct2 <- rbind(numeric(dim1[2]),pct[-dim1[1],]) posx1 <-apply(pct,2,cumsum) posx2 <-apply(pct2,2,cumsum) text((posx1[,1]+posx2[,1])/2,0.9, prettyNum(UGABmat[,1],",")) text((posx1[,1]+posx2[,1])/2,0.4, prettyNum(UGABmat[,2],","))
あまりきれいにできなかった。
ggplot2 を使ってやる方法もあるようですが、試していません。
参考文献
- 作者:山本義郎,飯塚誠也,藤野友和,金明哲
- 出版社/メーカー:共立出版
- 発売日: 2013/05/23
- メディア:単行本
- この商品を含むブログ (1件) を見る
関連エントリ
余談
余談1:「女性のための」
スライドには「女性層を取り込む記事の掲載をご検討ください。」って書いてみたけど、ぼくは世の「女性のための○○」みたいのあんまり好きじゃない。
そういうのって、なんか占いとか雑な恋愛相談とか芸能人が離婚したとか超どうでもいい記事が多くって、女をバカにしてるっぽいイメージがある。
まあそれをいったら男性週刊誌だってヌードグラビアとかどうでもいい政局図とかばっかだし、男も女も平等にバカってことでいいのかもしれない。
余談2:Googleの男女判別
Googleアナリティクスの性別レポート、男(male)女(female)はあるけど、「不明」がない。
不明が男性のほうにカウントされてる可能性あるんじゃないかと思ってる。
あと、前グーグルの営業の人と話したとき、
「すべては統計なんです。このようにユーザーのセグメントを統計手法で推定することで、よりイグザクトなターゲティングが可能になるのです」
みたいなこと言われて、
「へーぼく統計ちょっとやってたんですけど、それって教師あり学習ですか?」
みたいな質問したら、
「あなたは統計が武器だと思ってるかもしれませんが、ビジネスの現場では統計そのものは目的ではありません。目的は成果です」
とか、なぜか説教されて、
「いや、すべては統計とか言い出したのお前だろ!」
って思ってむかついたけど、とりあえず、
「はい。なるほどですね〜」
って言っといた。
それいまだに根に持ってる。
なぜあそこで怒られたのかさっぱりわからない。おれの質問そんなに失礼だったのか?
アマゾンアフィリエイトのコーナー
水筒です。
水筒欲しい方は適当なの選んで買ってください。
サーモス 水筒 真空断熱ケータイマグ 【ワンタッチオープンタイプ】 0.5L ディープパープル JNL-500 DPL
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2012/08/21
- メディア:ホーム&キッチン
- 購入: 6人 クリック: 49回
- この商品を含むブログ (3件) を見る
フォルテック・スピード ワンタッチ栓ダイレクトボトル 1.0L ブラック FSR-6191
- 出版社/メーカー:和平フレイズ
- メディア:ホーム&キッチン
- この商品を含むブログを見る
象印 水筒 真空ステンレスボトル 1.0L SJ-TE10-XA ステンレス SJ-TE10-XA
- 出版社/メーカー:象印(ZOJIRUSHI)
- 発売日: 2007/01/21
- メディア:ホーム&キッチン
- 購入: 3人 クリック: 12回
- この商品を含むブログ (2件) を見る
和平フレイズ 水筒 ワンタッチ栓ダイレクトボトル 1.0L フォルテック・スピード ブラック FSR-7372
- 出版社/メーカー:和平フレイズ
- 発売日: 2015/02/01
- メディア:ホーム&キッチン
- この商品を含むブログを見る
サーモス 水筒 真空断熱ケータイマグ 【ワンタッチオープンタイプ】 0.75L ブラックパール JNL-751 BKP
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2014/02/21
- メディア:ホーム&キッチン
- この商品を含むブログ (2件) を見る
サーモス 水筒 真空断熱ケータイマグ 0.5L パールホワイト JNO-500 PRW
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2013/08/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る
象印 水筒 直飲み ステンレスマグ 480ml ダークココア SM-KB48-TM
- 出版社/メーカー:象印(ZOJIRUSHI)
- 発売日: 2013/02/21
- メディア:ホーム&キッチン
- この商品を含むブログ (2件) を見る
サーモス 水筒 ステンレススリムボトル 0.5L ブラウン FFM-500 BW
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2013/02/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る
サーモス 水筒 真空断熱ケータイマグ 0.5L バーガンディー JNO-500 BGD
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2013/08/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る
サーモス 水筒 ステンレススリムボトル 0.5L ステンレスブラック FFM-500 SBK
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2013/02/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る
【Amazon.co.jp限定】象印 水筒 直飲み ステンレスマグ 480ml ステンレスシルバー SM-JB48AZ-XA
- 出版社/メーカー:象印(ZOJIRUSHI)
- 発売日: 2013/02/25
- メディア:ホーム&キッチン
- この商品を含むブログを見る
象印 水筒 ステンレスボトル 500ml SV-GG50-XA ステンレス
- 出版社/メーカー:象印(ZOJIRUSHI)
- 発売日: 2010/02/21
- メディア:ホーム&キッチン
- 購入: 1人 クリック: 2回
- この商品を含むブログ (1件) を見る
サーモス 水筒 ステンレススリムボトル 0.5L ブルー FFM-500 BL
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2013/02/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る
サーモス 水筒 真空断熱ケータイマグ 0.5L ブラック JNO-500 BK
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2013/08/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る
象印 水筒 ステンレスボトル 800ml SJ-TE08-XA ステンレス
- 出版社/メーカー:象印(ZOJIRUSHI)
- 発売日: 2007/01/21
- メディア:ホーム&キッチン
- 購入: 2人 クリック: 12回
- この商品を含むブログ (2件) を見る
サーモス 真空断熱スポーツボトル 0.8L ピンク FFF-800F P
- 出版社/メーカー: THERMOS(サーモス)
- 発売日: 2011/02/21
- メディア:ホーム&キッチン
- この商品を含むブログを見る