如何理解置信区间

郝鸿涛 / 2024-10-08

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.stats import t

英文维基百科上的置信区间 (confidence interval) 词条 对此概念解释非常详细。

我们依然拿天狼星人举例子。SpaceX 公司登陆火星之后发现火星地下上全是天狼星人。他们搜集了全部的在火星上居住天狼星人的信息之后,对其进行抽样。随机抽取了 100 个天狼星人,然后测量他们的智商 ($X_1, X_2, X_3, ... X_n$)。记样本均值为 $\bar{X}$、样本方差为 $S^2$

我们现在最迫切需要知道的是:天狼星人的智商大体是什么样。

注意,我们现在不是要去比较天狼星人和地球人智商有没有显著差异,而是想知道天狼星人的智商大概是什么样。你当然可以直接抛给我一个数:$\bar{X}$,说这是这 100 个天狼星人的平均智商。但是,问题是,我想知道母体的数据啊。

怎么办?

我们把所有天狼星人智商这一母体的均值记为 $\mu$,方差记为 $\sigma^2$

假设上面的抽样进行无数次,也就是每次随机抽取 100 个天狼星人,记录其样本均值和方差,并且每次算出

$$T = \frac{\bar{X} - \mu}{\frac{S}{\sqrt{n}}}$$

其中 $n = 100$

你会说,等等,$\mu$ 我们并不知道啊,$T$ 根本没法算。

确实,一个具体的 $T$ 在我们不知道母体均值 $\mu$ 的情况下确实没办法计算。但是,回顾一下我们对于 t 分布的讲解 ,你会发现,不管母体如何,每次从母体中随机抽取 100 人,计算 $T$ ,重复无数次,这些 $T$ 的分布全部都是 $T \sim t_{99}$

## params
df = 99
alpha = 0.05
x = np.linspace(-4, 4, 1000)

# calculate PDF for t-distribution
y = t.pdf(x, df=df)

# critical values for the given alpha level
q_value_upper = t.ppf(1 - alpha/2, df) 
q_value_lower = t.ppf(alpha/2, df)

# Plot the t-distribution PDF
plt.figure(figsize=(12, 6))
plt.plot(x, y, color='steelblue', lw=2, 
    label=rf'$t$-distribution with $df={df}$')  

# Fill the area between the critical values for the two-tailed region
plt.fill_between(x, y, 
                 where=np.logical_and(x <= q_value_upper, x >= q_value_lower), 
                 color='orange', 
                 alpha = 0.5, 
                 label=rf'Critical Region ($1 - \alpha = {1 - alpha:.2f}$)')
plt.axvline(q_value_lower, color="purple", 
            linestyle='--', 
            label=f'Lower Critical Value ({q_value_lower:.2f})')
plt.axvline(q_value_upper, color="red", 
            linestyle='--', 
            label=f'Upper Critical Value ({q_value_upper:.2f})')
plt.axhline(0, color = "black")
plt.xlabel(r'$T$', fontsize = 14)
plt.ylabel(r'$P(T)$', fontsize = 14)
plt.title(rf'T-Distribution with {df} Degrees of Freedom', fontsize = 16)
plt.grid(True, linestyle='--', alpha = 0.6)
plt.legend(fontsize = 12)
plt.show()

png

置信区间的构成 #

我们把 $t_{99}$$97.5\%$ 百分位数 (percentile) 记为 $c$,也就是上图中红线所对应的 $T = 1.98$。其所代表的含义是所有的 $T$ 中,落在红线以及红线往右这个区域的 $T$ 占比为 $97.5\%$。也可以理解为,随机一个 $T$ 落在红线以及红线往右这个区域的概率是 $97.5\%$

因为 $t$ 分布是对称的,所以一个随机的 $T$ 落在 $[-c, c]$ 这个区间 (也就是上图的黄色区域所对应的 $T$ 值区间) 的概率是 $95\%$,我们可以表示为:

$$P_T (-c \le T \le c) = 0.95$$

代入上面的 $T$ 计算公式可得到:

$$P (-c \le \frac{\bar{X} - \mu}{\frac{S}{\sqrt{n}}} \le c) = 0.95$$

所以

$$P (-c \cdot \frac{S}{\sqrt{n}} \le \bar{X} - \mu \le c \cdot \frac{S}{\sqrt{n}}) = 0.95$$

所以

$$P (-c \cdot \frac{S}{\sqrt{n}} - \bar{X} \le - \mu \le c \cdot \frac{S}{\sqrt{n}} - \bar{X}) = 0.95$$

所以

