如何更好地计算流失率

2020-10-20 06:33:27

根据安德森·霍洛维茨(Andreessen Horowitz)的说法,这一数字是排名前16位的指标之一 来衡量一家SaaS初创公司。嗯,对不起安德森,对不起霍洛维茨,但这是不对的。

这是违反直觉的,但这是一个统计事实:这个数字实际上并没有告诉你关于流失的任何有用的信息, 但实际上与您订阅的年限有关。 在大多数情况下,它会自己倒下,而且,荒谬的是,防止它倒下的唯一方法就是拥有非常 高增长。因此,只有当你的生意做得非常好时,这个数字才会看起来很糟糕, 而对其进行优化将直接适得其反。 这里的错误是一个简单的统计错误,很容易犯,幸运的是也很容易理解和避免。

如果您经营的是基于订阅的SaaS业务,您可能非常关心您的 顾客。我们是一家JavaScript异常跟踪服务,这项业务的健康完全取决于有多少 我们带来的客户,以及我们能留住他们多久。从表面上看,流失率似乎是变化的天然指标。 在客户生命周期中。让我们深入研究一下为什么这不是真的。

计算流失率时,假设客户在任何时候离开的可能性相等,无论他们离开的时间有多长。 已经订阅给你了。这几乎肯定不是真的。事实上,正如我们将看到的,随着时间的推移,有一个恒定的流失概率 本质上意味着你永远不会有长期的客户。

如果您每月的客户流失率为c,则客户订阅n个月的概率为(1-c)^n,这意味着客户寿命服从几何分布。如果客户可以随时退出订阅,我们有连续时间,应该使用连续时间模拟,指数分布。

问题是,您的客户在任何时候取消订阅的可能性都不一样。最有可能的情况是,最初几天的客户流失率比之后几天要高。如果您的产品有免费试用期,情况就更是如此。

如果客户订阅的时间越长,流失概率越低,您可以将其建模为c/(t+1),其中 T是时间步长(例如,客户已经订阅的天数),c是某个常数。 在本例中,这意味着客户生命周期来自Lomax分发。 这相当于从0开始的帕累托分布。

如果您怀疑用户订阅的时间越长,每天的流失概率可能会越高,Lomax分发将不会 为你工作。取而代之的是,你可以寻求瑞典统计学家瓦洛迪·威布尔(Waloddi Weibull)的帮助。 威布尔分布既可以表示递减,也可以表示递减, 持平,而且客户退出的可能性不断增加。这使得它成为建模客户生命周期的流行选择。

让我们以错误的方式衡量,看看它会把我们带向何方。 假设客户的生命周期来自Lomax分销。我们还可以说,你有一家经营状况很糟糕的公司, 每天新注册的人数正在以每天一人的速度下降。这跟流失率相比会怎么样?我们可以模拟一下,然后找出答案。

请记住,在下面的每个示例中,我们都模拟来自相同客户生命周期分布的生命周期, 而且这种分布不会随着时间的推移而改变。

这显然是一个垂死的行业,但流失率曲线看起来很棒! 每天的流失率正在稳步下降, 即使我们知道我们的模型中客户的生命周期没有变化。

那么这是怎么回事呢?流失率的急剧下降是因为我们没有新客户。 因为我们没有增长,所以我们的客户份额更大,已经存在很长一段时间了,这 这意味着他们不太可能流失,这意味着我们每天的流失数据比其他情况下下降得更多。 尽管基本的单个客户生命周期没有变化,但人口级别上的这种变化还是会发生。

让我们将这种情况转变为您的业务正在经历疯狂增长的场景。我们将使客户的生命周期保持完全相同, 但要改变这一点,使每天新注册的人数呈超线性增长。

即使客户生命周期与以前没有变化,这里的流失率图也是平坦的。投资者会皱起眉头说 我们没有采取任何措施来改善我们如何更好地留住我们的客户。实际上,图表看起来糟糕的唯一原因与 要处理流失,这是因为我们在获得新的签约方面做得非常好。

如果你在这个指标的基础上指导自己和你的团队,你就是在奖励自己抑制了成长。 为自己的成长而惩罚自己。 显然,这是100%适得其反的。

