リテンションおよびチャーン指標の計算
メニューを表示するにはスワイプしてください
リテンションおよびチャーン指標は、コホート分析において不可欠なツールであり、製品がユーザーをどれだけ長期間維持できているか、またどこでユーザーを失っているかを測定するのに役立ちます。リテンション率は、特定の期間後にコホート内でアクティブなままのユーザーの割合を定量化します。チャーン率はその補数であり、エンゲージメントを停止したユーザーの割合を示します。サバイバル率は、各期間までユーザーがアクティブであり続ける確率を追跡し、ユーザーの継続性を可視化します。
計算式:
- リテンション率(期間 n):
Retention Rate = (Number of users active in period n) / (Number of users in cohort at period 0); - チャーン率(期間 n):
Churn Rate = 1 - Retention Rate (at period n); - サバイバル率(期間 n):
Survival Rate = (Number of users still active at period n) / (Number of users in cohort at period 0).
これらの指標は、リテンションカーブやサバイバルプロットを用いて可視化されることが多く、急激な離脱や安定した期間などのパターンを素早く把握するのに役立ちます。複数のコホートや期間にわたってこれらの率を追跡することで、効果的なエンゲージメント戦略や改善が必要な領域を特定できます。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566import pandas as pd import numpy as np import matplotlib.pyplot as plt # Example cohort data: each row is a user, columns are activity in each month (1 = active, 0 = inactive) data = { "user_id": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "cohort_month": ["2023-01"] * 5 + ["2023-02"] * 5, "month_0": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], # All users active at signup "month_1": [1, 0, 1, 1, 0, 1, 1, 0, 1, 1], "month_2": [1, 0, 0, 1, 0, 1, 0, 0, 1, 0], "month_3": [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], } df = pd.DataFrame(data) # Calculating retention, churn, and survival rates for each cohort results = [] for cohort, group in df.groupby("cohort_month"): cohort_size = len(group) retention = [] churn = [] survival = [] users_remaining = cohort_size for month in ["month_0", "month_1", "month_2", "month_3"]: active = group[month].sum() retention_rate = active / cohort_size retention.append(retention_rate) churn.append(1 - retention_rate) survival.append(users_remaining / cohort_size) users_remaining = active # Update for next period results.append({ "cohort_month": cohort, "retention": retention, "churn": churn, "survival": survival, }) # Converting results to DataFrame for plotting metrics_df = pd.DataFrame(results) months = ["month_0", "month_1", "month_2", "month_3"] # Plot retention curves plt.figure(figsize=(10, 5)) for idx, row in metrics_df.iterrows(): plt.plot(months, row["retention"], marker="o", label=f"Cohort {row['cohort_month']}") plt.title("Cohort Retention Curves") plt.xlabel("Months Since Signup") plt.ylabel("Retention Rate") plt.legend() plt.show() # Plot survival curves plt.figure(figsize=(10, 5)) for idx, row in metrics_df.iterrows(): plt.plot(months, row["survival"], marker="o", label=f"Cohort {row['cohort_month']}") plt.title("Cohort Survival Curves") plt.xlabel("Months Since Signup") plt.ylabel("Survival Rate") plt.legend() plt.show() # Printing calculated metrics print(metrics_df[["cohort_month", "retention", "churn", "survival"]])
このコードは、Pythonのpandasおよびmatplotlibを用いて、ユーザーコホートのリテンション率、チャーン率、サバイバル率を計算し可視化する方法を示しています。
目的は、ユーザーグループ(コホート)が時間の経過とともにどのように行動するかを分析し、製品へのエンゲージメントや継続性に注目することです。
データ構造:
- データは、各行がユーザーを表すDataFrameとして構成;
- 列には、ユーザーID、コホート月(ユーザーが参加した月)、各月のアクティビティを示すバイナリ指標(1 = アクティブ、0 = 非アクティブ)が含まれます。
計算ロジック:
各コホートについて、コードは次を実行:
- 各月のリテンション率を、元のコホートサイズに対してアクティブなユーザーの割合として計算;
- チャーン率をリテンション率の補数(1 - リテンション率)として算出;
- サバイバル率を、各期間までユーザーがアクティブであり続ける確率として追跡し、各月ごとに残存ユーザー数を更新。
可視化:
- matplotlibを用いて、各コホートのリテンションカーブおよびサバイバルカーブをプロット;
- これらのプロットにより、ユーザーがどれだけ早く離脱(チャーン)するか、またはどれだけ継続(リテンション/サバイバル)するかをコホートや期間ごとに視覚的に比較でき、ユーザーエンゲージメントの傾向やパターンを明らかにします。
リテンション率およびチャーン率の解釈は、適切なビジネス判断を下すために不可欠です。高いリテンション率は、ユーザーが製品に継続的な価値を見出していることを示し、強いエンゲージメントやプロダクトマーケットフィットを示唆します。一方で、高いチャーン率は、ユーザーのニーズが満たされていない、オンボーディングの不備、競合による圧力などの問題を示している可能性があります。サバイバルカーブは、コホートがどれだけ早く減少しているかを可視化するのに役立ち、急激な減少はユーザーが興味を失うタイミングを明らかにします。
これらの指標を定期的に追跡することで、時間や異なるコホート間の傾向を特定できます。例えば、新機能のリリースとリテンション率の上昇が同時に発生した場合、その方向へのさらなる投資が有効かもしれません。一方、特定のアップデート後にチャーンが急増した場合、製品改善や追加のユーザーサポートが必要であることを示唆します。最終的に、これらの指標は仮説検証、ユーザージャーニーの最適化、リソース配分の効率化を可能にします。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください