時間と空間のマーケティング分析(1)~時間の裏には暗黙の意味が隠れている~
マーケティングでは、時間と空間はとても重要です。お客さんに、どこでどのタイミングでアプローチするか、時間と空間の把握はその基礎となります。しかしながら、いざ時間と空間に関するデータを収集し分析しようと思うと、いろいろな壁にぶつかります。それは、同じ時間や空間であっても、状況によって「意味」が異なることに起因します。その意味を理解し、それを反映させることがマーケティング分析では必須となってきます。
今回は、時間について、データ分析する際に覚えておいてほしいポイントを解説します。
そもそも時間のデータはどうなっているのか?
まず、時間をデータで表す方法ですが、これが実は一つではありません。常識的には、年、月、日、時という要素が必要なのですが、グローバルな観点からは、「どこの」を明示する必要があります。そこで汎用的な表現方法としてISOが定めているのが、ISO 8601という表記方法です。細かいルールはありますが、簡単に言うと、年・月・日・時・時差、という形式です。「2023-03-20T23:04:31+09:00」といった具合です。日本時間(JST)は+09:00だな、とか読み替えれば世界の時間が分かります。サーバーのログなどは、この形式に近い考え方ですが、順番や月の表記などが少し違います。例えば、Apatchというサーバーのログは、「day/month/year:hour:minute:second zone」となっています。
一方、我々が良く使うエクセルなどでは、時間は日付シリアル値という値で保存されています。1900年1月1日を「1」として、1日を1として計算します。時間は小数で表します。詳細はリンクでご覧ください。注意点としては、「どこの」という概念がないことです。
時間は場所によって意味が異なる
時間のデータは、保存形式によって国などの情報があったりなかったりします。なので分析の際には「どこの」時間なのかを注意しておく必要があります。ただし、国が分かったからといって、それで安心はできません。時間の意味は、もっと細かいレベルの場所によって変化するからです。
例えば、都市圏と田舎では、生活のリズムが異なります。都市圏は通勤通学の時間が長くなりますから、朝が忙しかったりします。また都市圏でも都心と郊外では昼夜の人口が逆転するといった現象が起こります。こういった場合、例えば店舗の時間別需要分析を行うには、「場所」を分類して分析する必要があります。時間データに加え場所情報が必要となるのです。
逆なことが起こる場合もあります。例えば世界で展開する物流網の分析では、同じ時計を用いなければ国をまたいだ分析ができません。インターネットの分析も、グローバルでの負荷分散などのテーマなら共通時刻で、国ごとのサーバーの利用状況分析には、その国のユーザーの行動と合わせて分析するので、その国の日時が用いられます。
日付にはいろいろな意味が付いている
カレンダーを見ると、曜日が示されています。マーケティングでは、曜日は大変重要な意味があります。土日は多くの人が休日ですし、金曜日の夜は飲食店がにぎわいます(今でもそうなのかはわからないが・・・)。曜日は規則的に並んでいるので、例えばエクセルでも関数を使ってすぐに出てきます。
祝祭日については関数では出てこないので、自分で日付に紐づけする必要が出てきます。お祭りなどの地方独自の祭事も分析に必要かもしれません。マーケティング分析であれば、店舗が入っている館の催事も売り上げに影響する要因として加味したいところです。また、誕生日といった個人レベルで特別な日もあります。
このように考えると、日にちの特徴は以下のようなレベルで管理するのが便利です。
【年月日】由来のもの
曜日や祝祭日など。年月日で突き合わせることができる
【地域】由来のもの
お祭り、選挙など。年月日×エリアで突き合わせることができる。
【売り場】由来のもの
館・売り場の催事など。年月日×店舗で突き合わせることができる。
【個人】由来のもの
誕生日やその他記念日。年月日×個人IDで突き合わせることができる。
どのようにまとめると意味付けができるか、判断が難しいものもあります。例えば気温や天気は時系列分析の時によく使われますが、需要が朝の気温に依存するのか(例えば、使い捨てカイロ)、帰宅時の天気に依存するのか(例えば、飲食店)など、どのデータを用いればよいか難しいことが多くあります。また、「お盆」「お昼時」といったあいまいさが付きまとう時間もあります。このような場合には、残念ながら自分なりにどう料理するか試行錯誤しながら考えるしかありません。
時間が同じ、ということを計算するのには注意が必要
時間のデータは、ISOや日付シリアル値のような形式で保存されています。時間に意味を持たせるためには(時系列データを作るためには)、例えば地域のお祭りの情報を加えるためには、そのお祭りの年月日のデータに「お祭りフラグ」を追加する必要があります。すなわち、同じ日付のデータを抽出し突き合わせる必要があります。
しかし、ここで問題が発生します。もともとの時間のデータは、年月日情報だけでなく、時刻の情報も含まれます。一方「お祭り」情報は、月日のみの情報です。なので、「元データの時間」と「お祭りデータの時間」はそのままだと一致しません。元データから余計な情報を削る必要があります。ただ、いちいち削る作業を行うのは手間なので、通常、分析用のデータでは、元データの時間情報を【年】【月】【日】【時刻】の独立した列に分解して保存しておきます。こうしておくと、時間に関する意味データと突き合わせるときにいちいち時間情報を削る手間を省くことができます。
時間間隔を調べるなら、日付シリアル値が便利
2つの時間の差を調べるのは、結構難しいものです。日、時、分、秒など、繰り上がり繰り下がりなどがとても厄介です。エクセルで分析する場合には、日付シリアル値が便利です。日付シリアル値は1日=1と長さが決まっていて、時間、分などもそれに合わせて小数で計算されます。なので、2つの時間データを引き算すれば、その差が何日分なのかが計算されます。シリアル値を日、時、分などで表す場合には、セルのフォーマットを調整するか、day(), time()などの関数を使います。詳しくはこちらのリンクを見てください。ちなみに、pythonで分析を行う場合には、datetimeモジュールが便利です。
時間間隔を計算する際にもう一つ気を付けなければならないのは、月や年という単位です。「1カ月後」と我々は良く使いますが、これは時間差ではなくカレンダーの中での差の話です。1カ月は30日だったり31日だったりします。年もうるう年には日数が変わります。ですので、時間間隔を計算する際には物理的な時間間隔なのか、カレンダーの上での差なのかを見極めなければなりません。これは、例えば、CRM分析の中での購入間隔の分析などでも頻繁に問題になります。定期コースは通常カレンダーの意味での「月」単位。RFM分析の際の購買間隔は日数で計算、といった具合です。注意しましょう。
まとめ
時間にまつわる分析は、マーケティングでもしばしば必要になります。しかし落とし穴がたくさんあり、予想以上の時間を取られることがしばしばあります。こちらのブログのことを少し覚えておいていただければ、無用な作業が少し減るかもしれません。是非ご一読を。