第四章:離散機率分布 (Discrete Probability Distributions)

Author

Prof. AI

Published

June 28, 2026

4.1 導言與隨機變項

同學們,在前面的章節中,我們學會了什麼是機率,也探討了臨床篩檢中的不確定性。但是,每次做醫學研究,我們拿到的都是各式各樣的數據——有時是「患者是否康復」(是/否),有時是「患者的存活天數」(天數),有時是「急診室送進來的車禍傷患數」(人數)。

在統計學上,我們需要一個「數學橋樑」把這些真實世界的觀測結果與機率聯繫起來。這個橋樑就叫做隨機變項 (random variable)。

隨機變項並不是一個固定數值的變數,而是一個將隨機試驗的結果對應到數值的函數。一般我們用大寫字母(如 \(X\))表示隨機變項本身,用小寫字母(如 \(x\))表示它具體取出的某個數值。

隨機變項主要可以分成兩大家族:

  1. 離散隨機變項 (discrete random variable)
    • 特徵:變項可以取值的個數是有限個,或者「可數的」無限個。通常是整數。
    • 醫學例子:一家醫院裡今天出生的新生兒個數 \(X \in \{0, 1, 2, \dots\}\)、某藥物的副作用症狀個數。
  2. 連續隨機變項 (continuous random variable)
    • 特徵:變項可以在某個實數區間內取任意值。個數是不可數的。
    • 醫學例子:患者的血壓、體重、手術時間。這些數值需要精確的測量儀器,可以有無限多個小數點。

本章,我們將全神貫注在第一大成員——離散機率分布上。


4.2 離散隨機變項的分布特徵

當我們想描述一個離散隨機變項 \(X\) 的脾氣時,有兩個核心概念是必須掌握的:

4.2.1 機率質量函數 (Probability Mass Function, PMF)

這是一個幫每一個可能的取值 \(x\) 指派其發生機率的函數,記作 \(P(X = x)\)\(p(x)\)。 它必須遵守兩大憲法:

  1. 每一個點的機率都不能是負數,且不能大於 1: \(0 \le P(X=x) \le 1\)
  2. 所有可能取值的機率相加必須剛好等於 1: \(\sum_{\text{all } x} P(X=x) = 1\)

4.2.2 期望值 (Expected Value)

期望值 \(E(X)\) 就是當試驗重複無數次之後,這個隨機變項的長期平均值。 計算公式是把每個可能的值乘以它發生的機率,然後全部加起來:

\[E(X) = \mu = \sum x P(X=x)\]

💡 教授的診間比喻: 假設有一種輕微手術,有 80% 的患者完全沒有併發症(併發症數 \(X = 0\)),有 15% 的人有 1 個輕微併發症(\(X = 1\)),有 5% 的人有 2 個併發症(\(X = 2\))。 請問一位病患預期會遇到的併發症個數(期望值)是多少? \[E(X) = 0 \times 0.80 + 1 \times 0.15 + 2 \times 0.05 = 0.15 + 0.10 = 0.25 \text{ 個}\] 雖然沒有任何一個病人的併發症個數會是「0.25 個」(你不可能切出 1/4 個倂發症!),但這個期望值告訴醫師:平均而言,每 100 位動這種手術的病人,總共會出現 25 個併發症。

4.2.3 變異數 (Variance)

離散隨機變項的變異數 \(Var(X)\) 衡量的是這些取值圍繞在期望值周圍的波動程度:

\[Var(X) = \sigma^2 = E[(X - E(X))^2] = \sum (x - \mu)^2 P(X=x)\]


4.3 二項分布:成敗二分法

在臨床研究中,最常見的狀況就是「投藥後,病人要么好了,要么沒好」;「手術後,病人要么活著,要么死了」。這種只有兩種可能結果的單次試驗,在統計學上叫做白努利試驗 (Bernoulli trial)。

如果我們進行了 \(n\)獨立的白努利試驗,每一次試驗成功的機率都是固定的 \(p\)(失敗機率為 \(1-p\))。此時,這 \(n\) 次試驗中「成功次數」\(X\) 的機率分布,就稱為二項分布 (binomial distribution),記作 \(X \sim B(n, p)\)

4.3.1 排列與組合的快速複習

要計算二項分布的機率,我們必須知道在 \(n\) 次試驗中,出現 \(k\) 次成功的不同組合方式有多少種。我們使用組合 (combination) 公式:

\[\binom{n}{k} = C^n_k = \frac{n!}{k!(n-k)!}\]

4.3.2 二項分布的機率質量函數 (PMF)

\(n\) 次試驗中,成功次數剛好為 \(k\) 次的機率為:

\[P(X = k) = \binom{n}{k} p^k (1-p)^{n-k}, \quad k = 0, 1, 2, \dots, n\]

  • 期望值\(E(X) = np\)
  • 變異數\(Var(X) = np(1-p)\)