正如您从前面的段落中可能已经猜到的那样,我们应该对客户生命周期的分布进行建模, 我们应该以一种统计上合理的方式来做这件事。Lomax分布和Weibull分布是较好的模型选择。

这变得棘手的部分是,我们将有两种类型的数据:已退出的客户和客户 仍在订阅的网站。只有我们的前客户给了我们一生的时间与之共事。为我们仍在订阅的 客户,我们只知道他们的订阅已经持续到现在,我们不知道它还能持续多久 通向未来。用统计术语来说,我们有所谓的右审查数据。

在Weibull或Lomax(或任何其他发行版本)之间进行选择没有简单的答案。威布尔更灵活 因为它可以表示增长、缩小和持平的流失概率。然而,这种表现力将会 如果您的数据基本上类似于Lomax,则不会对您有所帮助。首先,也是最重要的,根据您的选择 这取决于你对你所从事的业务的了解。如果你有任何关于流失概率的先验知识 将会发展,您的分发选择将以此为基础。还有各种各样的 拟合优度测试可以用来 通知本决定。事实是,任何分配的选择在某种程度上都是错误的,所以您需要做出 根据你的数据和你的先验知识,判断什么最适合你的情况。 在本文的其余部分中,我们将只适用于这两个发行版,而忽略以下问题 最适合我们的。

我们的模型的概率分布由它们的参数定义。 我们希望找到最符合数据的参数。首先,我们想要猜测一下这些参数, 并有办法判断我们的猜测有多准确。幸运的是,我们有一种统计上可靠的方法来知道猜测有多准确。 给出了我们已有的数据。特别幸运的是,当我们有被审查的数据时,这也是正确的。 这个函数告诉我们,给定我们已有的数据,我们参数的可能性有多大,这个函数叫做似然函数。 我们通过查找概率密度函数得到它 未删失数据点的值和生存函数值 对于每个被审查的数据点,并将所有这些值相乘。

接下来,我们记得计算机不擅长将接近于零的数字相乘,所以我们取而代之的是每个数字的对数,并将它们相加。 我们可以在不改变函数最大值的情况下做到这一点。 我们将使用NumPy和统计数据 SciPy中的优化包来计算这一点。 下面是Python代码。

进口numpy as np 将scipy导入为sp 将scipy.stats作为统计信息导入 #有效订阅时长 已删除=np.array([133.65,10.26,0.24,3.87,23.84,25.91,41.83,137.805,0.985,100.39,14.9,18.72,29.65,13.11,26.71,22.64,179.985,9.637.61,144.53,18.855,80.865,88.56,21.955,73.945,10.365]) #订阅完成时长 未审查=np.array([55.31,47.03,0.44,190.41,80.07,0.77,23.93,151.72,33.09,10.9,140.41,209.49,21.38,40.18,99.26,167.52,16.75,109.77,18.07,90.23,233.68,27.09,42.35,109.06,181.86,24.5,66.08,19.25]) #记录被审查数据的可能性 Def log_lisilience_weibull(参数): 形状、比例=参数 Val=stats.weibull_min.logpdf(未审查,形状,loc=0,scale=scale).sum()+stats.weibull_min.logsf(已审查,形状,loc=0,scale=scale).sum() Return-val#符号被翻转,这样我们就可以使用最小化符号 定义LOG_LIKESS_LOMAX(参数): 形状、比例=参数 Val=stats.lomax.logpdf(未审查,形状,loc=0,比例=比例).sum()+stats.lomax.logsf(已审查,形状,Loc=0,Scale=Scale).sum() 退货-VAL。

接下来,我们将使用函数最大值器来查找使函数L最大化的参数。 (实际上我们只有函数最小化,所以我们将等价地最小化-L。)。

