TABLEAUでコホート図を作る

今回のテーマはコホート図です。先日のDeep Visualization Nightブログで予告した通り、コホート図の作り方を解説します。


今回の記事に使用したワークブックは以下からダウンロードできます。

Tableau Public: https://tabsoft.co/3111a29

コホート図とは

最初に、ざっくりと「コホート図とは何か」について述べます。


「コホート」という言葉自体は「共通事項を持つ集団」を意味します。

「コホート分析」は、そのコホートを一定期間追跡し、各コホート間での振る舞い等を分析することです。


例えば以下はyarakawa.comのGoogle Analytics画面から持ってきたコホート図(指標:ユーザー数)です。


この図の見方ですが

  • 「(指定された過去12週間の間で)初めてサイトに訪れた週」でコホート(ユーザーの集団)を作成し

  • そのコホート内において「経過週数ごとでの(再び)サイトに訪れたユーザー数)を集計

しています。


例えば上から2番目の「2019/05/05 - 2019/05/11」のコホートでは、計115人のユーザーが、その週に初回訪問しました。

そこから1週間後には18人が再訪問、2週間後には7人が再訪問…という感じです。


コホート図で可視化しているもの

以下、マーケティング辺りを念頭に話します。

初回訪問日などでユーザーをグルーピングし、初回訪問以降での数値の変動、ユーザーの行動を見る形になるので、よく可視化の対象やテーマになるのは「定着率」とか「維持率」とか「再訪率」とか、そのあたりの文脈になるのかなと。


もしくは、可視化する数値の減少/増加タイミングも分かるようになるので、施策を打つタイミングを最適化する材料にもなりそうですね。


参考資料

Wikipedia: コーホート

Wikipedia: コホート研究

Google Analytics ヘルプ: コホート分析レポート

コホート図の作り方

というわけで、Tableauでコホート図を作っていきます。

データはSample SuperStoreデータを使用します。


いきなり作成に入る前に、必要な要素をおさらいします。

  • コホートを「初回購入日」で作成するので「各Customerごとの初回Order Date」を計算します。

  • そして「初回購入日からの経過期間」が必要なので、こちらも計算します。

とりあえず必要なのは、これだけです。

というわけで、さっそく計算フィールドを作成していきましょう。


始めに、以下の計算式で「各Customerごとの初回Order Date」を計算します。

Customerについては[Customer ID]を使用します。


First Order Date by Customer

{FIXED [Customer ID]: MIN([Order Date])}


LOD計算については日本語のブログ記事等は比較的豊富なので、各自詳細はお調べいただくとして、とてもざっくり書くと

「LOD計算で、計算の粒度を自分で任意に指定できる」

という感じで理解して頂ければ幸いです。

(この前の表計算解説記事のような粒度での、LOD解説記事も書こうか考え中です)


イメージ的には、下図のようにCustomer IDごとのOrder Dateを並べたときに、水色でハイライトされている「初回購入日(最小のOrder Date)」が取得されます。


そして「初回購入日でグループされたCustomer」で作成されるコホートは、下図のようになります。

初回購入日の年月でグループを分け、そこに含まれるCustomerがリストアップされています。


ということで、計算フィールド「First Order Date by Customer」だけで、コホートの作成まで完了しました。

次は「初回購入日からの経過期間」を作成します。ここでは一旦「月単位」で計算します。


Periods (months)

DATEDIFF('month',[First Order Date by Customer],[Order Date])


シンプルにDATEDIFF関数を使用します。

日付関数であるDATEDIFF関数についてはこちらの記事を参照いただくとして、概要としては

「Order Dateと初回購入日の間に、何ヶ月の差があるか」

を取得しています。


ついでに初回購入日も月単位にしましょうか、ということで、以下の計算フィールドを作成します。


First Order Date (month)

DATETRUNC('month', [First Order Date by Customer])


DATETRUNC関数は、要は日付データの丸め込みをする関数です。

詳細はオンラインヘルプのDATETRUNC関数の項目をご参照ください。


作成した「Periods (months)」と「First Order Date (month)」をビューに置いてみます。


コホート図っぽいものができましたね。

縦方向は「初回購入月」、横方向は「初回購入月からの経過月数」で区切られています。

コホート図に指標を与える

コホート図の形はできたので、あとは分析に合わせた指標を作っていきます。


