けどできなくて行き詰った、という話。
今回の記事は、僕が知識不足で悩んでいるというだけの話題で、これからGoogle AnalyticsとRを使って重回帰分析をするよ!というハウツー記事ではないので、そういう内容を期待して開いてくれた人は申し訳ないがブラウザバックしてほしい。
派手な統計解析で感覚派の上司を見返したかった
僕が仕事でアクセス解析を担当していることは何度も話した通りだが、僕ががんばってグーグルアナリティクスの使い方を覚え、膨大なデータから改善すべき点を探して提案しようとしても、
上司がデザイナー上がりの感覚派人間であるためにデータを仕事に活用するという発想がほとんどないため、ここらで一発派手な統計解析をしてデータ分析の有用さをわからせようと思ったのが、そもそもの経緯。
大人の喧嘩は結果で勝負するんだと昔バイトしていた居酒屋の社員に教わった。
口で言うより数字で見せた方がわかりやすい。実に合理的だ。
……が、Rで統計解析をする以前に、グーグルアナリティクスからデータを取ってくるところで行き詰った。
ユーザーの属性、流入チャネル、滞在時間などからCVRを予測するモデル
僕が作りたかったのは、グーグルアナリティクスのデータを元に、CVR(コンバージョン率)を従属変数として、ユーザーの属性(年齢・性別・デバイスカテゴリ・過去の訪問の有無)、訪問のタイミング(時刻・曜日)、流入チャネル、サイト内での行動(ページ/セッション、滞在時間)などを独立変数とした重回帰モデルだ。
そのためには、グーグルアナリティクスを使って、セッションをディメンションとして、上で独立変数として挙げたデータを全て串刺しにしたデータを抽出したかったのだが、どうやらこれが不可能らしいのだ。
というのも、上で独立変数として挙げたデータは、
ユーザーレベルのスコープ(年齢・性別・デバイスカテゴリ・過去の訪問の有無)と、
セッションレベルのスコープ(時刻・曜日・流入チャネル)と、
ヒットレベルのスコープ(ページ/セッション、滞在時間)が全て混在しているので、
これらをひとまとめのデータとして取ってくるというのがグーグルアナリティクスの仕様上恐らく不可能なのである。
この時点で、僕が作りたかったモデルを作るのは無理ということになるので、他のデータを独立変数として使うことを考えなければならない。
ウェブスクレイピングでデータを集めてくる代替案
となると、代わりとして考えられるのは、ユーザーエクスプローラのデータを使うことなのだが、ユーザーエクスプローラでは年齢と性別はわからないし、
CSVやスプレッドシートの形でダウンロードすることができないので、ウェブスクレイピングの技術が必要になる。
Rでもウェブスクレイピングはできるので、for関数か何かでループを組んでひたすらデータをかき集めてくるコードを書けば必要なデータを集めることはできるのだが、
僕はウェブスクレイピングの経験がないのでまずやり方を覚えるところから始めなきゃいけないし、それでいい結果が出なかったときの落胆が大きそうでやる気がしない。
まあ、データ分析というのは得てして欲しい結果は出ないものなのだが。
しかし、卒論でもスクレイピングは必要になりそうなので、その練習として今から挑戦するのは十分アリだなとも考えている。
他の仕事との兼ね合いも考えつつ、可能ならやってみようと思う。
まとめ
グーグルアナリティクスとRで派手な成果を出して上司を見返そうと思ったのにグーグルアナリティクスの仕様と僕の知識不足のせいで無理だった、というただそれだけの話でした。
もし何か良いやり方を知っている人がいたらぜひ教えてほしい。
ウェブスクレイピングによるデータ収集はあくまで最終手段なので、グーグルアナリティクスの中だけで完結したデータが作れるのならそれでやりたい。
グーグルアナリティクスの公式ヘルプフォーラムにも質問を投げたので、誰か詳しい人は回答よろしくお願いします。