$$P_{\mu} (\bar{X} - \frac{c \cdot S}{\sqrt{n}} \le \mu \le \bar{X} + \frac{c \cdot S}{\sqrt{n}})$$

我们把

$$\left[\bar{X} - \frac{c \cdot S}{\sqrt{n}}, \bar{X} + \frac{c \cdot S}{\sqrt{n}} \right]$$

称为母体均值 $\mu$$95\%$ 置信区间。

我们也可以这样记:$\mu$$1 - \alpha$ 置信区间为:

$$P_{\mu} (\bar{X} - \frac{S}{\sqrt{n}} \cdot t_{n-1, \frac{\alpha}{2}} \le \mu \le \bar{X} + \frac{S}{\sqrt{n}} \cdot t_{n-1, 1- \frac{\alpha}{2}})$$

置信区间的解读 #

也许很多人将

$$P_{\mu} (\bar{X} - \frac{c \cdot S}{\sqrt{n}} \le \mu \le \bar{X} + \frac{c \cdot S}{\sqrt{n}})$$

或者

$$\left[\bar{X} - \frac{c \cdot S}{\sqrt{n}}, \bar{X} + \frac{c \cdot S}{\sqrt{n}} \right]$$

错误地理解为:

母体均值 $\mu$ 落在以上区间的概率是 95%。

这一解读之所以错误是因为虽然 $\mu$ 未知,但却是一个具体的值 (「常量」),而不是一个变量。当一个样本被观测到之后,$c, S, n, \bar{X}$ 这些全都是常量,以上的区间也是一个常量。所以 「$\mu$ 在这个区间」并不存在概率一说。它要么在,要么不在。

既然

$$P_{\mu} (\bar{X} - \frac{c \cdot S}{\sqrt{n}} \le \mu \le \bar{X} + \frac{c \cdot S}{\sqrt{n}})$$

的确是一个概率,但是 $\mu$ 是一个常量,那变量只能是这个区间了。所以置信区间正确的理解为:

从一个分布为 $\mathcal N \sim(\mu, \sigma^2)$ 的母体中随机一个大小为 $n$ 的样本,算出 $\bar{X}$$S$,记 $b$$t_{n-1}$ 这一分布的 $\frac{\alpha}{2}$ 百分位数 (percentile),$c$$t_{n-1}$ 这一分布的 $1 - \frac{\alpha}{2}$ 百分位数 (percentile),并计算出这样一个区间

$$\left[\bar{X} + \frac{b \cdot S}{\sqrt{n}}, \bar{X} + \frac{c \cdot S}{\sqrt{n}} \right]$$

上面这个过程我们重复无数次,得到无数个这样的区间。那这些区间中,有 $\left( 100 (1 - \alpha) \right) \%$ 包含了母体均值 $\mu$

上面这个公式我换成了 $b$$c$,而不是 $-c$$c$ 是因为不是所有的分布都对称,比如卡方分布

置信区间和假设检验的关系 #

我们随机抽取了 100 个天狼星人,算出了样本均值$\bar{X}$、样本标准差 $S$,并由此构造了一个 $95\%$的置信区间。

假如上帝将天狼星人智商这一母体的均值 $\mu$ 告诉我们了,而且我们看到这一均值就在这个置信区间之内。那么,我们也可以知道,用这个样本数据算出的 $T$,一定落在上图的黄色区域。

为什么呢?

因为

假如上帝将天狼星人智商这一母体的均值 $\mu$ 告诉我们了,而且我们看到这一均值就在这个置信区间之内

意味着

$$\bar{X} - \frac{c \cdot S}{\sqrt{n}} \le \mu \le \bar{X} + \frac{c \cdot S}{\sqrt{n}}$$

成立。所以

$$-c \cdot \frac{S}{\sqrt{n}} \le \bar{X} - \mu \le c \cdot \frac{S}{\sqrt{n}}$$

成立。所以

$$-c \le T = \frac{\bar{X} - \mu}{\frac{S}{\sqrt{n}}} \le c$$

成立。

所以「用这个样本数据算出的 $T$,一定落在上图的黄色区域」。

模拟 #

我比较懒,有一个现成的模拟置信区间构成过程的网站:https://www.rossmanchance.com/applets/2021/confsim/ConfSim.html 。我目前就懒得重新弄了。

其中 Describe process 的选择:

Statistics: Means

Distribution: Normal

Method: t

Population mean: 3

Population SD: 10.0

Sample size: 100

Number of intervals: 100

其他不用动,然后点击 Sample 这个按钮。

#统计学

最后一次修改于 2024-11-14