跳轉到

5.1 隨機樣本與抽樣分布#

本節目標#

  • 認識統計量(如樣本平均 \(\bar{X}\) 、樣本變異數 \(S^2\) )本身也是隨機變數
  • 理解「抽樣分布」:統計量的分布,而不是資料的分布
  • 用模擬親眼看到 \(\bar{X}\) 的分布比 \(X\) 窄(標準差是 \(\sigma/\sqrt{n}\) )
  • 記下兩條重要陳述: \(\bar{X} \perp S^2\) 、 \((n-1)S^2/\sigma^2 \sim \chi^2_{n-1}\) (驗證留待 5.4)

問題:手上只有一份樣本,憑什麼下結論?#

第 4 章之前,我們談的都是「母體」的機率分布:已知 \(X \sim N(\mu, \sigma^2)\) ,問 \(P(X > 60)\) 是多少。

統計學的方向相反:手上有資料,想回推母體。工廠抽 30 顆螺絲量直徑,想回答「整批的平均直徑是多少?規格之外的比例是多少?」

做法是計算統計量(statistic)——樣本的函數:

$$ \bar{X} = \frac{X_1 + \cdots + X_n}{n}, \qquad S^2 = \frac{1}{n-1}\sum_{i=1}^{n}(X_i - \bar{X})^2

$$ 關鍵一步(也是初學者最容易忽略的一步):樣本是隨機抽的,再抽一次數字就不同,所以 \(\bar{X}\) 也是隨機變數。它有自己的分布——這個分布就叫抽樣分布(sampling distribution)。

抽樣分布 = 統計量的分布。 我們對 \(\bar{X}\) 問的問題不是「它等於多少」(它每份樣本都不同),而是「它平均來說在哪裡?散開的程度有多大?」


理論:為什麼 \(\bar{X}\) 的分布比 \(X\) 窄#

設 \(X_1, \ldots, X_n\) 獨立、與母體同分布(i.i.d.),平均 \(\mu\) 、變異數 \(\sigma^2\) 。用期望值的線性與獨立性可以算出:

$$ E[\bar{X}] = \mu, \qquad \mathrm{Var}(\bar{X}) = \mathrm{Var}!\left(\frac{1}{n}\sum_i X_i\right) = \frac{1}{n^2}\cdot n\sigma^2 = \frac{\sigma^2}{n}

$$ 所以 \(\bar{X}\) 的標準差(統計學稱標準誤,standard error)是:

$$ \mathrm{SE}(\bar{X}) = \frac{\sigma}{\sqrt{n}}

$$ 直覺:平均是把 \(n\) 個獨立的雜訊互相抵消之後的結果。 \(n\) 越大,抵消越徹底, \(\bar{X}\) 就越緊貼 \(\mu\) 。注意縮小速度是 \(\sqrt{n}\) 而不是 \(n\) ——想把誤差減半,樣本要抽四倍。

母體是常態時還有精確結果:若 \(X \sim N(\mu, \sigma^2)\) ,則

$$ \bar{X} \sim N!\left(\mu, \frac{\sigma^2}{n}\right)

$$ 另外兩條在母體為常態時成立的陳述,本章先記下、5.4 節用程式驗證:

  • \(\bar{X}\) 與 \(S^2\) 互相獨立(這是常態母體非常特別的性質,一般分布不成立);
  • \(\dfrac{(n-1)S^2}{\sigma^2} \sim \chi^2_{n-1}\) (自由度 \(n-1\) 的卡方分配)。

這兩條正是第 6 章 \(t\) 檢定與信賴區間公式背後的引擎。


動手:把 \(\bar{X}\) 的分布「模擬」出來#

抽樣分布是概念上的東西,但電腦可以讓它現形:重複抽 10,000 組樣本,每組算一個 \(\bar{X}\) ,畫這 10,000 個值的直方圖。

import rstatistics as r

def ascii_hist(x, nb=24, width=60):
    lo, hi = min(x), max(x)
    step = (hi - lo) / nb
    counts = [0] * nb
    for v in x:
        counts[min(nb - 1, int((v - lo) / step))] += 1
    mx = max(counts)
    for i, c in enumerate(counts):
        if c == 0: continue
        m = lo + (i + 0.5) * step
        bar = "#" * max(1, round(width * c / mx))
        print(f"{m:7.2f} |{bar} {c}")

# ---- 母體:N(50, 12^2),抽 10000 組樣本看 xbar 的分布 ----
g = r.set_seed(101)
mu, sigma = 50.0, 12.0
n = 30
B = 10000
xbars = []
s2s = []
for _ in range(B):
    s = g.rnorm(n, mean=mu, sd=sigma)
    xbars.append(r.mean(s))
    s2s.append(r.var(s))

print(f"母體: mu={mu}, sigma={sigma}, 樣本大小 n={n}, 重複 B={B} 次")
print(f"xbar 的平均 = {r.mean(xbars):.4f}  (理論值 mu = {mu})")
print(f"xbar 的 sd  = {r.sd(xbars):.4f}  (理論值 sigma/sqrt(n) = {sigma/(n**0.5):.4f})")
print(f"單一觀察值 X 的 sd = {r.sd(g.rnorm(5000, mean=mu, sd=sigma)):.4f}  (理論值 sigma = {sigma})")
print()
print("xbar 的直方圖:")
ascii_hist(xbars, nb=24)
print()
print("單一樣本 X 的直方圖(同比例尺對照,取前 10000 個):")
ascii_hist(g.rnorm(10000, mean=mu, sd=sigma), nb=24)

