黄昏より暗きもの、血の流れより赤きもの

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

話好きな自分がJavaを使い、google Analyticsのセッション数を平日/休日別に集計するまでの流れを書いた

序章

google analyticsは言わずと知れたアクセス解析ツール。もちろんgoogle analyticsを開いて普通にアクセス状況を調査し、ブログのPV数などの目標設定に役立てる訳ですね。これこそ一般的な使い方な訳ですが、今日はちょっと違った使い方をしてみようと思います。

他のみんなはどうしてる?

google Analyticsの場合、PHPJavaやRなどのプログラミング言語から、google Analyticsのデータを取得できるAPI(google Analytics API)が存在します。基本的な設定などは「初心者でも分かる!なGoogle Analytics APIの使い方(Syncer)」さんが詳しく解説しており、使う際は非常に参考になりました。

APIの出力結果を上手く使い、R言語で統計分析する事例も多く公開されています。例えば「ウェブディレクターのための統計入門:Rを使って自分サイトの解析」さんでは、直帰率と訪問者数がPVにどのような影響を与えるかを、重回帰分析という手法を使って調べています。

とみんなのこうしてるをまとめたので、今度は自分はどんな事をしたか話します。

第二章:まずはExcelで曜日別にまとめてみた

話変わってこのブログって、こういうネタばっか書くから休日にお客さんが来ない傾向にあるんじゃないか?と常々です。でまあ美容品のレビューを書いたり、はたまたドラッグストアショーの記事を書いてみたりしている訳だったりします。それでもイベントが終了すると元にもどちゃって…の繰り返し。また毎日のアクセス数ってばらつきがあるので、曜日別や平日/休日別にどうお客さんが集まるかが気になる所です。そんな訳でまずExcelで調べてみました。具体的な手法は以下の通りになります。

Excelで曜日別にまとめる概要!

1.goolgle analyticsからcsvファイルをエクスポート
2.エクスポートしたファイルのセルを1個ずらす
3.「TEXT(WEEKDAY(セル名),"aaaa”)」関数を使い、曜日を取得する
4.SUMIF関数を使い、曜日事の合計値を取る
5.COUNTIF関数を使い、1カ月間に何日○曜日が含まれるかを調べる
6.「4で求めた合計値/5で求めた日数」で1日あたりのアクセス数の平均を求める

後述しますが、曜日事のPV数の母平均を調べたところ、以下のような結果となりました。曜日毎の平均と分散を見てみると、平均はいずれも100件/日前後であることがわかります。しかしながら土曜日と日曜日は母標準偏差が高く、ある特定の日にアクセスが偏っている可能性が高い事が分かります。3月はまあドラッグストアショーと言ったイベント事に頼り過ぎた結果とも言えます。


f:id:program_study:20150406201316p:plain

話変わって。こうしたブログのイベントネタを書く為のチケットの予約、ブースの配置などのPlan(計画)を立て、実際にネタを集めてそれを実践(Do)し記事に落とし込みます。ああ「ここはこうすれば…」とか「この記事を書けば良いかな?」と次に繋げる反省をするためのCheck。最後にその教訓を元に次の記事に活かすActionの4つの工程を繰り返すテクニックの事をPDCAサイクルと呼びます。


f:id:program_study:20150406201524j:plain

そうは言っても実践は難しい。現にこのブログもDとCしか回ってないのが現状です(汗)。*1さて先ほどのExcelの内容はPDCAサイクルの中で「今月(3月)の日曜日の母標準偏差が117.8なので、来月は100.0位まで下げ、常に見に来てくれるような記事を書こう」と言ったように、何らかの計画(Plan)や改善案(Action)のための判断材料として用いられます。

第三章:Excelでやると日が暮れるので、Javaで自動計算できるようにしてみた

ここでデータを集計する上で手作業が多い場合、これをプログラムで自動化する事でラクにできないかを考えるとよいでしょう。データの集計作業に時間を取られなくて良くなり、データを講評する作業に集中できます。又PDCAの言葉を借りるなら、PやCにかかる時間を減らすことができ、PDCAを早く回す事につながる事でしょう。以下Javaを使い色々やってみます。

母平均や母標準偏差数値計算

ここで母平均や母標準偏差を計算する方法について説明します。母集団上のn個のデータX_1,X_2,X_3,…….,X_nの母平均μはそのまま平均:μ=ΣX_i/n、分散:σ^2={Σ(X_i-μ)^2}/nと定義されます。

この式をJavaのクラスで書いたものが以下になります。注意すべき点は、母平均も母分散も割り算なので、数字に小数(doubleやfloat)が出て来る事ですね。キャストし忘れて、正しい数値が出て来ない事態を防がねばなりません。

csvの不要な所は飛ばして計算

これでExcelの4〜5までの工程は解消されました。3.の工程を短縮するためにこちらのgitHubのコードのようなクラスを作り、最終的なものは以下のようになります。

以下は休日と平日のアクセス数の平均や標準偏差を取る例です。csvファイル自体が8行目から数字部分が始まり、最後の合計は「,」区切りの数字なので、これを読み込もうとするとエラーとなるのでご注意下さい。この2ヶ所を上手く取り除き、必要な部分を取り出して行きます。だからこれだけ長いコードとなってしまいました。

実行結果

プログラムの実行結果は以下になります。データ量も30個程度なので、サクサク動いていました。


f:id:program_study:20150406204156p:plain

最後に

今回の記事はいかがでしたでしょうか?自分の方は作りたいから作った。PDCAと言いたいから言ったと言うのが正直な所です。あと、ソースファイル一式はこちらとなります。宜しければ使って下さい。

如何せん一般的なブログ記事とずれがあったので、敢えて「他のみんなはどうしてる」のコーナーを設けました。何か興味のある記事を見つけましたら、お手数ですがもう一度最初から読み返し、面白そうな記事を見てみて下さい。

*1:多分自分じゃ実践出来ないと思います...