如何构建“干预-对照”双重差分模型?
解读
面试官问的是“怎么把双重差分(DID)落地到用户运营场景”,而不是背公式。他要确认三件事:
- 你能否把业务动作抽象成“干预”(如发券、Push、会员升级);
- 你能否找到合适的对照组,排除季节、大盘、竞品等噪音;
- 你能否用数据证明干预带来的净效应,并指导下一步预算分配。
回答必须体现“数据合规+业务可解释+结果可迭代”三大原则,否则会被追问“你们怎么保证平行趋势”“样本量不够怎么办”。
知识点
- 平行趋势检验:干预前≥4期核心指标(如DAU、GMV)走势需一致,可用事件研究法画折线图。
- 干预组选取:优先用**“准实验”**思路——系统灰度、渠道溢出、用户分层抽签,避免“愿意参加活动的用户本身就活跃”的选择偏差。
- 对照组构造:
- PSM±卡尺匹配:用近30天消费频次、末次访问距今天数、品类偏好等20+特征,卡尺0.02以内一对一匹配;
- Cohort分层:若全量匹配不足,可先做**“同类目同城市同消费层级”**三层分层,再在各层内PSM。
- 双重差分方程:
Y_it = α + β·Treat_i + γ·Post_t + δ·(Treat_i×Post_t) + λX_it + μ_i + τ_t + ε_it
其中δ是核心系数,代表净效应;μ_i为用户固定效应,τ_t为时间固定效应,X_it为协变量(如节假日、发券强度)。 - 显著性与经济意义并重:δ在5%显著即可,但ROI≥1.5才是业务可落地阈值;若δ不显著,需做分组DID(iOS/安卓、新老客)找敏感人群。
- 合规红线:中国《个人信息保护法》要求**“最小可用”**原则,匹配特征须脱敏,用户ID要哈希,报告对外只给聚合值。
答案
以“618期间给高潜流失用户发满200减20优惠券”为例,分五步落地:
- 定义干预与窗口:
- 干预组:5月25日系统灰度推送券,用户无法主动领取;
- 对照组:同批次高潜流失用户未收到任何券(技术侧写死尾号奇偶分流)。
- 平行趋势验证:
取5月4日-5月24日共3周支付金额,两组t检验p=0.83, visually 重叠,通过平行趋势。 - 匹配与扩样:
用PSM卡尺0.01匹配后,干预组n=4.2万,对照组n=4.1万;样本充足,检验功效>90%。 - 跑DID:
因变量选“支付金额+登录天数”,Stata代码:
xtreg gmv i.treat##i.post treat##c.covariates i.date, fe cluster(user_id)
结果δ=+18.6元,p<0.01,ROI=2.3,满足业务阈值。 - 结果落地与迭代:
- 把δ按人群拆解,发现**“近90天未购但近7天有浏览”**子人群δ高达+32元,于是618第二波追加300万预算专投该人群;
- 同步监控**“券倒卖”**风险,发现异常订单占比<0.4%,合规通过。
拓展思考
- 多期干预:若券分三波发放,可用事件研究法画动态δ_t,看效应衰减,决定**“补券”节奏**。
- 空间DID:区域差异化定价时,把城市按GDP三分位,用**“相邻城市对”**做空间对照,排除物流、天气差异。
- 生存分析+DID:对召回用户,可把“是否回流30天”当生存函数,用Cox+DID看券对存活率的净提升,避免只看短期GMV。
- 负向效应监控:若δ显著但次日留存下降,需用双重机器学习方法( causal forest )找“被券伤害”的用户,及时降权或补偿,防止品牌忠诚度反噬。