第1章:概率论基础回顾

各位同学好,我是你们的老朋友。今天咱们开始《因果推断入门到数据分析实战》的第一课。说实话,每次讲因果推断,我都得先带大家过一遍概率论基础。为什么?因为因果推断的底层逻辑,说白了就是概率论的延伸。你想想看,我们说的「A导致B」,本质上就是在问「P(B|A)和P(B|¬A)的差异」。所以,这一章虽然基础,但绝对值得你认真看。

我个人习惯把概率论基础分成六个模块来复习:条件概率、贝叶斯定理、期望与方差、协方差与相关系数、大数定律、中心极限定理。这六个模块,就像六块积木,后面搭建因果推断模型时,你随时会用到它们。

本章知识体系总览

概率论基础 条件概率 贝叶斯定理 期望与方差 协方差与相关系数 大数定律 中心极限定理 因果推断应用:ATE、ATT、CATE估计

1. 条件概率:因果推断的起点

条件概率,记作P(A|B),意思是「在B发生的前提下,A发生的概率」。公式很简单:

P(A|B) = P(A∩B) / P(B)

我在项目中遇到过一个问题:分析用户点击广告后购买的概率。很多人直接算「点击后购买的用户数 / 点击用户数」,但忽略了用户本身就有购买倾向。这就是条件概率的典型应用——你得控制住「用户本身想买」这个条件。

小技巧: 条件概率的链式法则在因果推断中非常常用:P(A,B,C) = P(A)P(B|A)P(C|A,B)。我建议你把这个公式刻在脑子里,后面做因果图时会反复用到。

2. 贝叶斯定理:从结果反推原因

贝叶斯定理是条件概率的逆运算。说白了,就是已知结果,反推原因的概率:

P(A|B) = P(B|A) × P(A) / P(B)

嗯,这里要注意:P(A)叫「先验概率」,P(A|B)叫「后验概率」。贝叶斯定理的核心思想是——随着新证据的出现,不断更新我们对某个假设的信念。

我记得有一次做A/B测试分析,实验组和对照组的转化率差异很小,但样本量很大。用频率学派的方法,p值显著。但用贝叶斯方法一看,后验概率显示「实验组确实更好」的置信度只有65%。后来复盘发现,确实是实验设计有缺陷。所以,我个人习惯在做因果推断时,至少用贝叶斯方法验证一下。

贝叶斯定理在因果推断中的角色: 它帮助我们回答「观察到结果后,原因成立的概率有多大」。这在处理混淆变量、选择偏差时特别有用。

3. 期望与方差:数据的「中心」和「离散」

期望E[X]就是随机变量的加权平均。方差Var(X) = E[(X - E[X])²],衡量数据的波动程度。

你想想看,在因果推断中,我们经常要估计「处理组均值」和「对照组均值」的差异。这个差异的期望就是ATE(平均处理效应),而方差决定了我们估计的精度。

# 用Python计算期望和方差
import numpy as np

data = np.array([1, 2, 3, 4, 5])
mean = np.mean(data)  # 期望
variance = np.var(data, ddof=1)  # 样本方差
print(f"期望: {mean}, 方差: {variance}")

避坑指南: 我曾经在计算方差时忘了设置ddof=1(样本方差用n-1做分母),结果估计出来的置信区间偏窄,导致错误的显著性结论。记住:样本方差用n-1,总体方差用n。

4. 协方差与相关系数:变量之间的关系

协方差Cov(X,Y) = E[(X - E[X])(Y - E[Y])],衡量两个变量一起变化的趋势。相关系数ρ = Cov(X,Y) / (σX·σY),把协方差标准化到[-1, 1]之间。

在因果推断中,相关系数不等于因果关系——这个坑我踩过无数次。比如冰淇淋销量和溺水人数高度相关,但你不能说冰淇淋导致溺水。真正的原因是「夏天」这个混淆变量。

指标 公式 取值范围 含义
协方差 Cov(X,Y) (-∞, +∞) 正负方向,但量纲依赖单位
相关系数 ρ [-1, 1] 标准化后的线性相关强度

我的经验: 在做因果推断前,先算一下所有变量的相关系数矩阵。如果发现处理变量和结果变量相关系数很高,别急着下结论——先检查有没有混淆变量。

5. 大数定律:样本量越大,估计越准

大数定律说:当样本量n趋近无穷时,样本均值收敛到总体期望。说白了,你抛硬币的次数越多,正面比例越接近50%。

这个定律在因果推断中的意义是什么?它保证了当我们有足够多的样本时,处理组和对照组的均值差异能真实反映因果效应。但问题是——现实中我们永远没有「无穷样本」,所以需要置信区间和假设检验来量化不确定性。

6. 中心极限定理:正态分布无处不在

中心极限定理(CLT)说:无论原始数据是什么分布,只要样本量足够大,样本均值的分布就近似正态分布。

为什么会这样?嗯,数学上可以证明,但直观理解就是:多个独立随机变量相加,结果会趋向正态。这个定理太重要了——它让我们可以用正态分布的性质做假设检验、构造置信区间。

# 演示中心极限定理
import numpy as np
import matplotlib.pyplot as plt

# 从均匀分布中抽样
population = np.random.uniform(0, 10, 100000)
sample_means = []

for _ in range(1000):
    sample = np.random.choice(population, size=30)
    sample_means.append(np.mean(sample))

# 样本均值的分布近似正态
print(f"样本均值分布的标准差: {np.std(sample_means):.3f}")
print(f"理论标准误: {np.std(population)/np.sqrt(30):.3f}")

CLT在因果推断中的应用: 当我们估计ATE时,ATE估计量的分布近似正态,所以我们可以用Z检验或t检验来判断ATE是否显著不为零。

小结:这些基础怎么用?

好了,六个模块过了一遍。你可能会问:这些和因果推断到底有什么关系?

  • 条件概率 → 定义因果效应(P(Y|do(X)) vs P(Y))
  • 贝叶斯定理 → 处理混淆变量、做后验推断
  • 期望与方差 → 估计ATE、计算置信区间
  • 协方差与相关系数 → 识别变量关系、检测混淆
  • 大数定律 → 保证估计的一致性
  • 中心极限定理 → 做假设检验、构造置信区间

我个人习惯在开始任何因果推断项目前,先花10分钟回顾这些基础。别嫌麻烦,后面你会感谢自己的。

专注资料整理