💊 新藥試驗例子: 假設某種新感冒藥的治癒率為 65% (\(p = 0.65\))。今天有 10 位獨立患者服用此藥 (\(n = 10\))。 請問這 10 人中「剛好有 7 人被治癒」的機率是多少? \[P(X = 7) = \binom{10}{7} (0.65)^7 (0.35)^3\] 其中 \(\binom{10}{7} = \frac{10!}{7!3!} = 120\)\[P(X = 7) = 120 \times 0.04902 \times 0.042875 \approx 0.2522 \text{ (25.2\%)}\] 平均而言,這 10 位患者中預期會被治癒的人數為 \(E(X) = 10 \times 0.65 = 6.5\) 人。


4.4 卜瓦松分布:罕見事件的魔咒

二項分布適合用在「有固定總試驗次數 \(n\)」的場景。但如果在醫學研究中,我們想觀察的是「在一段時間或空間內,某個罕見事件發生的次數」,那該怎麼辦?

例如:

  • 一家大型醫學中心急診室,平均每小時會送進來 4 位急診患者。請問下一個小時剛好送來 6 人的機率是多少?
  • 某個十萬人的社區中,去年發生了 3 例罕見腦瘤。請問今年發生 0 例的機率是多少?

這類事件的特點是:潛在的「試驗次數」極大(甚至趨近無限大),但單次事件發生的機率極小。此時,我們使用卜瓦松分布 (Poisson distribution),記作 \(X \sim \text{Poisson}(\lambda)\)

其中 \(\lambda\)(Lambda)代表在該時間/空間區間內,事件發生的平均次數(期望值)。

4.4.1 卜瓦松分布的機率質量函數 (PMF)

事件在指定區間內發生 \(k\) 次的機率為:

\[P(X = k) = \frac{\lambda^k e^{-\lambda}}{k!}, \quad k = 0, 1, 2, \dots\]

這裡的 \(e\) 是自然常數(約等於 2.71828)。 卜瓦松分布最神奇也最容易記的特徵就是:

  • 期望值\(E(X) = \lambda\)
  • 變異數\(Var(X) = \lambda\) (期望值跟變異數一模一樣,就是這麼任性!)

4.4.2 二項分布之卜瓦松近似

當二項分布的 \(n\) 非常大(例如 \(n \ge 100\)),且 \(p\) 非常小(例如 \(p \le 0.01\))時,直接計算二項分布會非常痛苦。此時我們可以令 \(\lambda = np\),用卜瓦松分布來非常精準地逼近二項分布的計算結果。


4.5 實戰演練:使用 R 進行二項與卜瓦松分布建模

現在,我們打開 RStudio,利用 R 的內建機率函數,來幫上述的兩個臨床情境進行建模,並繪製出精美的機率質量函數分布圖。

4.5.1 R 語言中的機率四大函數前綴

在 R 中,對於任何分布(如 binom, pois),都有四個核心函數:

  • d 開頭 (density/probability):計算單點機率 \(P(X = k)\),如 dbinom(), dpois()
  • p 開頭 (probability cumulative):計算累積機率 \(P(X \le k)\),如 pbinom(), ppois()
  • q 開 quarter (quantile):給定累積機率,反查隨機變數值。
  • r 開頭 (random):隨機抽樣模擬,如 rbinom(), rpois()

4.5.2 R 程式碼實作

# 1. 載入 ggplot2 繪圖套件
library(ggplot2)

# ==========================================
# 情境一:新藥治療成功人數的二項分布 B(10, 0.65)
# ==========================================
n_binom <- 10
p_binom <- 0.65
x_binom <- 0:10
prob_binom <- dbinom(x_binom, size = n_binom, prob = p_binom)

df_binom <- data.frame(
  Successes = factor(x_binom),
  Probability = prob_binom
)

p1 <- ggplot(df_binom, aes(x = Successes, y = Probability)) +
  geom_col(fill = "#3182ce", color = "#2b6cb0", alpha = 0.8, width = 0.7) +
  geom_text(aes(label = round(Probability, 3)), vjust = -0.5, size = 6.2, color = "#2d3748", family = "Noto Sans CJK TC") +
  labs(
    title = "新藥臨床試驗成功療效人數之二項分布 (Binomial Distribution)",
    subtitle = paste("試驗人數 (n) = 10 人, 單次成功率 (p) = 0.65"),
    x = "成功療效人數 (k)",
    y = "發生機率 P(X = k)"
  ) +
  theme_minimal(base_family = "Noto Sans CJK TC", base_size = 15) + # Windows 請更換為 Microsoft JhengHei
  theme(
    plot.title = element_text(size = 22, hjust = 0.5, color = "#2d3748"),
    plot.subtitle = element_text(size = 16, hjust = 0.5, color = "#718096"),
    axis.title = element_text(size = 18, color = "#4a5568"),
    axis.title.x = element_text(margin = margin(t = 10)),
    axis.title.y = element_text(margin = margin(r = 12)),
    axis.text = element_text(size = 16, color = "#2d3748"),
    panel.background = element_rect(fill = "#f7fafc", color = NA),
    plot.background = element_rect(fill = "white", color = NA),
    plot.margin = margin(20, 28, 20, 54)
  )

