置信区间
问题
什么是置信区间?95% 置信区间是什么意思?如何计算样本量?
答案
置信区间(Confidence Interval, CI)是用来估计总体参数的范围,比单一的点估计(如均值)更有信息量。
核心公式
其中:
- :样本均值
- :z 临界值(95% CI 时为 1.96)
- :样本标准差
- :样本量
- :标准误(Standard Error)
95% 置信区间的正确理解
- ✅ "如果重复抽样 100 次,约有 95 次构建的区间会包含真实总体均值"
- ❌ "总体均值有 95% 的概率落在这个区间内"(总体均值是固定的,不是随机的)
Python 计算
计算置信区间
import numpy as np
from scipy import stats
data = np.array([50, 55, 60, 45, 70, 65, 55, 50, 60, 55, 48, 63, 57, 52, 61])
# 方式一:scipy 直接计算
ci = stats.t.interval(
confidence=0.95,
df=len(data) - 1,
loc=np.mean(data),
scale=stats.sem(data) # 标准误 = std / sqrt(n)
)
print(f"95% 置信区间: [{ci[0]:.2f}, {ci[1]:.2f}]")
# 方式二:手动计算
mean = np.mean(data)
se = stats.sem(data)
margin = stats.t.ppf(0.975, df=len(data)-1) * se
print(f"均值: {mean:.2f}, 误差幅度: ±{margin:.2f}")
print(f"95% CI: [{mean - margin:.2f}, {mean + margin:.2f}]")
比例的置信区间
A/B 测试中常需要计算转化率的置信区间:
比例的置信区间
import numpy as np
from statsmodels.stats.proportion import proportion_confint
# 1000 人中 50 人转化,转化率 = 5%
n, x = 1000, 50
p = x / n
# 方法一:正态近似
ci = proportion_confint(x, n, alpha=0.05, method='normal')
print(f"转化率: {p:.1%}, 95% CI: [{ci[0]:.2%}, {ci[1]:.2%}]")
# 方法二:Wilson 区间(小样本更准确,推荐)
ci_wilson = proportion_confint(x, n, alpha=0.05, method='wilson')
样本量计算
"需要多少样本才能检测到指定大小的差异?"
样本量计算
from statsmodels.stats.power import TTestIndPower, NormalIndPower
# 均值差异的检验
power_analysis = TTestIndPower()
# 期望检测 0.3 个标准差的差异, α=0.05, 功效=0.8
n = power_analysis.solve_power(
effect_size=0.3,
alpha=0.05,
power=0.8,
ratio=1.0, # 两组人数比
alternative='two-sided'
)
print(f"每组需要 {int(np.ceil(n))} 个样本")
# 比例差异的样本量(A/B 测试常用)
from statsmodels.stats.proportion import proportion_effectsize
# 检测转化率从 5% 提升到 6%
effect = proportion_effectsize(0.05, 0.06)
power = NormalIndPower()
n = power.solve_power(effect_size=effect, alpha=0.05, power=0.8)
print(f"每组需要 {int(np.ceil(n))} 个样本")
影响置信区间宽度的因素
| 因素 | 变化 | 区间宽度 | 原因 |
|---|---|---|---|
| 样本量 n ↑ | 增大 | 变窄 | 更多数据 → 更精确 |
| 标准差 σ ↑ | 增大 | 变宽 | 数据更分散 → 更不确定 |
| 置信水平 ↑ | 95% → 99% | 变宽 | 要求更高的覆盖概率 |
常见面试问题
Q1: 95% 置信区间是什么意思?
答案:
- 如果以同样的方式重复抽样并构建置信区间 100 次,大约 95 次的区间会包含真实参数
- 不是"参数有 95% 概率在这个区间内"
- 区间的宽度反映了估计的精确程度
Q2: 置信区间和 p 值的关系?
答案:
- 如果 95% 置信区间不包含 0(对于差值)或不包含假设值 → p < 0.05 → 统计显著
- 置信区间比 p 值信息更丰富:既知道是否显著,还知道可能的效应范围
- 推荐报告置信区间而不仅仅是 p 值
Q3: A/B 测试需要多少样本量?
答案:取决于四个因素:
- 基线转化率:基线越低,需要的样本越多
- 最小可检测差异(MDE):想检测越小的差异,需要越多样本
- 显著性水平 α:通常 0.05
- 统计功效 1-β:通常 0.8
经验值:检测转化率从 5% 到 6% 的提升(MDE=20%),每组约需 2.5 万 样本。
Q4: 标准差和标准误的区别?
答案:
- 标准差 (SD):衡量个体数据的离散程度
- 标准误 (SE):衡量样本均值的离散程度,
- 标准误随样本量增大而减小(更多数据 → 均值更稳定)