第一章:因果推断导论
在数据驱动决策的时代,我们经常面临这样的问题:用户留存率的提升是因为产品改进还是季节性因素?广告投放真的带来了销售增长还是只是巧合?新算法的部署是否真正改善了系统性能?这些问题的核心不是"发生了什么",而是"为什么发生"以及"如果我们改变某些因素会发生什么"。因果推断为我们提供了一套严格的数学框架来回答这些根本性问题。本章将介绍因果推断的基本概念,澄清相关性与因果性的本质区别,并通过实际案例展示因果思维的重要性。
1.1 相关性与因果性的本质区别
相关性:观察到的共同变化
相关性描述的是两个或多个变量之间的统计关联。当我们说变量 $X$ 和 $Y$ 相关时,意味着知道 $X$ 的值能帮助我们预测 $Y$ 的值。数学上,最常用的是皮尔逊相关系数:
$$\rho_{X,Y} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} = \frac{E[(X-\mu_X)(Y-\mu_Y)]}{\sigma_X \sigma_Y}$$ 其中 $\text{Cov}(X,Y)$ 是协方差,$\sigma_X$ 和 $\sigma_Y$ 分别是 $X$ 和 $Y$ 的标准差。
相关性的关键特征:
- 对称性:$\text{Cor}(X,Y) = \text{Cor}(Y,X)$
- 纯粹的统计度量:不涉及时间顺序或生成机制
- 可能由多种原因造成:直接因果、反向因果、共同原因或纯粹巧合
因果性:干预后的变化
因果关系描述的是一个变量的改变直接导致另一个变量改变的关系。用符号表示,"$X$ 导致 $Y$"(记作 $X \rightarrow Y$)意味着:如果我们主动改变 $X$,$Y$ 会随之改变。
因果关系的核心特征:
- 非对称性:$X \rightarrow Y$ 不等同于 $Y \rightarrow X$
- 涉及干预:需要考虑"如果我们改变X"的反事实情况
- 具有方向性:有明确的原因和结果
经典例子:冰淇淋销量与溺水事故
考虑这个著名的例子:数据显示冰淇淋销量与溺水事故数量高度正相关。
观察到的相关性:
冰淇淋销量 ↑ ←→ 溺水事故 ↑
相关系数 r ≈ 0.75
如果将相关性误认为因果性,我们可能得出荒谬的结论:
- 吃冰淇淋导致溺水(错误)
- 溺水导致人们买冰淇淋(错误)
真实的因果结构:
温度(夏季)
↙ ↘
冰淇淋销量 游泳人数
↓
溺水事故
温度是共同原因(混杂因素):夏季高温导致更多人买冰淇淋,同时也导致更多人游泳,进而增加溺水风险。
区分相关性与因果性的实用方法
- 时间顺序检验:原因必须发生在结果之前
- 干预思维实验:如果人为改变X,Y是否会改变?
- 机制分析:是否存在合理的因果机制?
- 混杂因素排查:是否存在共同影响X和Y的第三变量?
1.2 为什么需要因果推断
决策制定的核心需求
在实际应用中,我们关心的往往不是"what is"而是"what if":
预测性问题(相关性足够):
- 明天的股价是多少?
- 这个用户会不会点击广告?
- 系统负载会达到多少?
因果性问题(需要因果推断):
- 如果我们提高价格10%,销量会下降多少?
- 如果实施新的推荐算法,用户留存率会提升吗?
- 如果增加服务器,响应时间会改善多少?
AI系统的可解释性危机
现代深度学习模型在预测任务上表现卓越,但它们主要捕获的是相关性而非因果性。这导致:
- 分布偏移脆弱性:当数据分布改变时,基于相关性的模型可能完全失效
- 虚假关联学习:模型可能学到数据集中的偶然相关性
- 缺乏可解释性:无法回答"为什么"的问题
例子:图像识别模型将哈士奇误认为狼,因为训练集中狼的图片背景都有雪,模型学到了"雪→狼"的虚假关联。
公平性与伦理考量
在算法决策系统中,区分相关性和因果性对确保公平性至关重要:
观察:某地区的邮编与贷款违约率相关
错误做法:直接使用邮编作为信贷评分特征
正确做法:识别真正的因果因素(如收入、就业状况)
使用相关性而非因果性可能导致:
- 强化历史偏见
- 产生歧视性决策
- 违反公平性原则
科学理解与知识积累
因果推断帮助我们:
- 建立可泛化的知识:因果关系比相关性更稳定
- 设计有效干预:知道因果机制才能设计改进方案
- 进行反事实推理:回答"如果当初..."的问题
1.3 因果推断的历史发展
早期探索(1920s-1960s)
Fisher的随机化实验(1920s) Ronald Fisher在农业试验中引入随机化,奠定了因果推断的实验基础。他的核心洞察:随机分配处理可以打破处理与混杂因素的关联。
Neyman-Rubin因果模型雏形(1923) Jerzy Neyman提出了潜在结果(potential outcomes)的概念,虽然当时并未被广泛认识。
现代框架形成(1970s-1990s)
Rubin因果模型(1974) Donald Rubin重新发现并系统化了潜在结果框架,提出了著名的"Rubin Causal Model"(RCM)。核心概念:
- 每个单位有多个潜在结果
- 因果效应定义为潜在结果的比较
- 基本问题:我们只能观察到一个潜在结果
Pearl的因果图理论(1988-1995) Judea Pearl发展了基于有向无环图(DAG)的因果推理框架:
- 图模型表示因果关系
- d-分离准则判断条件独立
- do算子区分观察与干预
计算时代的发展(2000s-至今)
机器学习与因果推断的融合
- 因果森林(Causal Forests)
- 深度学习的因果表示学习
- 自动化因果发现算法
大规模实验平台
- 科技公司的A/B测试基础设施
- 在线实验的网络效应处理
- 持续实验与因果效应监测
跨学科影响
因果推断已经深刻影响了多个领域:
经济学:工具变量、断点回归、双重差分
流行病学:因果图、中介分析
计算机科学:因果发现、强化学习
社会科学:自然实验、准实验设计
1.4 三个层级的因果问题
Pearl提出了因果推理的三个层级,这个层级结构揭示了不同类型问题的本质差异,也说明了为什么某些问题比其他问题更难回答。
第一层级:关联(Association)
核心问题:观察到什么?
这一层级涉及的是纯粹的统计问题,可以通过观察数据直接回答。
数学表示:$P(Y|X)$ - 给定观察到X,Y的概率是多少?
典型问题:
- 购买了商品A的用户,有多大概率会购买商品B?
- 具有特征X的患者,疾病Y的发病率是多少?
- 当股票A上涨时,股票B上涨的概率是多少?
示例:在电商平台上
观察:购买了键盘的用户中,60%也购买了鼠标
表达:P(购买鼠标|购买键盘) = 0.6
能力与局限:
- ✓ 可以进行预测
- ✓ 可以发现模式
- ✗ 不能指导干预
- ✗ 不能解释机制
第二层级:干预(Intervention)
核心问题:如果我们做了什么会怎样?
这一层级涉及主动改变系统,需要因果知识才能回答。
数学表示:$P(Y|do(X))$ - 如果我们主动设置X,Y的概率是多少?
注意:$P(Y|do(X)) \neq P(Y|X)$
典型问题:
- 如果我们强制推荐商品B,销量会增加多少?
- 如果给患者用药X,治愈率会提高多少?
- 如果央行加息,通胀率会下降多少?
示例:推荐系统干预
观察:P(点击|看到推荐) = 0.3
干预:P(点击|do(推荐)) = 0.2
差异原因:观察数据中的推荐是算法根据用户兴趣生成的(有选择偏差)
从关联到干预的跃升:
要从第一层级上升到第二层级,需要:
- 随机实验数据,或
- 观察数据 + 因果假设(如无混杂假设)
第三层级:反事实(Counterfactual)
核心问题:如果当初不同会怎样?
这是最高层级的因果问题,涉及对已发生事件的假想替代。
数学表示:$P(Y_x|X=x', Y=y')$ - 已知实际上X=x'且Y=y',如果X是x,Y会是什么?
典型问题:
- 如果这个流失的用户当初看到了优惠券,他会留下来吗?
- 如果这个治愈的患者没有用药,他会自愈吗?
- 如果算法没有崩溃,今天的收入会是多少?
示例:个性化医疗
事实:患者接受了治疗A并康复了
反事实问题:如果他接受治疗B,会康复得更快吗?
挑战:同一个患者不能同时接受两种治疗
反事实推理的独特性:
反事实问题最难回答,因为它们涉及:
- 个体层面的推理(不是群体平均)
- 已经发生的特定事件
- 逻辑上不可能观察到的结果
层级之间的关系
第三层级:反事实
↑
[需要结构因果模型]
↑
第二层级:干预
↑
[需要因果假设或实验]
↑
第一层级:关联
↑
[只需要数据]
重要性质:
- 层级不可逆:高层级的信息可以回答低层级的问题,反之不行
- 信息需求递增:每上升一个层级需要额外的假设或信息
- 实用性递增:高层级的答案对决策更有价值
实践中的应用
A/B测试(第二层级)
# 随机分配用户到控制组和处理组
if random() < 0.5:
show_new_feature() # do(feature=1)
else:
show_old_feature() # do(feature=0)
# 因果效应 = E[Y|do(feature=1)] - E[Y|do(feature=0)]
用户流失分析(第三层级)
已流失用户:没有看到挽留优惠
反事实问题:如果看到了,会留下来吗?
需要:用户特征 + 因果模型 → 个性化反事实预测
1.5 行业案例:Netflix推荐算法中的辛普森悖论
案例背景
Netflix的推荐团队发现了一个令人困惑的现象:在分析新推荐算法的效果时,总体数据显示新算法降低了用户观看时长,但在每个用户群体内部,新算法都提升了观看时长。这就是著名的辛普森悖论(Simpson's Paradox)在实际业务中的体现。
数据观察
假设Netflix将用户分为两类:
- 重度用户(Heavy Users):每月观看>50小时
- 轻度用户(Light Users):每月观看<50小时
总体数据:
旧算法:平均观看时长 = 35小时/月
新算法:平均观看时长 = 33小时/月
结论?新算法更差(-5.7%)
分组数据:
重度用户:
旧算法:65小时/月 → 新算法:68小时/月 (+4.6%)
轻度用户:
旧算法:20小时/月 → 新算法:22小时/月 (+10%)
结论?新算法在两组都更好!
悖论的解释
关键在于用户组成的变化:
旧算法 新算法
重度用户:40% (65h) 重度用户:30% (68h)
轻度用户:60% (20h) 轻度用户:70% (22h)
----------------------------------------
总体:0.4×65 + 0.6×20 总体:0.3×68 + 0.7×22
= 26 + 12 = 38h = 20.4 + 15.4 = 35.8h
因果机制: 新算法更精准地识别用户兴趣,导致:
- 一些边缘重度用户被重新分类为轻度用户
- 算法对两类用户都提供了更好的推荐
- 但组成比例的变化导致总体均值下降
因果图分析
算法类型 → 推荐质量 → 观看时长
↓ ↑
用户分类 ←───────────→ 用户偏好
混杂因素:用户偏好既影响用户分类,也影响观看时长。
正确的评估方法
-
分层分析 在每个用户层级内部评估算法效果,而不是看总体均值。
-
因果效应估计 使用固定的用户分类(基于历史数据),评估: $$\tau = E[Y(新算法)|分类] - E[Y(旧算法)|分类]$$
-
A/B测试设计
# 正确的实验设计
def run_experiment(users):
# 先分类,再随机分配
heavy_users = [u for u in users if u.watch_time > 50]
light_users = [u for u in users if u.watch_time <= 50]
# 在各组内随机分配
for group in [heavy_users, light_users]:
random.shuffle(group)
half = len(group) // 2
assign_new_algo(group[:half])
assign_old_algo(group[half:])
业务启示
- 避免简单的总体指标:总体均值可能误导决策
- 理解用户异质性:不同用户群体可能有相反的反应
- 考虑动态效应:算法可能改变用户行为模式
- 多维度评估: - 用户留存率 - 内容多样性 - 长期vs短期效应
推广到其他场景
辛普森悖论在许多业务场景中出现:
电商定价策略
总体:提价导致销量下降
分组:在每个客户群体中,提价都增加了销量
原因:价格敏感客户流失,改变了客户组成
在线教育效果
总体:新教学方法降低了平均分
分组:对优等生和后进生都有提升
原因:中等学生的比例变化
本章小结
本章介绍了因果推断的基础概念和核心思想。我们学习了:
关键概念
-
相关性vs因果性 - 相关性:$P(Y|X)$ - 观察到的统计关联 - 因果性:$P(Y|do(X))$ - 干预后的效果 - 根本区别:对称性vs非对称性,预测vs干预
-
因果推断的必要性 - 决策需要因果知识而非仅仅相关性 - AI系统的可解释性和鲁棒性要求 - 公平性和伦理决策的基础
-
Pearl因果层级 - 第一层:关联 - $P(Y|X)$ - 第二层:干预 - $P(Y|do(X))$ - 第三层:反事实 - $P(Y_x|X=x', Y=y')$
核心公式
- 相关系数:$\rho_{X,Y} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y}$
- 因果效应:$\tau = E[Y|do(X=1)] - E[Y|do(X=0)]$
- 反事实查询:$P(Y_{x}|X=x', Y=y')$
重要洞察
- 相关性不等于因果性,混杂因素可能造成虚假相关
- 从数据到因果结论需要额外的假设或实验设计
- 辛普森悖论警示我们注意群体异质性和组成效应
- 因果推断是从"what is"到"what if"的关键桥梁
通过本章的学习,你应该能够:
- 识别相关性与因果性的区别
- 理解不同层级因果问题的本质
- 在实际问题中识别潜在的因果推断陷阱
- 认识到因果思维在数据分析中的重要性
练习题
基础题
题目1:相关性判断 某研究发现,咖啡消费量与程序员的代码产出量呈正相关(r=0.6)。以下哪些可能是合理的解释? a) 咖啡提高了编程效率 b) 高产出的压力导致程序员喝更多咖啡 c) 加班时间既增加了咖啡消费也增加了代码量 d) 纯属巧合
Hint: 考虑所有可能的因果方向和混杂因素。
参考答案
所有选项都可能合理:
- a) 正向因果:咖啡→清醒→产出
- b) 反向因果:压力→咖啡消费
- c) 混杂因素:加班时间同时影响两者
- d) 虚假相关:样本量小或选择偏差
关键是认识到相关性本身不能确定具体的因果机制。需要进一步的实验或因果假设才能区分。
题目2:因果层级识别 将以下问题分类到Pearl的三个因果层级:
- "购买了iPhone的用户中,多少比例也购买了AirPods?"
- "如果我们给所有用户推送优惠券,转化率会提升多少?"
- "这个已经流失的用户,如果当初给他发送挽留邮件,他会留下来吗?"
- "高学历人群的平均收入是多少?"
Hint: 关注是观察、干预还是反事实。
参考答案
- 第一层级(关联):P(AirPods|iPhone) - 纯粹的条件概率
- 第二层级(干预):P(转化|do(优惠券)) - 主动干预的效果
- 第三层级(反事实):已知用户流失,假设不同的过去
- 第一层级(关联):E[收入|学历=高] - 观察性统计
注意:即使涉及"如果",问题2是面向未来的干预(可实验验证),而问题3是关于已发生事件的反事实(无法实验验证)。
题目3:辛普森悖论识别 某公司的数据显示:
- 男性平均工资:8万/年,录用率:60%
- 女性平均工资:7万/年,录用率:40%
进一步分析发现:
- 技术岗:男性工资10万(录用率70%),女性工资9.5万(录用率75%)
- 非技术岗:男性工资6万(录用率50%),女性工资5.8万(录用率55%)
这是否构成辛普森悖论?如果是,解释其机制。
Hint: 检查分组数据与总体数据的方向是否一致。
参考答案
是辛普森悖论。
工资方面:
- 总体:男性>女性
- 分组:两个岗位类型中,男性都>女性(方向一致,不是悖论)
录用率方面:
- 总体:男性(60%)>女性(40%)
- 技术岗:女性(75%)>男性(70%)
- 非技术岗:女性(55%)>男性(50%)
- 分组中女性录用率都更高(方向相反,是悖论!)
机制:女性更多申请竞争激烈的技术岗(基础录用率低),导致总体录用率降低。这是典型的组成效应。
挑战题
题目4:因果推断设计 某电商平台想评估"包邮"政策对销售额的因果效应。历史数据显示,包邮商品的销售额平均高30%。但产品经理怀疑这可能是因为热门商品更可能设置包邮。请设计一个方案来识别包邮的真实因果效应。
Hint: 考虑如何打破包邮设置与商品属性的关联。
参考答案
方案设计:
-
随机实验(最佳) - 随机选择部分商品强制包邮/不包邮 - 时间:2-4周 - 估计:ATE = E[销售|do(包邮)] - E[销售|do(不包邮)]
-
准实验设计 - 利用包邮门槛(如"满99包邮") - 使用断点回归,比较98元和100元商品的销售差异 - 假设:门槛附近的商品相似
-
观察性研究+因果假设 - 收集混杂因素:类目、价格、评分、历史销量 - 使用倾向得分匹配或逆概率加权 - 关键假设:无未观测混杂
-
工具变量方法 - 寻找只影响包邮设置但不直接影响销售的变量 - 如:仓库距离(影响运费成本→包邮决策)
每种方法的权衡:
- 实验:因果效应最可信,但有机会成本
- 准实验:利用现有变异,但只识别局部效应
- 观察性:成本低,但依赖强假设
题目5:反事实推理 某算法工程师发现,使用了新特征的模型准确率提升了3%。但上线后发现,这个特征在生产环境经常缺失。现在需要回答:如果当初没有使用这个特征,模型的表现会怎样?这个问题属于哪个因果层级?如何回答?
Hint: 区分"重新训练"和"反事实"的区别。
参考答案
问题分析:
- 属于第三层级(反事实):对已经发生的事件假设不同的过去
- 不是简单的"不用这个特征重新训练"(那是干预问题)
回答方法:
- 结构因果模型方法
准确率 = f(特征集, 训练数据, 算法参数, 随机种子)
反事实:保持其他所有条件完全相同,仅改变特征集
-
实践近似方法 - 保存原始训练环境(数据分割、随机种子等) - 移除特征后重新训练 - 比较:反事实效应 ≈ 原模型表现 - 无特征模型表现
-
特征重要性分析 - SHAP值:量化特征对预测的平均贡献 - 排列重要性:随机打乱特征值,观察性能下降 - 留一法:移除特征后的性能变化
关键洞察:
- 真正的反事实无法完美回答(训练的随机性)
- 实践中使用多种方法估计,给出置信区间
- 这个案例说明了特征工程中的因果思考重要性
题目6:混杂因素识别 一项研究发现,使用代码自动补全工具的程序员bug率更高。研究者据此建议减少自动补全的使用。请分析可能的混杂因素,并说明为什么这个建议可能是错误的。
Hint: 考虑谁更可能使用自动补全工具。
参考答案
可能的混杂因素:
-
经验水平 - 新手程序员更依赖自动补全 - 新手本身bug率就更高 - 因果图:经验 → {自动补全使用, bug率}
-
代码复杂度 - 复杂项目中更常用自动补全(API多、不熟悉) - 复杂代码本身更容易出bug - 因果图:复杂度 → {自动补全使用, bug率}
-
时间压力 - deadline紧张时更多使用自动补全提速 - 赶工的代码质量通常较差 - 因果图:时间压力 → {自动补全使用, bug率}
-
编程语言 - 某些语言(如Java)自动补全更完善 - 不同语言的bug率本身不同 - 因果图:语言类型 → {自动补全使用, bug率}
为什么建议可能错误:
- 没有控制混杂因素的相关性≠因果性
- 自动补全可能实际上减少了bug(相对于同等条件下不使用)
- 正确的评估需要: - 随机实验:随机分配是否可用自动补全 - 或匹配分析:比较相似背景程序员使用/不使用的效果
政策启示:基于相关性的决策可能适得其反。
常见陷阱与错误
1. 相关即因果谬误
错误表现:看到两个变量相关就假设存在因果关系。
典型案例:
观察:使用昂贵开发工具的团队产出更高
错误结论:买昂贵工具能提高产出
真相:高效团队更可能获得预算买好工具
避免方法:
- 始终考虑反向因果的可能性
- 寻找潜在的混杂因素
- 用"相关"而非"导致"描述观察结果
2. 选择偏差陷阱
错误表现:基于有偏样本得出因果结论。
典型案例:
观察:在线课程完成者的就业率很高
错误结论:在线课程提高就业能力
真相:能坚持完成课程的人本身就更有毅力
避免方法:
- 考虑样本的代表性
- 关注流失和缺失数据
- 使用意向性分析(Intention-to-treat)
3. 混淆预测与因果
错误表现:将预测模型的特征重要性解释为因果效应。
典型案例:
# 机器学习模型显示:
feature_importance = {
'age': 0.3,
'education': 0.2,
'location': 0.5
}
# 错误:location对收入的因果效应最大
# 正确:location对预测收入最有用(可能只是代理变量)
避免方法:
- 区分"预测有用"和"因果相关"
- 理解特征可能是代理变量
- 使用因果推断方法而非纯预测模型
4. 忽视时间顺序
错误表现:在因果推断中忽略时间先后关系。
典型案例:
数据:抑郁症患者失业率高
错误:失业导致抑郁
可能:抑郁导致失业(反向因果)
可能:双向因果关系
避免方法:
- 使用纵向数据而非横截面数据
- 明确时间顺序
- 考虑双向因果的可能
5. 平均效应谬误
错误表现:将群体平均效应应用到个体。
典型案例:
研究:药物平均降低血压10mmHg
错误:每个患者都会降低10mmHg
真相:效果因人而异,有人可能无效或反效果
避免方法:
- 报告效应的分布而非仅均值
- 进行异质性分析
- 使用个体化因果推断方法
6. 中介变量误用
错误表现:控制了因果路径上的中介变量。
典型案例:
研究:教育对收入的影响
错误:控制"职业"作为协变量
问题:职业是教育影响收入的中介
后果:低估教育的总效应
因果图:
教育 → 职业 → 收入
↘ ↗
技能
避免方法:
- 画出因果图
- 区分混杂因素和中介变量
- 明确要估计的是直接效应还是总效应
7. 过度依赖P值
错误表现:将统计显著性等同于因果关系或实际重要性。
典型案例:
结果:相关系数 r=0.01, p<0.001(n=100万)
错误:存在重要的因果关系
真相:大样本下微小相关也会显著
避免方法:
- 报告效应大小,不仅是P值
- 考虑实际意义vs统计显著性
- 使用置信区间
8. 生态学谬误
错误表现:将群体层面的关系推广到个体。
典型案例:
观察:富裕地区的自杀率更高
错误:富人更容易自杀
真相:地区内可能是穷人自杀率更高(组内异质性)
避免方法:
- 使用多层次模型
- 分别分析群体和个体效应
- 谨慎推广结论的层级
最佳实践检查清单
数据分析开始前
- [ ] 明确因果问题
- 区分是预测问题还是因果问题
- 明确是哪个层级的因果问题(关联/干预/反事实)
-
定义清楚处理变量和结果变量
-
[ ] 识别潜在混杂
- 列出所有可能影响处理和结果的变量
- 画出初步的因果图
-
考虑未观测的混杂因素
-
[ ] 评估数据质量
- 检查样本代表性
- 识别选择偏差来源
- 评估测量误差
分析过程中
- [ ] 验证因果假设
- 检验时间顺序是否合理
- 验证无混杂假设(如可能)
-
进行敏感性分析
-
[ ] 选择合适方法
- 优先考虑实验方法
- 如使用观察数据,明确所需假设
-
考虑多种识别策略
-
[ ] 处理异质性
- 不仅报告平均效应
- 进行分组分析
- 检查辛普森悖论
结果解释时
- [ ] 准确表述结论
- 使用"因果效应"而非"相关性"(如果适用)
- 明确效应的适用范围
-
承认研究局限性
-
[ ] 提供完整信息
- 报告效应大小和不确定性
- 说明识别假设
-
讨论威胁因果推断的因素
-
[ ] 考虑实践意义
- 评估效应的实际重要性
- 讨论政策含义
- 提供可操作的建议
决策应用时
- [ ] 评估外部效度
- 考虑结果的可推广性
- 识别环境依赖性
-
预期可能的异质性效应
-
[ ] 设计干预方案
- 基于因果机制设计
- 考虑意外后果
-
计划效果评估
-
[ ] 持续监测改进
- 设置因果效应监测指标
- 收集反馈数据
- 迭代优化策略
团队协作时
- [ ] 沟通因果概念
- 向非技术人员解释因果vs相关
- 使用直观的例子和图表
-
强调假设的重要性
-
[ ] 建立因果思维文化
- 在A/B测试中嵌入因果考虑
- 定期review因果假设
-
分享因果推断最佳实践
-
[ ] 文档化因果分析
- 记录因果图和假设
- 保存分析代码和数据
- 创建可重复的分析流程
记住:好的因果推断始于清晰的因果思考。在急于使用复杂方法之前,先确保你理解了问题的因果结构。