まずは簡単な例として、各「初回購入月」と「初回購入月からの経過月数」における顧客数を使用します。


# of Customers

COUNTD([Customer ID])


Vizが「初回購入月」と「初回購入月からの経過月数」で分けられているので、つまりViz-LODがこの2つなので、適当な集計値は、この2つで分けられた値ごとに集計されます。

(Viz-LODの考え方についてはこちらの記事の冒頭をご覧ください)


実際に値を入れてみると以下のようになります。


何となく顧客数が増える(顧客がまた買いに来る)周期がありそうだなと分かります。

ただ顧客数で見ているので、どうしても初回購入の顧客が多い左上の方に数値が多めに出てしまいます。

したがって、各コホート(各初回購入月)ごとに数値を見たい場合には、各コホートにおける割合で見る方が良いのかなと思います。


ということで、下記の計算フィールドを作成します。


Retention Rate (table calc)

[# of Customers] / LOOKUP([# of Customers],FIRST())


LOD使って「各コホート毎の初回購入Customer数」を算出してもいいのですが、今回は表計算のLOOKUP関数を使います。

ちなみにLODだと以下の式となります(長いですね)。


Retention Rate (LOD)

[# of Customers]

/

MIN({ FIXED [First Order Date (month)]:

COUNTD(IF [Periods (month)] = 0 THEN [Customer ID] END)

})


表計算を使用している部分「LOOKUP([# of Customers],FIRST())」について補足します。

分母に欲しい値はPeriods(month) = 0の値(あるコホートでの初回購入Customer数)なので、

LOOKUP関数のパラメータにFIRST()を指定し、Periods(month)における最初の値であるPeriods(month) = 0のときの[# of Customers]を取得する、という作りになっています。


さて、作成したRetention Rate (table calc)を置いてみましょう。


表計算の設定は、以下のようになっています。

この辺りは、Periodに沿ってLOOKUPとFIRSTが計算される形であれば、なんでも大丈夫です。


NULL値に色が入ってしまうので、フィルターを設定することによりNULL値を除外します。


以上で基本のコホート図は完成です。

(おまけ)ターゲット値を基準とした色付け

ところで、これは別にCohortに限ったことではないのですが、色の与え方って難しいんですよね。

例えば先ほどで定義されるRetention Rateが30%もあれば十分であれば、色の最大値は30%として欲しいな、とか。

でも実際には、70%のセルに引っ張られて、30%が全然色付かないな、とか。そういう感じの悩ましさです。


いつも必ず30%なら、以下のように手動設定でもいいかもです。


ただ、このある種のターゲット値を色々変えながらVizを見たい場合には、パラメータ等を使わなければいけません。

その場合、そのパラメータに合わせて色付き方も変わらなければいけないので、色の手動設定はイマイチになります。


ということで、色用の計算フィールドを作成します。


Cohort KPI Color (Sequential)

IF [Target Retention Rate] != 0 THEN

IF [Retention Rate (table calc)] <= [Target Retention Rate]

THEN [Retention Rate (table calc)] ELSE [Target Retention Rate]

END

ELSE [Retention Rate (table calc)]

END


[Target Retention Rate]は小数型のパラメータです。

この計算式は以下を意味します。要は最大値をTarget値によってコントロールしています。

  • Target Retention Rateが0でない場合、もしRetention RateがTarget以下ならばそのまま表示、それ以上ならTarget値を表示

  • Target Retention Rateが0の場合、Retention Rateをそのまま表示


実際に見て頂くと分かりやすいと思います。

まず、Target Retention Rateが50%の場合。色範囲が0-50%となっていることが分かります。


次にTarget Retention Rateが20%の場合。色範囲が0-20%となっていることが分かります。

この仕組みは色々なところで役に立つんじゃないかなと思います。


ちなみに、先ほどの計算式は単色用のものでしたが、2色用の計算式は以下となります。


Cohort KPI Color (Diversing)

[Retention Rate (table calc)] - [Target Retention Rate]


以下の場合だと、20%超が青く、20%未満が赤くなります。この基準値がパラメータで制御されます。


最後に

今回はコホート図の作り方について解説しました。

比較的作りやすく、特にマーケティング系で使いやすいチャートだと思います。


ご質問等はTwitterまたはLinkedinまでよろしくお願いします。 それでは。

© 2023 by Actor & Model. Proudly created with Wix.com