ggsave("figs/binomial_pmf.png", plot = p1, width = 8.1, height = 5.4, dpi = 300)

# ==========================================
# 情境二:急診室每小時病患抵達人數的卜瓦松分布 Poisson(4)
# ==========================================
lambda_pois <- 4
x_pois <- 0:12
prob_pois <- dpois(x_pois, lambda = lambda_pois)

df_pois <- data.frame(
  Arrivals = factor(x_pois),
  Probability = prob_pois
)

p2 <- ggplot(df_pois, aes(x = Arrivals, y = Probability)) +
  geom_col(fill = "#319795", color = "#234e52", alpha = 0.8, width = 0.7) +
  geom_text(aes(label = round(Probability, 3)), vjust = -0.5, size = 6.2, color = "#2d3748", family = "Noto Sans CJK TC") +
  labs(
    title = "急診室每小時病患抵達人數之卜瓦松分布 (Poisson Distribution)",
    subtitle = paste("平均抵達率 (lambda) =", lambda_pois, "人/小時"),
    x = "每小時抵達人數 (k)",
    y = "發生機率 P(X = k)"
  ) +
  theme_minimal(base_family = "Noto Sans CJK TC", base_size = 15) + # Windows 請更換為 Microsoft JhengHei
  theme(
    plot.title = element_text(size = 22, hjust = 0.5, color = "#2d3748"),
    plot.subtitle = element_text(size = 16, hjust = 0.5, color = "#718096"),
    axis.title = element_text(size = 18, color = "#4a5568"),
    axis.title.x = element_text(margin = margin(t = 10)),
    axis.title.y = element_text(margin = margin(r = 12)),
    axis.text = element_text(size = 16, color = "#2d3748"),
    panel.background = element_rect(fill = "#f7fafc", color = NA),
    plot.background = element_rect(fill = "white", color = NA),
    plot.margin = margin(20, 28, 20, 54)
  )

ggsave("figs/poisson_pmf.png", plot = p2, width = 8.1, height = 5.4, dpi = 300)

4.5.3 統計圖表解讀

當你執行完上述程式後,figs/ 資料夾下會生成以下兩張離散分布圖表:

Figure 4.1: 新藥成功療效人數二項分布
Figure 4.2: 急診室病患抵達卜瓦松分布

數據診斷分析:

  1. 二項分布解讀:從左圖可以看出,當 \(n=10, p=0.65\) 時,最有可能的成功治療人數是 7 人(機率約 25.2%),其次是 6 人(23.8%)與 8 人(17.6%)。這與我們期望值 \(E(X) = 6.5\) 人的理論分析完美契合。
  2. 卜瓦松分布解讀:從右圖可以看出,在平均每小時有 4 位病患抵達的急診室中,單個小時內「剛好來 3 人」或「剛好來 4 人」的機率最高(皆約為 19.5%)。雖然平均是 4 人,但有時候忙起來,一小時來 8 人以上的機率依然存在,這也提醒了急診醫學科主管必須保留一定的醫療彈性彈性!

4.6 本章名詞對照表 (Glossary)

中文名稱 英文名稱 定義與說明
隨機變項 Random variable 將隨機試驗之結果對應到具體實數數值的數學函數。
離散隨機變項 Discrete random variable 取值個數有限或屬於可數無限個(通常是整數)的隨機變項。
連續隨機變項 Continuous random variable 取值可以在某實數區間內任意取值的隨機變項。
機率質量函數 Probability mass function (PMF) 給定離散隨機變項各別可能取值之精確發生機率的函數。
期望值 Expected value 隨機變項無限次重複試驗後的長期平均值,即以機率為權重的加權平均。
變異數 Variance 衡量隨機變項取值與期望值之間偏差平方和的加權平均。
白努利試驗 Bernoulli trial 只有兩種可能結果(成功/失敗)的單次獨立隨機試驗。
排列 Permutation 從物件中取出部分進行有順序之排列的方式種類數。
組合 Combination 從物件中取出部分且不考慮順序之組合的種類數。
二項分布 Binomial distribution 進行 n 次獨立白努利試驗中,成功次數的機率分布。
卜瓦松分布 Poisson distribution 描述在固定時間或空間區間內,某罕見隨機事件發生次數的機率分布。
卜瓦松逼近 Poisson approximation 當二項分布之試驗次數 n 極大且成功率 p 極小時,以卜瓦松分布代替計算的近似法。