news 2026/7/6 22:26:00

未随机分流的因果评估(DID-Python版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
未随机分流的因果评估(DID-Python版)
项目背景

为提升低客单价用户(Low AOV Users)的下单转化意愿,平台于 2024-05-01 在广州试点下调免运费门槛:由原先“订单满 ¥99 包邮”调整为“订单满 ¥79 包邮”。该策略旨在降低用户心理门槛,提升订单量,但同时可能带来订单结构下沉(AOV 下降)与单均履约成本上升的风险。

由于该政策属于区域性试点而非全量随机实验,处理组(广州)与对照组(其他城市)在用户画像、消费习惯及物流成本结构上存在系统性差异,简单对比无法识别政策的净效应。

因此,本项目采用 双重差分法(DID),在满足平行趋势假设的前提下,剥离时间趋势与地区固定效应的影响,从订单量、客单价(AOV)、订单结构、单均履约成本及净利润等维度,系统评估免运费门槛下调的真实因果效应,为后续全国推广或差异化包邮策略提供量化决策依据。

分析思路-DID设计

实验组-广州,对照组:深圳、佛山

关键假设

平行趋势:政策前,广州与深佛的下单行为趋势一致

无同时干扰:同期无其他针对广州的专项补贴或运力调整

评估指标

指标

业务含义

下单转化率

下单 UV / 访问 UV

客单价

订单金额均值

复购率

当月下单 ≥2 次用户占比

单均物流成本

履约成本 / 订单数

SQL取数:城市*月份面板数据
with user_event as ( -- 计算uv select city_name, date_format(event_date,'%Y-%m') as ym, count(distinct user_id) as uv from ods_user_event where event_date between '2026-04-01' and '2026-05-31' and event_id = 'visit' group by city_name,date_format(event_date,'%Y-%m') ), user_order as ( -- 订单统计 select city_name, date_format(order_date,'%Y-%m') as ym, count(user_id) as order_users, count(distinct order_id) as order_cnt, sum(pay_amount) as gmv, sum(logistics_cost) as logistics_cost -- 物流成本 from dwd_order_detail where order_date between '2026-04-01' and '2026-05-31' and city_name in ('广州','深圳','佛山') group by city_name,date_format(order_date,'%Y-%m') ), user_repurchase as ( -- 复购统计 select city_name, ym, count(distinct case when user_order_cnt>=2 then user_id end) as repurchase_users from ( select user_id, city_name, date_format(order_date,'%Y-%m') as ym, count(distinct order_id) as user_order_cnt from dwd_order_detail where order_date between '2026-04-01' and '2026-05-31' and city_name in ('广州','深圳','佛山') group by user_id )x group by city_name,ym ) select city_name, ym, order_users/uv as conversion_rate, -- 下单转化率 gmv/order_cnt as avg_order_value, -- 客单价 repurchase_users/order_users as repurchase_rate, -- 复购率 logistics_cost/order_cnt as logistics_cost_per_order -- 每单物流成本 from user_event e left join user_order o on e.city_name=o.city_name and e.ym=o.ym left join user_repurchase r on e.city_name=r.city_name and e.ym=r.ym

city_name

ym

conversion_rate

avg_order_value

repurchase_rate

logistics_cost_per_order

广州

2024-04

0.082

112.3

0.186

6.8

广州

2024-05

0.091

108.5

0.201

7.4

深圳

2024-04

0.081

118.6

0.192

6.5

深圳

2024-05

0.083

117.9

0.195

6.6

佛山

2024-04

0.079

109.4

0.178

6.3

佛山

2024-05

0.080

109.1

0.181

6.4

Python:DID 回归 + 平行趋势检验
import pandas as pd import statsmodels.formula.api as smf df = pd.read_csv("city_month_metrics.csv") # 构造变量 df["treat"] = df["city_name"].apply(lambda x: 1 if x == "广州" else 0) df["post"] = df["ym"].apply(lambda x: 1 if x == "2024-05" else 0) df["did"] = df["treat"] * df["post"] # DID 回归 for y in ["conversion_rate", "avg_order_value", "repurchase_rate", "logistics_cost_per_order"]: m = smf.ols(f"{y} ~ treat + post + did", data=df).fit(cov_type="HC1") print(f"\n--- {y} ---") print(m.summary()) # 平行检验 # 构造相对月份 df["rel_month"] = df["ym"].map({"2024-04": -1, "2024-05": 0}) df = pd.get_dummies(df, columns=["rel_month"], drop_first=True) # 政策前系数应不显著 model = smf.ols( "conversion_rate ~ treat*rel_month_-1 + treat*rel_month_0", data=df ).fit(cov_type="HC1") print(model.summary())

指标

实验 Δ

对照 Δ

DID

下单转化率+0.009+0.001+0.008

客单价

-3.8

-0.5

-3.3​

复购率

+1.5

+0.3

+1.2​

物流成本

+0.6

+0.1

+0.5​

项目结论

下单转化率显著提升 0.8个百分点(+9.8%)

复购率提升 1.2个百分点(+6.4%)

客单价下降 ¥3.3(用户更多购买低客单价商品)

单均物流成本上升 ¥0.5(+7.7%)

业务解释

降低包邮门槛有效降低了用户心理阻力,尤其利好低客单价用户

增量订单主要来自 “凑单型”小额订单

物流成本上升幅度可控,ROI 仍为正

决策建议

建议在珠三角其他城市推广 ¥79 包邮策略​

建议配套措施:对高物流成本区域动态定价,引导用户参与“多件优惠”以提升客单价

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 22:25:03

SQL 实战:从0到1构建图书借阅系统,完成5个核心业务查询

SQL 实战:从0到1构建图书借阅系统,完成5个核心业务查询 1. 系统架构设计与数据准备 图书借阅系统的核心在于构建合理的数据库结构并填充真实可用的测试数据。我们先从基础表结构开始,逐步构建完整的业务模型。 1.1 数据库表设计 图书借阅系…

作者头像 李华
网站建设 2026/7/6 22:21:59

Sidecar模式加速单体应用开发:构建、调试与发布优化实战

1. 项目概述:这不是一辆摩托车,而是一台“侧斗加速器”“Beyond Motorcycles: How Sidecars Boost Dev Speed”——这个标题乍看像一篇摩托车文化杂谈,实则是个极具迷惑性的技术隐喻。它根本不是讲哈雷戴维森或边三轮越野,而是在软…

作者头像 李华
网站建设 2026/7/6 22:21:49

KMeans 聚类评估指标详解:从原理到 sklearn 3 种方法实现

KMeans 聚类评估指标:从数学原理到工程实践的三维透视1. 聚类评估的本质与挑战当我们将小麦种子数据集输入KMeans算法时,那些看似神秘的评估指标背后,其实隐藏着数据科学家必须理解的数学语言。不同于监督学习有明确的标签作为评判标准&#…

作者头像 李华
网站建设 2026/7/6 22:20:32

RW-RL数据集架构解析:失败数据如何重塑机器人强化学习

RW-RL数据集架构解析:失败数据如何重塑机器人强化学习2026年6月29日,均普智能机器人创新中心联合博登智能、上海交通大学MINT实验室正式开源RW-RL-Dataset,这是全球首个面向真实机器人强化学习的大规模数据集。业内专业数据平台对此次开源事件…

作者头像 李华
网站建设 2026/7/6 22:20:04

GE/西门子/联影CT:4大品牌水模体模规格与240-450mm FOV适配指南

GE/西门子/联影CT:4大品牌水模体模规格与240-450mm FOV适配指南 在医疗影像诊断领域,CT设备的精准度直接关系到临床诊断的可靠性。而水模和体模作为CT设备校准的核心工具,其规格选择与设备FOV(Field of View,视野&…

作者头像 李华
网站建设 2026/7/6 22:19:52

TongWeb 8.0 重部署 3 大陷阱:从 ‘instance stopped‘ 到 Metaspace 溢出的完整链路

TongWeb 8.0 重部署全链路故障诊断手册:从幽灵线程到元数据泄漏的工程实践当企业级Java应用在TongWeb应用服务器上经历多次热部署时,运维团队往往会遭遇一系列看似孤立却实际存在因果链的异常现象。本文将揭示从线程未释放、类加载器泄漏到Metaspace溢出…

作者头像 李华