跳轉到

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

$$ 直接對級數求和有時很痛,兩個性質能省掉大部分功夫:

  1. 線性性(不需要獨立): \(E[aX + bY + c] = aE[X] + bE[Y] + c\) 。
  2. 獨立則變異數可加: \(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 章的適合度檢定則會問「這份資料的指紋像不像某個家族」。

練習#

  1. 直接從定義計算 \(\mathrm{Bern}(p)\) 的變異數,並驗證在 \(p = 0.5\) 時最大(即最「不確定」的一次試驗)。提示: \(\mathrm{Var} = p(1-p)\) ,對 \(p\) 微分。
  2. 用線性性證明: \(n\) 個獨立 \(\mathrm{Bern}(p)\) 之和的均值與變異數是 \(np, np(1-p)\) ,然後用 g.rbinom 模擬 \(\mathrm{Bin}(20, 0.3)\) 驗證。提示:理論 6 與 4.2。
  3. 證明卜松分配滿足 \(E[X(X-1)] = \lambda^2\) ,進而推出 \(\mathrm{Var}(X) = \lambda\) 。提示: \(k(k-1)/k! = 1/(k-2)!\) ,換元後剩下的級數和為 1。
  4. 一個班有 30 人、其中 12 人戴眼鏡,隨機分 5 人一組打掃。用 r.dhyper 與總表的公式計算「組內戴眼鏡人數」的均值與變異數,並模擬驗證。提示: \(E = 5 \times 12/30 = 2\) ,校正因子 \(25/29\) 。
  5. 蒙特卡羅尺度實驗:對 \(\mathrm{Pois}(5)\) 分別取 \(N = 10^3, 10^4, 10^5, 10^6\) 次模擬,記錄 \(|\hat{E} - 5|\) ,驗證誤差每放大 100 倍樣本就縮 10 倍。提示:把結果畫在 log-log 圖上,斜率應約 \(-1/2\) 。