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

俺の報告

RoomClipを運営するエンジニアの日報(多分)です。

Google Analyticsでみる数値運動の周期性をフーリエ解析で眺める - 日報 #145

Google Analyticsのアプリが綺麗になりましたね。
Web Master Toolも一部リッチになったみたいで、
益々世界はデータを無視する言い訳ができないようになってきました。
データアクセスコストが低いなら、そりゃ見るべきです。

さて、
ということで本当毎日のようにGAを眺める日々なわけですが、
そういう生活をしている人なら必ずあることを感じると思います。
タイトルにある、周期性です。
当たり前ですが、多少のボラティリティこそあれ、
時間別にみるセッション数などは「大体同じ形」になります。
大きなトレンドがあったとしても、大体同じ形のままベースアップしていく感じです。
勿論例外もありますが、逆に「例外だ」と判定される理由は、基本的には同じ形である確率が高いからだとも言えます。

これをもっと分解して、分単位でみたとき、1時間というユニットで相互に同じ形になることは恐らくないでしょう。
秒単位でみたときに1分というユニットで相互に同じ形になることも恐らくないでしょう。
(有限個のパターンになるかもしれませんが、、、)
「アクセスの周期性」という意味における最小単位は1日と捉えるのが妥当かと思います。
多分。詳しく見てないけど。

それでは、
周期が1日単位で、サンプリング数が時間だとして、
これはつまり、1日を1秒としてみたとき、秒間24個のサンプリングをした波形をみているのに等しいわけですね。
これに周期性を発見したというのであれば、フーリエ解析したくなるのは人の常です。
便利なサイト(http://gijyutsu-keisan.com/calc/analysis/calc_fft/calc.php)もあることですし、
数ヶ月分のデータの時間ごとのセッション数推移を、
サンプリング周波数(ナイキスト周波数)48Hzで、24Hzまでの分解能で周波数特性を調べてみましょう。

具体的な数値は、まぁ秘匿事項にしますが、
とても面白い結果になりました。
適当な3日分のデータと、
4ヶ月分のデータで、
上位の周波数特性が同じになりました。
数値は適当にごまかしてますが、
2Hz, 4Hz, 6Hz, 8Hz あたりに大きなピークがでてきます。
ずごい雑に、こいつらがきっと「1日以内での周期を特定している周波数ピーク」だと解釈してみましょう。
そこそこ大きい周波数ですね。
ちなみに、0.8Hz付近にもピークがでるあたりをみると、ものっすごい「1週間系のやつかな、、」とか思っちゃいますが、
これは無視します。
で、実際、2,4,6,8Hzあたりのピークを足し合わせると「1日の大体同じ形」とやらを再現できます。
もしかしたら、世の中の人の生活周期は「12時間、6時間、4時間、3時間」で区切りできるのかもしれません。
さぁすごいリアリティがなくなってきたので、
どうせなら妄想全開ワールドまでいきましょう。

となると、4ヶ月分のデータのフーリエ解析結果において、 小さな周波数でピークがでているものがあるのか?というのが気になってきます。
それがきっと「トレンド」のはずです。

で実際4ヶ月分を48Hz分のサンプリング周波数、まぁ要は 0.02秒のサンプリング時間でFFTしてみると、
同じように2,4,6,8Hzにピークが現れます。
ですが、それと同じくらいのピークが0.04Hzや、0.01Hzあたりにも出現してきます。
こんな小さい周波数、1秒1日計算なので、0.04Hzは25日で1回サイクル、
0.01Hzは100日で1回サイクルという大きな波形が重ね合わさっているわけです。
こ!!!これは!!!
0.04Hzは1ヶ月で、0.01Hzは大体1シーズンなんじゃないの!?

はいはい、妄想はここまで。
まぁつまりデータ解析もたまには楽しいねっていう、
そういう話でした。