3.5 期望值與變異數#
本節目標#
- 會從 pmf 出發推導各離散分配的期望值與變異數
- 掌握兩個計算工具:線性性與獨立可乘,避開蠻力級數求和
- 認識
r.choose在組合數(超幾何 pmf、二項係數)中的用途 - 用同一組模擬把本章 5 個分配的理論/模擬對照彙成一張總表
問題場景:一個分配,兩個數字講完#
第 3 章到目前為止認識了 5 個離散分配,每個都有完整的 pmf。但實務上第一個被問到的往往不是整條 pmf,而是兩個彙總數字:
- 平均要等多久?(期望值 \(E[X]\) )
- 波動有多大?(變異數 \(\mathrm{Var}(X) = E[X^2] - (E[X])^2\) )
例如 3.1 節丟 10 次銅板:均值 5 次正面大家都能猜到,但「標準差 \(\sqrt{2.5} \approx 1.58\) 」才是品管判讀「抽檢不良品數是否異常」的依據。期望值定位中心、變異數量測散布——這兩個數字就是分配的「家族指紋」,第 5 章的大數法則與中央極限定理、第 6 章起所有推論統計,全部建立在它們身上。
理論推導#
定義與基本工具#
離散隨機變數的期望值與變異數:
$$ E[X] = \sum_k k\, P(X = k), \qquad \mathrm{Var}(X) = \sum_k (k - E[X])^2\, P(X=k) = E[X^2] - (E[X])^2
$$ 直接對級數求和有時很痛,兩個性質能省掉大部分功夫:
- 線性性(不需要獨立): \(E[aX + bY + c] = aE[X] + bE[Y] + c\) 。
- 獨立則變異數可加: \(X, Y\) 獨立時 \(\mathrm{Var}(X + Y) = \mathrm{Var}(X) + \mathrm{Var}(Y)\) ;且 \(\mathrm{Var}(aX) = a^2 \mathrm{Var}(X)\) 。
逐個推導#
伯努利 \((p)\) : \(X\) 取 0/1, \(E[X] = 1\cdot p + 0\cdot(1-p) = p\) ; \(E[X^2] = p\) (1 的平方還是 1),故 \(\mathrm{Var}(X) = p - p^2 = p(1-p)\) 。一切的積木。
**二項 \(\mathrm{Bin}(n,p)\) **:把 \(n\) 次獨立試驗寫成 \(X = X_1 + \cdots + X_n\) ,每個 \(X_i\) 是伯努利。線性性+獨立可加:
$$ E[X] = np, \qquad \mathrm{Var}(X) = n p (1-p)
$$ 不必碰任何組合數——這就是「分解成積木」的威力。
**卜松 \(\mathrm{Pois}(\lambda)\) **:用 \(E[X] = \sum_{k\ge 1} k \dfrac{\lambda^k e^{-\lambda}}{k!} = \lambda \sum_{j \ge 0} \dfrac{\lambda^j e^{-\lambda}}{j!} = \lambda\) (把 \(k\) 消進 \(k!\) 、換元 \(j = k-1\) 後剩下的正是機率和 1)。同法對 \(k(k-1)\) 求和可得 \(E[X^2] = \lambda^2 + \lambda\) ,故:
$$ E[X] = \lambda, \qquad \mathrm{Var}(X) = \lambda
$$ 另一個來源更漂亮:把 \(\mathrm{Bin}(n, p)\) 的 \(\lambda = np\) 極限帶入, \(\mathrm{Var} = np(1-p) = \lambda(1 - \lambda/n) \to \lambda\) ——「均值 = 變異數」是極限過程送禮送來的。
**幾何 \(\mathrm{Geom}(p)\) **(數失敗次數): \(E[X] = \sum k q^k p\) ,對 \(\sum_{k \ge 0} q^k = 1/(1-q)\) 兩邊微分得 \(\sum k q^{k-1} = 1/(1-q)^2\) ,整理後:
$$ E[X] = \frac{1-p}{p}, \qquad \mathrm{Var}(X) = \frac{1-p}{p^2}
$$ **負二項 \(\mathrm{NB}(r, p)\) **:第 \(r\) 次成功 = \(r\) 個獨立幾何等待之和(3.3 節),均值與變異數各乘 \(r\) :
$$ E[X] = \frac{r(1-p)}{p}, \qquad \mathrm{Var}(X) = \frac{r(1-p)}{p^2}
$$ **超幾何 \((N, K, n)\) **:不放回抽 \(n\) 個,第 \(i\) 次抽中目標類的指示變數 \(X_i\) 各有 \(P(X_i = 1) = K/N\) (對稱性),線性性立刻給 \(E[X] = nK/N\) 。但 \(X_i\) 不獨立(不放回),變異數要多乘校正因子:
$$ E[X] = n\frac{K}{N}, \qquad \mathrm{Var}(X) = n\frac{K}{N}\Bigl(1-\frac{K}{N}\Bigr)\frac{N-n}{N-1}
$$
總表#
| 分配 | 記號 | \(E[X]\) | \(\mathrm{Var}(X)\) |
|---|---|---|---|
| 伯努利 | \(\mathrm{Bern}(p)\) | \(p\) | \(p(1-p)\) |
| 二項 | \(\mathrm{Bin}(n,p)\) | \(np\) | \(np(1-p)\) |
| 卜松 | \(\mathrm{Pois}(\lambda)\) | \(\lambda\) | \(\lambda\) |
| 幾何 | \(\mathrm{Geom}(p)\) | \((1-p)/p\) | \((1-p)/p^2\) |
| 負二項 | \(\mathrm{NB}(r,p)\) | \(r(1-p)/p\) | \(r(1-p)/p^2\) |
| 超幾何 | \((N,K,n)\) | \(nK/N\) | \(n\frac{K}{N}(1{-}\frac{K}{N})\frac{N-n}{N-1}\) |
r.choose:組合數的計算器#
推導裡處處出現的 \(\binom{n}{k}\) 在程式裡就是 r.choose(n, k),與 R 的 choose() 一致、內部用 lgamma 保證大數不溢位:
import rstatistics as r
print(r.choose(10, 3)) # 二項 pmf 的係數
print(r.choose(52, 5)) # 5 張牌的發牌數
print(r.choose(42, 6)) # 6/42 樂透的組合數
120.0 2598960.0 5245786.0
動手做:模擬對照總表#
一口氣模擬本章全部 5 個分配(各 100000 次),把模擬均值/變異數與理論值並排:
import rstatistics as r
g = r.set_seed(42)
N = 100000
def stats(xs):
fx = list(map(float, xs))
return r.mean(fx), r.var(fx)
rows = [
("Bin(10,0.5)", 5.0, 2.5, stats(g.rbinom(N, 10, 0.5))),
("Pois(3)", 3.0, 3.0, stats(g.rpois(N, 3.0))),
("Geom(0.3)", 7/3, 70/9, stats(g.rgeom(N, 0.3))),
("NBin(2,0.3)", 14/3, 140/9, stats(g.rnbinom(N, 2, 0.3))),
("Hyper(42,20,6)", 20/7, 1.3141, stats(g.rhyper(N, 20, 22, 6))),
]
print(f"{'分配':>16} {'E 理論':>8} {'E 模擬':>8} {'Var 理論':>9} {'Var 模擬':>9}")
for name, te, tv, (sm, sv) in rows:
print(f"{name:>16} {te:8.4f} {sm:8.4f} {tv:9.4f} {sv:9.4f}")
分配 E 理論 E 模擬 Var 理論 Var 模擬
Bin(10,0.5) 5.0000 5.0036 2.5000 2.5215
Pois(3) 3.0000 2.9956 3.0000 3.0081
Geom(0.3) 2.3333 2.3376 7.7778 7.8179
NBin(2,0.3) 4.6667 4.6639 15.5556 15.4499
Hyper(42,20,6) 2.8571 2.8603 1.3141 1.3128
誤差量級解讀:均值估計的標準誤是 \(\mathrm{sd}/\sqrt{N}\) 。以 NBin 為例, \(\mathrm{sd} = \sqrt{15.56} \approx 3.94\) ,標準誤 \(\approx 0.012\) ,模擬偏差 0.003 遠在 1 個標準誤內。變異數估計的誤差還與峰度有關,但同樣是 \(1/\sqrt{N}\) 量級——Geom 的偏差 0.040(理論 7.778)約 1 個標準誤,NBin 的 \(-0.106\) 亦然。沒有任何一格需要「解釋」,蒙特卡羅誤差把所有格子的偏差都罩住了。 想把均值估到小數第 3 位,樣本數得乘 100。
驗證「均值 = 變異數」與校正因子#
總表中有兩個「指紋」特別值得用程式點名:
g = r.set_seed(42)
xs = g.rpois(200000, 0.7)
fx = list(map(float, xs))
print(round(r.mean(fx), 4), round(r.var(fx), 4)) # Pois: 兩者應同為 0.7
# 超幾何校正因子:(N-n)/(N-1)
N, n, p = 1000, 20, 0.04
print(round((N - n) / (N - 1), 4), round(20 * p * (1 - p) * (N - n) / (N - 1) / (20 * p * (1 - p)), 4))
0.7009 0.7033
0.981 1.0
卜松的均值與變異數在模擬中同時落在 0.70 附近;超幾何的變異數比同參數二項小 1.9%(校正因子 0.981)——不放回抽樣「抽薄母體、壓低波動」的效應。
與 R 對照#
choose(10, 3); choose(52, 5); choose(42, 6)
# [1] 120
# [1] 2598960
# [1] 5245786
set.seed(42)
N <- 100000
mean(rbinom(N, 10, 0.5)); var(rbinom(N, 10, 0.5))
mean(rpois(N, 3)); var(rpois(N, 3))
mean(rgeom(N, 0.3)); var(rgeom(N, 0.3))
mean(rnbinom(N, 2, 0.3)); var(rnbinom(N, 2, 0.3))
mean(rhyper(N, 20, 22, 6)); var(rhyper(N, 20, 22, 6))
(本節 R 輸出以 Rscript 實際執行驗證;choose 的三個值與 Python 完全一致。模擬均值/變異數視底層亂數消耗方式不同,與 Python 版可差到小數第 2 位——這是蒙特卡羅變異,不是計算錯誤;兩邊都貼著各自的理論值,偏差都在 \(2\) 個標準誤內。)R 的向量化寫法可以一行一個分配;Python 版如上用 list 包起來一次跑完,邏輯相同。
小結#
- 期望值是線性的(不需獨立),變異數在獨立時可加——二項、卜松、負二項的均值變異數全靠這兩條從伯努利「積木」推出。
- 卜松的「均值 = 變異數」來自二項極限;超幾何的校正因子 \((N-n)/(N-1)\) 來自不放回的負相關。
r.choose(n, k)對應 \(\binom{n}{k}\) ,是本章所有 pmf 推導中的組合引擎。- 一張模擬總表印證:每個分配的均值與變異數都是可被蒙特卡羅驗證的具體數字,誤差一律 \(1/\sqrt{N}\) 量級。
- 分配是數字的家族,均值與變異數是家族指紋:第 5 章的大數法則會證明「樣本均值收斂到家族期望值」,第 14 章的適合度檢定則會問「這份資料的指紋像不像某個家族」。
練習#
- 直接從定義計算 \(\mathrm{Bern}(p)\) 的變異數,並驗證在 \(p = 0.5\) 時最大(即最「不確定」的一次試驗)。提示: \(\mathrm{Var} = p(1-p)\) ,對 \(p\) 微分。
- 用線性性證明: \(n\) 個獨立 \(\mathrm{Bern}(p)\) 之和的均值與變異數是 \(np, np(1-p)\) ,然後用
g.rbinom模擬 \(\mathrm{Bin}(20, 0.3)\) 驗證。提示:理論 6 與 4.2。 - 證明卜松分配滿足 \(E[X(X-1)] = \lambda^2\) ,進而推出 \(\mathrm{Var}(X) = \lambda\) 。提示: \(k(k-1)/k! = 1/(k-2)!\) ,換元後剩下的級數和為 1。
- 一個班有 30 人、其中 12 人戴眼鏡,隨機分 5 人一組打掃。用
r.dhyper與總表的公式計算「組內戴眼鏡人數」的均值與變異數,並模擬驗證。提示: \(E = 5 \times 12/30 = 2\) ,校正因子 \(25/29\) 。 - 蒙特卡羅尺度實驗:對 \(\mathrm{Pois}(5)\) 分別取 \(N = 10^3, 10^4, 10^5, 10^6\) 次模擬,記錄 \(|\hat{E} - 5|\) ,驗證誤差每放大 100 倍樣本就縮 10 倍。提示:把結果畫在 log-log 圖上,斜率應約 \(-1/2\) 。