业务分析产品分析师

描述在存在自我选择的内生性和邀请用户转换延迟的情况下,如何隔离推荐计划对长期LTV的因果效应。

用 Hintsage AI 助手通过面试

问题回答

评估推荐计划的关键问题是自我选择的内生性:高度参与的用户的LTV本身就较高,并且更频繁地邀请朋友,从而创造出渠道高效的错觉。为了进行正确的评估,我们采用因果推断的方法:倾向得分匹配(PSM)消除观察特征的偏差,或使用工具变量(IV),如果有随机化的工具(例如,随机展示横幅广告)。

为了考虑从发送邀请到邀请人转化之间的时间滞后,我们使用生存分析(Kaplan-Meier模型或Cox比例风险)而不是简单的队列分析。这允许我们正确处理截断数据(右截断),当部分用户尚未完成生命周期时。通过对保留曲线进行积累并折现,或使用BTYD(Pareto/NBD)方法来预测未来交易,从而计算LTV。

生活中的情况

**背景:**在一个外卖配送的移动应用中,启动了一个双向奖金的推荐计划。一个季度后,Tableau的报告显示,激活推荐链接的用户的LTV比平台平均水平高40%。产品经理要求扩大预算,但分析团队怀疑这一差异是由于超级用户的基本特征,而不是计划本身。

问题:无法分离出真实的增量效应与参与度的相关性。直接使用简单的SQL查询来比较组的结果由于混杂因素(订单频率、在产品中时间)会产生偏差的评估。在没有正确评估的情况下,企业面临过高支付一个边际效应为负或接近零的渠道的风险。

解决方案1:通过SQL直接比较队列

我们通过BigQuery聚合比较了“邀请者”(处理组)和“未邀请者”(对照组)的队列,计算了第90天的ARPU和保留率。

优点: 立即实施,易于向利益相关者可视化,资源需求低。

缺点: 存在自我选择偏见(self-selection bias)和幸存者偏差。计划留在产品中的用户更频繁地使用推荐链接。结果被夸大,无法做出决策。

解决方案2:在历史数据上进行倾向得分匹配

我们在Pythonscikit-learn)中构建了一个逻辑回归模型来评估倾向得分——基于预处理特征(账户年龄、订单历史、平均消费)的参与概率。然后使用最近邻进行1:1匹配,仅在可比子群中比较LTV。

优点: 消除了观察到的变量(observable confounders)的偏差,能在没有实验的情况下处理回顾性数据。能够快速获得ATT(已处理的平均处理效应)的评估。

缺点: 未能消除未观察到的特征(unobserved confounders),如外向性或社会资本。对于数据不平衡的情况(发邀请者较少),可能会出现共同支持的问题(common support),导致部分样本被排除,从而降低效能。

解决方案3:工具变量和生存分析

发现了一个自然实验:50%的用户随机看到了主屏幕上的推荐计划横幅(工具Z),这影响参与的概率(X),但不直接影响LTV(Y)。我们通过2SLS(双阶段最小二乘法)在Pythonlinearmodels库中评估效果,得到了LATE(局部平均处理效应)。为了考虑滞后,我们应用了生存分析:构建了第一个订单到达的风险模型(hazard function)并根据每个时刻的转化概率进行了LTV的校正。

优点: IV方法消除了观察到和未观察到的混杂因素,提供了因果评估。生存分析能够正确处理不完整数据并能够建模时间动态。

缺点: 需要有效的工具(相关性和外生性),而这很难证明。IV估计的统计效能降低(宽置信区间)。LATE的解释与ATE(仅适用于“合规者”的平均效应)不同。

选择的解决方案:

我们选择了混合方法:使用横幅的随机化来进行IV估计参与的净效果,然后应用非线性模型生存分析Cox带有时间变化的协变量)来计算预期的LTV,考虑转化时间。这使得我们能够将计划的效果与自我选择的效果区分开。

结果:

真实的增量效应对“合规者”组的LTV增加了12%,而不是原始报告中的40%。滞后分析表明,85%的转化发生在点击后的前14天,这使得评分效率的评估周期从90天缩短到30天。企业重新审视了单元经济学,将用户获取成本(CAC)降低了18%,放弃了对留存时间的长时间等待。

候选人常常忽视的内容

问题1:如何在存在邀请者之间的网络效应的推荐计划中检验SUTVA假设(单位之间无干预)?

如果社交圈中的邀请密度影响转化概率(例如,过度饱和或病毒效应),SUTVA将会被破坏。为了验证这一点,我们使用聚类:将用户按地理聚类或通过图分析NetworkX)划分社交图进行分割。

然后应用差异中的差异,比较高和低推荐链接渗透率的聚类。如果高密度聚类的效应显著不同(因过度饱和而降低或因社会证明而提高),那么SUTVA就被破坏了,需要使用带有组间相互作用的模型(空间模型)或限制分析在隔离的子组中进行。

问题2:为什么在存在右截断的数据情况下,无法使用普通的线性回归(OLS)来预测LTV,而部分用户尚未流失?

OLS忽略了截断(right-censoring)这一事实,将当前LTV视为最终值,这导致了对“年轻”用户的评估系统性低估。我们相反使用生存分析来评估保留曲线( S(t) ),然后对其进行积分以获得预期的生命周期。

作为替代,我们使用回购的概率模型(BTYD),例如Pareto/NBDGamma-Gamma,在Pythonlifetimes库中实现。这些模型通过购买之间的频率和时间的概率分布考虑尚未显现的交易,从而为活跃用户提供未来LTV的无偏估计。

问题3:在评估效果时,如何区分增量邀请(仅因计划而发生的邀请)与有机邀请(即使没有刺激也会发生的邀请)?

我们使用主层划分框架,将人群分为四个组(层):始终参与者(Always-takers,始终会邀请),合规者(Compliers,仅因计划邀请),从不参与者和违抗者(Defiers)。通过使用IV分析的二元工具(例如,看到/没有看到横幅)来评估LATE——确切针对合规者的效果。

为了更详细的分层,我们应用因果机器学习的方法(EconMLCausalMLPython中),如因果森林元学习者(S-Learner,T-Learner)来评估不同子组的条件平均处理效应(CATE)。这使得我们能够了解对于哪类用户(例如,低/高消费),该计划生成增量邀请,而对哪类用户仅是固定的有机分享。