以下の様な売り上げデータがあるとします。一行が一つの注文で、各行には、その注文をした顧客のIDが含まれています。
そして、各年度に獲得した顧客のその後を追跡して、その後も顧客でありつづけてくれているのか、また売り上げにどれほど貢献しているのかといったことを分析したいとします。こういった分析はコホート分析と呼ばれます。
コホート分析には生存分析のアルゴリズムを使って統計的に正しく行うことをお薦めしますが、簡単な分析であれば、データラングリングとチャートだけでもできます。
例えばピボットテーブルを使って、以下のように各年に獲得した顧客がその後の年にどれだけお金を費やしているかをまとめることができます。
また、以下の様なレイヤーケーキグラフと呼ばれるグラフを使って、各年に獲得した顧客のその後の売上における貢献を可視化することができます。
このようにチャートで可視化するためには先にデータを加工(データラングリング)しておく必要がありますが、今日はそのデータラングリングと可視化の手法を紹介したいと思います。
この分析では、顧客をどの年度からの顧客であるのかで分類して分析するため、各顧客の最初の注文がいつだったのかを見る必要があります。まず、行(つまり注文)を顧客でグループ化します。
顧客ID(Customer ID列)で行がグループ化され、それぞれのグループが色分けされたのが見て取れます。
表が顧客でグループ化されている状態のため、ここでmutateコマンドに以下の様な式を指定すると、顧客ごとの最小の注文日(Order Date列)の列を作成できます。
min(`Order Date`)
新しい列名は、first_order_dateとしました。この列が表の右端に追加されているのが見て取れます。
グループ化の効果は、ここから先のステップでは必要ないためグループ化を解除しておきます。
各顧客の最初の注文日が分かったので、これを年度に丸めれば、このあと顧客を分類するのに使う、顧客の獲得年度が得られます。 以下の式を指定したmutateコマンドで、これを計算します。
floor_date(first_order_date,unit="year")
列名をfirst_order_termとしました。顧客が属するグループ(これをコホート分析ではコホートと呼びます)はこの列の値で決まります。
ピボットテーブルにまとめるために、コホートの他にもうひとつ必要な情報は、各注文が顧客にとって最初の注文から何年目に入れられたものなのかです。最初の注文があったのと同じ年度に入れられた注文なのか、次の年度に入れた注文なのか、3年目に入れた注文なのか・・・を表す値が必要ということになります。
これは、mutateコマンドに以下の式を指定して計算できます。
floor(as.numeric(`Order Date` - first_order_term)/365.25)
式を少し解説します。まず、各注文日から、その顧客の獲得年度の最初の日(1月1日)を引いた日数を出します。これを365.25日で割ると、単位が日から年になります。ここから小数点以下を切り捨てて整数にすると何年目の期間中の注文であったのかが分かります。
この式で、period列を作成しましょう。
これで、ピボットテーブルとレイヤーケーキグラフを表示するためのデータが全て整いました。
コホート(first_order_term列)を行に、period列を列に割り当ててピボットテーブルを描くと、顧客を年度ごとにコホート分析したピボットテーブルとなります。
こちらがインタラクティブ版のピボットテーブル(マウスオーバーで詳細な値が表示されます。)となります。
今度はエリア・チャートを使ってそれぞれのコホートが年が経つに連れて売上に対してどれだけ貢献しているのかを可視化してみましょう。
チャートのタイプに’エリア’を選んで、Order Date列をX軸に、SalesをY軸に、コホートの列であるfirst_order_term列を色で分割にアサインすると、いわゆるレイヤーケーキグラフと呼ばれるチャートを以下のように表示することができます。
ここで、このチャートに一つ問題があります。新しい年のコホートの顧客が古い年のコホートの顧客の下に表示されています。しかし、そうではなく、古い年のコホートの顧客の上に新しい年のコホートの顧客が積み重なって見えたほうが、もっと直感的に理解できそうです。
実は、こうしたカテゴリー列の値がどういう順序で表示されるかというのは、その列のデータタイプをFactorというタイプに変換することで自由自在にコントロールすることができます。
first_order_term列をfactor型に変換します。
新しく列を作成タブを選んで、新しい列名をcohortとします。
さらに、cohort列のfactorとしての順序を逆にします。
実行ボタンをクリックすると、cohort列のfactorとしての順序が反転します。
これで以下の様な、色の順序が正しいレイヤーケーキグラフが得られました。
こちらがインタラクティブ版のレイヤーケーキグラフです。
この記事の分析を簡単に試してみるには、このページの右上のリンクからEDFファイルをダウンロードしてください。
ダウンロードしたEDFファイルを、ご自分のExploratory Desktopにインポートすると、このノートで説明した分析を、もとのデータからチャートを作るまでの過程を含めて再現できます。
この10月の中旬に、Exploratory社がシリコンバレーで行っているトレーニングプログラムを日本向けにした、データサイエンス・ブートキャンプを東京で開催します。データサイエンスの手法を基礎から体系的に、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に参加を検討してみてください。詳しい情報はこちらのホームページにあります!