RES_WEIBL=sp.Optimize.Minimize(LOG_LIKISION_WEIBUL,[1,1],Bound=((0.001,1000000),(0.001,1000000)) RES_LOMAX=sp.Optimize.Minimize(LOG_LIKISION_LOMAX,[1,1],Bound=((0.001,1000000),(0.001,1000000))。

我们刚才所做的被称为最大似然估计(MLE)。有关此估计器在删失数据下的更全面推导,请参阅NCSU张道文提供的PDF文档。

现在我们有了分布参数的估计,我们可以看看分布的平均值和中值。

打印(";威布尔形状";,res_weibl.x[0],";,scale=";,res_weibl.x[1]) 打印(";威布尔平均值";,stats.weibull_min.means(res_weibl.x[0],scale=res_weibl.x[1])) 打印(";Weibull Medium";,stats.weibull_min.Medium(res_weibl.x[0],scale=res_weibl.x[1])) 打印(";Lomax形状";,res_lomax.x[0],";,scale=";,res_lomax.x[1]) 打印(";Lomax means";,stats.lomax.means(res_lomax.x[0],scale=res_lomax.x[1])) 打印(";Lomax Medium";,stats.lomax.Medium(res_lomax.x[0],scale=res_lomax.x[1]))。

威布尔形状=1.0935179324818296,比例=122.3601743694174 威布尔平均数118.29884582009447 威布尔中位数87.51413316428012 洛马克斯形状=101.65488165157542,比例=12575.372370928875 洛马克斯平均数124.93554375692996 洛马克斯中位数86.03983407302042。

平均值告诉我们客户的平均寿命(以天为单位)。将其乘以客户每天的收入,你就得到了客户的终身价值。

中位数告诉我们典型的客户生命周期。这比平均值小,因为平均值主要是不太可能的、非常大的值。 正如我们将看到的,这些罕见的、非常长期的客户的存在对您的业务前景非常重要。

让我们来看看两家企业的客户生存情况。每个产品的客户生命周期都来自Lomax发行商。 这两个发行版的客户寿命中值相同,但其中一个的平均寿命比另一个长。 换句话说,一家比另一家拥有更多的长期客户。

遵循橙色线的公司在开始时客户流失率较高,但在接近尾声时客户流失率较低。 这对收入的影响是巨大的。如果你沿着橙色线而不是蓝色线走,你赚的钱是原来的2.5倍。 请记住,典型的客户(按中位数计算)在任何一家公司停留的时间都是一样长的, 但它是罕见的长期客户 这极大地改变了终身客户价值,有利于橙色公司。

让我们模拟一下这两项业务的每月经常性收入(MRR)。我们每个月会给他们每人10个新的注册。 最终的区别是巨大的。

这两家公司在一开始有相似的轨迹,但最终更罕见的长期客户的影响显现出来。 橙色公司最终的MRR将是蓝色公司的2.5倍。

丰厚的尾巴会给你带来极大比例的罕见事件。在我们的情况下,很少有客户的生命周期能持续很长时间。 正如我们已经看到的,客户生命周期分布中的厚尾会对你的长期收入产生巨大的影响。 然而,准确估计这些结果被证明是困难的或不可能的。

当涉及到这些分布时,大多数人的直觉都失败了。 这是一个例子,归功于N·N·塔勒布(N.N.Taleb)。让我们假设我们正在处理的是一个80/20的帕累托分布(或模拟的洛马克斯(1.13)分布)。 让我们假设我们重新计算样本平均值。 高斯需要30个观测值才能将平均值稳定到给定的水平,这需要 10 11来自帕累托的观察,以降低样本误差 同样的数量。 因此,如果您有Pareto 80/20分布的客户生命周期, 在样本平均寿命准确之前,您需要1000亿客户。祝好运! (请注意,这是样本平均值,即将样本寿命相加并除以计数。 它不直接适用于我们在上面所做的最大似然估计器。)。

虽然您的客户生命周期可能不会遵循这种极端分布,但它可以说明,如果尾部 已经足够胖了,如果没有胖尾巴的话,要做出正确的估计可能比我们习惯的要难得多。

另一个更不可避免的误判来源是我们看不到未来的事实。 考虑一下这一点:假设你的客户中有5%的人订阅了10年。 你肯定不会注意到这一点,直到你的企业已经存在了10年。 在成立1年的企业中,你永远不会看到有2年历史的客户。

用经过审查的数据进行估计在这方面有一点帮助,但我们仍然会从根本上看不到这一点。 长期客户的订阅时长。对于关注客户生命周期的企业而言, 这可能是一个乐观的来源,因为不确定性主要是朝着更长寿命的方向发展。

我们刚刚计算的数字可能是订阅业务中最核心的, 然而,似乎大多数人从来没有想过如何正确计算它们。 请随意使用本文中的代码来计算您企业的客户生命周期。