こんにちは、AITCの小川です。普段は、様々な企業様から預かったデータの統計的な分析や、AIモデル構築をする業務に携わっています。
今回は生存時間分析について解説します。 生存時間分析という名前ですが、生死に関わる生存時間に限らず様々な事象に応用可能な分析です。 生存時間分析では、ある特定のイベント(例えば、サービスの退会や離脱など)が起きるまでの時間を分析します。
生存時間分析はどこで利用するの?
以下のようなシーンで利用することができます。
- あるサービスにおいて、早期に離脱する人はどのような特徴があるのか知りたい
- ある製品において、故障するまでの時間を縮める要因は何か知りたい
- ある疾病において、どんな人が早く発症しやすいのか知りたい
生存時間分析って何がうれしいの?
どういう要因によって離脱しやすいかを知ることができるので、例えば、サービスにおける離脱を対象に生存時間分析をすることで、離脱率改善のためのマーケティング施策につなげることができます。
また、1ヶ月以内に離脱する可能性は80%というように離脱までの時間について予測することもできるため、離脱しそうな人をピックアップしてフォローアップにつなげることもできます。
生存時間分析の例
実際に生存時間分析がどんなものなのか知っていただくため、具体的な例を使って解説します。 以下のような設定であるとしましょう。
あなたはあるジムを経営している経営者で、退会者が多いことを危惧しています。 会員が退会することを防ぐために対策を講じたいのですが、どういう対策をすればよいのかわかりません。 そこで、ジムを退会するまでの時間を対象に、会員のデータを使用して生存時間分析をすることで、退会を防ぐための糸口を探します。
会員データとして以下のようなデータを想定します。(データは架空のものです)
年代 | 性別 | 住所 | 会員クラス | 先週来店数 | 入会日 | 退会日 |
---|---|---|---|---|---|---|
20代 | 男性 | 東京都XXX | 普通 | 1 | 2022/3/1 | |
40代 | 女性 | 東京都YYY | プレミアム | 0 | 2019/6/8 | 2020/5/12 |
30代 | 女性 | 東京都ZZZ | 普通 | 0 | 2021/4/31 | 2021/6/7 |
年代は20~40代のみとし、会員クラスは普通かプレミアムのどちらかです。 退会日が空白の場合は、まだ退会していないことを表します。
表に示した会員データは全体の一部であり、会員全員分のデータが存在するとします。
シンプルな生存時間分析
生存割合のプロット
簡単に生存分析を実施する方法の一つとして、横軸が時間、縦軸が生存割合の折れ線グラフをプロットする、ということが挙げられます。 この場合の生存割合とは、加入からある時間が経過した後に、まだ退会せず会員として残っている割合のことです。 入会日を0として、横軸に会員である期間の月数を、縦軸に生存割合をプロットすると以下のようになります。
月数が進むにつれて会員が退会していき、10ヶ月後あたりで生存割合が約40%となっていることがわかります。 つまり、入会してから10ヶ月後には6割程度の人が退会してしまっています。
変数ごとのプロット
特にどんな人が退会する傾向があるのか知るために、例えば性別ごとにデータを分けてプロットしてみましょう。
簡単に性別ごとの退会の傾向を見ることができました。 女性の生存割合を表すオレンジの線が、男性の生存割合を表す青い線よりも上にあります。 つまり、女性のほうが長く会員でいる傾向がある一方で、男性は比較的早く退会する傾向がありそうです。
他の変数の影響を抑えた場合の変数ごとのプロット
上記のようなプロットは手軽に、ある1つの変数と生存時間との関係を見ることができますが、その変数が本当にどれだけ生存時間に影響があるのかを見るには向いていません。 実は注目している変数ではなく、他の変数によって生存時間に影響しているかもしれないからです。
例えば、ジムには20~40代の人が通っているが、男性の会員は20代が多くて、年代が上がるにつれて少なくなり、女性は40代の会員が多くて、年代が下がるにつれて少なくなるとします。 本当は性別は退会するまでの時間に関係なく、年代が下の人(若い人)ほどジムを早く退会しやすいとしたら、男性と女性で退会までの時間を比較するとどうなるでしょうか?
性別ごとに分けたプロットに示されるように、男性は年代が下の人が多く、女性は年代が上の人が多いため、性別と退会するまでの時間に関係がなくとも、女性のほうが長く会員でいるという結果に見かけ上なってしまいます。
では、性別の退会までの時間に対する本当の影響を見るためには、どうすればよいでしょうか? 年代を揃えた状態で、性別ごとに分けてプロットすればよいのです。 つまり、20代の男性と女性で比較、30代、40代と同様に比較します。
このようにすれば、年代の影響は取り除いた上で、性別ごとの退会までの時間に対する影響を見ることができます。 プロットを見てみると、性別間であまり差が見られません。つまり、性別によって生存割合に差が出ているわけではないことがわかります。
ここまで見てきたように、時間ごとの生存割合をプロットすることで、簡単に生存時間分析ができますが、以下のような問題があります。
問題1:パターン数の増加
上記の例では、性別と年代以外の影響を無視して、かつ年代に3パターンしか存在しないため、プロットが簡単で全体を見ることができました。 しかし、退会までの時間に影響を与えるのは年代以外にも存在するでしょう。 性別の退会までの時間に対する本当に影響を見るためには、年代以外にも条件を揃える必要があります。 例えば、年代だけなら20代、30代、40代の3パターンでよかったのですが、プレミアム会員も考慮すると、3×2=6パターンで男性と女性で比較する必要があります。 さらに、住所などの様々な変数を考慮するとパターンが膨れ上がっていくことは想像に難くありません。 変数が増加した場合、大量のパターンを列挙して、それに対応するプロットを並べて結果を見るのは、現実的ではないでしょう。
問題2:影響の定量化
プロットすることで直感的にイベントまでの時間に対する影響を知ることができますが、定量的にどれくらい影響を与えるのかわかりません。 定量化できれば、各変数がイベントが起きるまでの時間にどれだけ影響を与えるかを比較できます。 そして、影響の強い変数に注目して、何か対策を講じることができます。 例えば、性別がジムを退会するまでの時間に与える影響よりも、年代がジムを退会するまでの時間に与える影響のほうが大きいのであれば、若者向けの施策を打つなどが考えられます。
次回に向けて
生存割合をプロットする方法では以上のような問題がありますが、次回でその解決方法について解説いたします。 ぜひ、次回の記事も読んでいただけますと幸いです。
執筆
AIコンサルティンググループ
小川 裕也