輸出(實際執行):

母體: mu=50.0, sigma=12.0, 樣本大小 n=30, 重複 B=10000 次
xbar 的平均 = 50.0529  (理論值 mu = 50.0)
xbar 的 sd  = 2.1664  (理論值 sigma/sqrt(n) = 2.1909)
單一觀察值 X 的 sd = 12.0645  (理論值 sigma = 12.0)

xbar 的直方圖:
  42.28 |# 3
  42.94 |# 3
  43.60 |# 13
  44.26 |## 44
  44.92 |#### 79
  45.58 |######## 166
  46.24 |############# 262
  46.90 |#################### 404
  47.56 |############################# 593
  48.22 |########################################## 856
  48.88 |################################################### 1030
  49.54 |############################################################ 1210
  50.20 |######################################################### 1157
  50.86 |########################################################### 1194
  51.52 |############################################### 956
  52.18 |#################################### 722
  52.84 |############################ 558
  53.49 |################## 357
  54.15 |########## 202
  54.81 |##### 95
  55.47 |### 59
  56.13 |# 27
  56.79 |# 6
  57.45 |# 4

單一樣本 X 的直方圖(同比例尺對照,取前 10000 個):
   7.13 |# 2
  11.11 |# 7
  15.09 |# 15
  19.08 |## 56
  23.06 |#### 99
  27.04 |######### 209
  31.02 |################## 400
  35.00 |########################### 611
  38.98 |####################################### 868
  42.96 |################################################# 1100
  46.94 |######################################################### 1288
  50.92 |############################################################ 1346
  54.90 |##################################################### 1195
  58.88 |########################################### 971
  62.86 |################################### 784
  66.84 |##################### 475
  70.82 |############# 295
  74.80 |####### 153
  78.78 |#### 81
  82.76 |# 25
  86.74 |# 12
  90.72 |# 4
  94.70 |# 3
  98.68 |# 1

讀圖:兩張直方圖的中心都在 50( \(\bar{X}\) 是不偏估計),但 \(\bar{X}\) 的分布範圍大約是 42–58,單一觀察值 \(X\) 卻橫跨 7–99。模擬出的 sd 也和理論值 \(\sigma/\sqrt{n} = 12/\sqrt{30} \approx 2.19\) 幾乎一致。

這張直方圖就是「抽樣分布」五個字的具體內容。第 6 章的信賴區間「 \(\bar{x} \pm 1.96\sigma/\sqrt{n}\) 」、第 7 章的檢定,全都是在問同一件事:手上這一個 \(\bar{x}\) ,在這張分布圖裡算不算罕見?


與 R 對照#

R 的思想完全一樣:replicate 重複抽樣,hist 畫抽樣分布。

set.seed(101)
mu <- 50; sigma <- 12; n <- 30; B <- 10000
xbars <- replicate(B, mean(rnorm(n, mu, sigma)))
c(mean = mean(xbars), sd = sd(xbars), se = sigma / sqrt(n))
hist(xbars, breaks = 24, main = "Sampling distribution of xbar", xlab = "xbar")

輸出(實際執行):

    mean       sd       se 
50.052915  2.166361  2.190890 

(直方圖與上面 Python 版形狀相同;注意模擬數字一模一樣——因為 rstatistics 的 set_seed(101) 與 R 的 set.seed(101) 位元等價,5.5 節會專門談這件事。)


小結#

  1. 統計量是隨機變數,它的分布叫抽樣分布;統計推論的所有公式都建立在抽樣分布上。
  2. \(E[\bar{X}] = \mu\) 、 \(\mathrm{Var}(\bar{X}) = \sigma^2/n\) ——平均不偏,散度以 \(\sigma/\sqrt{n}\) 收縮。
  3. 常態母體下 \(\bar{X} \sim N(\mu, \sigma^2/n)\) ,且 \(\bar{X} \perp S^2\) 、 \((n-1)S^2/\sigma^2 \sim \chi^2_{n-1}\) (5.4 驗證)。
  4. 模擬(重複抽樣 → 統計量直方圖)是「看到」抽樣分布的標準手法,這招在第 6、7 章還會一直用。

練習#

  1. 把 n 改成 10 與 100,各跑一次模擬: \(\bar{X}\) 直方圖的寬度怎麼變?和 \(\sigma/\sqrt{n}\) 的預測一致嗎? (提示:改 n = 10 / n = 100,比較 r.sd(xbars)。)
  2. 母體改成均勻分布 g.runif(n, 0.0, 10.0), \(\bar{X}\) 的平均與 sd 還符合 \(\mu\) 與 \(\sigma/\sqrt{n}\) 嗎? (提示: \(U(0,10)\) 的 \(\mu=5\) 、 \(\sigma = 10/\sqrt{12}\) 。)
  3. 用模擬估 \(P(\bar{X} > 53)\) ( \(n=30\) ),再與常態近似 \(1 - \Phi\!\left(\frac{53-50}{12/\sqrt{30}}\right)\) 比較。 (提示:統計 sum(1 for x in xbars if x > 53) / B,理論值用 1 - r.pnorm(53, 50, 12/30**0.5)。)
  4. 同一份樣本裡 \(\bar{X}\) 與 \(S^2\) 的相關係數是多少?模擬算算看,會發現接近 0——這就是「獨立」陳述的影子。 (提示:r.cor(xbars, s2s);這只是相關為 0,獨立性的完整驗證要更多功夫。)