【实战】如何做归因分析?——以断货率变化为例详解三种常用方法(贡献度分析,因素分解分析,变量影响分析,差分法)
一、引言:什么是归因分析?
在电商、零售、供应链等业务场景中,我们经常需要回答这样的问题:
某个指标发生了变化,是哪些因素导致的?每个因素的贡献度是多少?
这类问题在数据分析中被称为 归因分析(Attribution Analysis) 或 因素分解分析(Factor Decomposition Analysis)。它广泛应用于销售增长、用户活跃、库存周转、断货率等指标变动的解释中。
归因分析 也被称为:
- 贡献度分析(Contribution Analysis)
- 因素分解分析(Factor Decomposition Analysis)
- 变量影响分析(Impact Analysis / Driver Analysis)
- 在经济学中也称为 增长核算(Growth Accounting)
本文将以一个实际案例为基础,介绍三种常用的归因分析方法:
- 差分法(Differential Method)
- 固定变量法 / 替换法(Counterfactual Replacement Method)
- Shapley 值法(Shapley Value Method)
并通过 断货率变化 的具体数据,展示每种方法的实现逻辑和计算过程。
二、案例背景与数据说明
1. 指标定义
断货率 = 断货天数总和 ÷ (Asin数量 × 时间周期)
时间周期设为30天。
2. 数据概览
指标 | 初始值(20250501) | 最终值(20250518) | 变化量 |
---|---|---|---|
Asin数量 A | 8155 | 8253 | +98 |
断货天数 D | 29430 | 23950 | -5480 |
断货率 R | 12.03% | 9.67% | -2.36% |
目标:分析 Asin 数量增加 和 断货天数减少 各自对断货率下降的贡献。
三、方法一:差分法(Differential Method)
1. 原理简介
差分法基于微分思想,适用于连续可导的目标函数。假设目标函数为:
R = D A × 30 R = \frac{D}{A \times 30} R=A×30D
其全微分为:
Δ
R
≈
∂
R
∂
D
⋅
Δ
D
+
∂
R
∂
A
⋅
Δ
A
\Delta R \approx \frac{\partial R}{\partial D} \cdot \Delta D + \frac{\partial R}{\partial A} \cdot \Delta A
ΔR≈∂D∂R⋅ΔD+∂A∂R⋅ΔA
其中偏导数分别为:
- ∂ R ∂ D = 1 A × 30 \frac{\partial R}{\partial D} = \frac{1}{A \times 30} ∂D∂R=A×301
- ∂ R ∂ A = − D A 2 × 30 \frac{\partial R}{\partial A} = -\frac{D}{A^2 \times 30} ∂A∂R=−A2×30D
2. 计算步骤
(1) 偏导数计算
- ∂ R ∂ D = 1 8155 × 30 ≈ 0.000004087 \frac{\partial R}{\partial D} = \frac{1}{8155 \times 30} \approx 0.000004087 ∂D∂R=8155×301≈0.000004087
- ∂ R ∂ A = − 29430 ( 8155 ) 2 × 30 ≈ − 0.00001475 \frac{\partial R}{\partial A} = -\frac{29430}{(8155)^2 \times 30} \approx -0.00001475 ∂A∂R=−(8155)2×3029430≈−0.00001475
(2) 变化量代入
- Δ D = − 5480 \Delta D = -5480 ΔD=−5480
- Δ A = + 98 \Delta A = +98 ΔA=+98
(3) 贡献计算
-
断货天数贡献:
Δ R D ≈ 0.000004087 × ( − 5480 ) ≈ − 2.24 % \Delta R_D \approx 0.000004087 \times (-5480) \approx -2.24\% ΔRD≈0.000004087×(−5480)≈−2.24% -
Asin数量贡献:
Δ R A ≈ − 0.00001475 × 98 ≈ − 0.1446 % \Delta R_A \approx -0.00001475 \times 98 \approx -0.1446\% ΔRA≈−0.00001475×98≈−0.1446%
(4) 总贡献验证
Δ R total ≈ − 2.24 % − 0.1446 % = − 2.3846 % \Delta R_{\text{total}} \approx -2.24\% - 0.1446\% = -2.3846\% ΔRtotal≈−2.24%−0.1446%=−2.3846%
与实际变化 -2.36% 接近,误差来源于线性近似。
3. 小结
- 断货天数减少 贡献约 94.7%
- Asin数量增加 贡献约 5.3%
四、方法二:固定变量法 / 替换法(Counterfactual Replacement Method)
1. 原理简介
该方法通过保持一个变量不变,只改变另一个变量来观察结果的变化,从而衡量每个变量的独立影响。
2. 计算步骤
(1) 假设 Asin 不变(保持 A₁ = 8155)
R hypothetical1 = 23950 8155 × 30 ≈ 9.79 % R_{\text{hypothetical1}} = \frac{23950}{8155 \times 30} \approx 9.79\% Rhypothetical1=8155×3023950≈9.79%
Δ R D = 9.79 % − 12.03 % = − 2.24 % \Delta R_D = 9.79\% - 12.03\% = -2.24\% ΔRD=9.79%−12.03%=−2.24%
(2) 假设断货天数不变(保持 D₂ = 23950)
R hypothetical2 = 23950 8253 × 30 ≈ 9.67 % R_{\text{hypothetical2}} = \frac{23950}{8253 \times 30} \approx 9.67\% Rhypothetical2=8253×3023950≈9.67%
Δ R A = 9.67 % − 9.79 % = − 0.12 % \Delta R_A = 9.67\% - 9.79\% = -0.12\% ΔRA=9.67%−9.79%=−0.12%
3. 小结
- 断货天数减少 贡献约 94.9%
- Asin数量增加 贡献约 5.1%
五、方法三:Shapley 值法(Shapley Value Method)
1. 原理简介
Shapley 值来自博弈论,用于公平分配多个参与者对整体成果的贡献。在数据分析中,可用于评估不同变量对目标指标变化的“公平”贡献。
2. 计算步骤
(1) 定义四个状态
状态 | A | D | R |
---|---|---|---|
Base | 8155 | 29430 | 12.03% |
A only | 8253 | 29430 | 11.91% |
D only | 8155 | 23950 | 9.79% |
Final | 8253 | 23950 | 9.67% |
(2) 枚举所有排列顺序并计算边际贡献
排列顺序 | A 贡献 | D 贡献 |
---|---|---|
A → D | -0.12% | -2.24% |
D → A | -0.12% | -2.24% |
(3) 计算 Shapley 值(平均值)
变量 | Shapley 值 |
---|---|
Asin数量 A | -0.12% |
断货天数 D | -2.24% |
3. 小结
- 断货天数减少 贡献约 94.9%
- Asin数量增加 贡献约 5.1%
六、总结对比
方法 | 断货天数贡献 | Asin数量贡献 | 是否考虑交互作用 |
---|---|---|---|
差分法 | -2.24% | -0.1446% | 否 |
固定变量法 | -2.24% | -0.12% | 否 |
Shapley 值法 | -2.24% | -0.12% | 是 |
所有方法得出的结论一致:断货天数的减少是断货率下降的主要原因。
七、应用场景
- 销售额变化归因(价格 vs 销量)
- 用户留存率变化(新客减少 or 老客流失)
- 库存周转率提升(出库增加 or 库存积压减少)
- 广告转化率波动(点击率 or 转化率)