歡迎來到 R 語言精算統計!
在卷 A (Paper A) 中,你會學習分佈與統計學背後的理論。而在卷 B (Paper B) 中,你將會運用 R 語言將這些理論付諸實踐。本章將集中討論在每一次 CS1 考試中幾乎都會用到的基本工具:計算匯總統計量(如平均數與變異數),以及尋找各種分佈的機率和分位數。
你可以將 R 想像成一個功能超級強大的科學計數機。與其翻閱《公式與表格手冊》(俗稱 Gold Book)來查找數值,你可以直接要求 R 在不到一秒的時間內給你精確的數值。我們開始吧!
1. 探索性數據分析:匯總統計量
在投入複雜的模型之前,精算師總是會先觀察數據。這被稱為探索性數據分析 (Exploratory Data Analysis, EDA)。我們想知道數據的「中心點」在哪裡(位置測度)以及數據有多「分散」(離散測度)。
位置測度 (Measures of Location)
要找出一組數據 x 的平均值或中心值:
mean(x):計算算術平均數 \( \bar{x} = \frac{1}{n} \sum x_i \)。
median(x):找出數據排序後的中位數。
離散測度 (Measures of Spread)
要觀察數據的波動程度:
var(x):計算樣本變異數 \( s^2 = \frac{1}{n-1} \sum (x_i - \bar{x})^2 \)。
sd(x):計算樣本標準差 \( s = \sqrt{var(x)} \)。
range(x):給出最小值和最大值。
IQR(x):計算四分位距(第 75 百分位數與第 25 百分位數之差)。
一應俱全的指令
summary(x):這是考生的最愛!它能一次過提供最小值、第一四分位數、中位數、平均數、第三四分位數及最大值。這是快速獲取數據「概覽」的最快方法。
小貼士:如果你的數據中有缺失值(在 R 中標示為 NA),這些函數可能會返回 NA。要解決這個問題,請在括號內加入參數 na.rm = TRUE,例如:\( mean(x, na.rm = TRUE) \)。
重點筆記:使用 summary() 進行快速概覽,當題目要求特定指標時,則使用 sd() 或 var() 等特定函數。
2. 「四大」分佈前綴
在 CS1 中,你會處理許多不同的分佈(如正態分佈、泊松分佈、二項分佈等)。R 使用一套非常一致的命名系統。每個分佈都有一個基本名稱(例如:正態分佈為 norm,泊松分佈為 pois),並配以四種可能的前綴:
1. d (Density):用於離散型變量的機率質量函數 (PMF) \( P(X = x) \),或連續型變量的機率密度函數 (PDF) 值。
2. p (Probability):用於累積分佈函數 (CDF) \( P(X \le x) \)。這是你尋找機率時的「必用」工具。
3. q (Quantile):用於逆累積分佈函數 (Inverse CDF)。如果你已知機率並想找出對應的數值 \( x \),請使用 q。
4. r (Random):用於從特定分佈中生成隨機樣本。(註:我們將在下一章關於「模擬」的部分詳細介紹)。
視覺化理解差異:
如果你想求某一點左側的面積,請使用 p。
如果你想求左側具有特定面積的那一點,請使用 q。
3. R 語言中的常用分佈
以下是 CS1 課程大綱中你需要掌握的分佈及其在 R 中的名稱:
離散型分佈:
binom:二項分佈 \( (n, p) \)
pois:泊松分佈 \( (\lambda) \)
geom:幾何分佈 \( (p) \)
nbinom:負二項分佈 \( (k, p) \)
hyper:超幾何分佈
連續型分佈:
norm:正態分佈 \( (\mu, \sigma) \)
exp:指數分佈 \( (\lambda) \)
gamma:伽瑪分佈 \( (\alpha, \lambda) \)
chisq:卡方分佈 \( (\nu) \)
t:學生 t 分佈 \( (\nu) \)
f:F 分佈
beta:Beta 分佈
unif:均勻分佈
範例: 尋找標準正態分佈 \( Z \sim N(0,1) \) 的第 95 百分位數:
\( qnorm(0.95, mean = 0, sd = 1) \)
範例: 已知 \( X \sim Poisson(5) \),求 \( P(X \le 3) \):
\( ppois(3, lambda = 5) \)
4. 關鍵考試陷阱(千萬別在這裡失分!)
「下尾」(Lower Tail)參數
在預設情況下,R 的 p-functions 計算的是 \( P(X \le x) \)(即下尾機率)。如果考試要求 \( P(X > x) \),你有兩個選擇:
1. 計算 \( 1 - p... \) (例如:\( 1 - pnorm(x, ...) \))
2. 在函數內加入參數 lower.tail = FALSE (例如:\( pnorm(x, ..., lower.tail = FALSE) \))。
離散 vs. 連續
別忘記!對於連續型分佈(如正態分佈),\( P(X < x) \) 與 \( P(X \le x) \) 是一樣的。
但對於離散型分佈(如二項分佈或泊松分佈),這點至關重要!R 的 p-functions 總是包含該數值:\( pbinom(k, ...) \) 代表 \( P(X \le k) \)。如果你需要計算 \( P(X < k) \),在 R 中你必須計算 \( P(X \le k-1) \)。
伽瑪分佈 (Gamma Distribution) 參數
在卷 A 中,我們經常使用「率」參數 (rate parameter) \( \lambda \)。在 R 中,gamma 函數可以接受 rate 或 scale。請記住 \( scale = 1 / rate \)。如果不確定,請隨時在 R 控制台輸入 ?rgamma 來檢查函數參數。
標準差 vs. 變異數
在 R 的 norm 函數中,參數是 sd (\( \sigma \)),而不是變異數 (\( \sigma^2 \))。如果題目說明 \( X \sim N(10, 25) \),你在 R 中必須輸入 sd = 5。
5. 分位數與百分位數
卷 B 的常見任務是尋找風險價值 (Value at Risk, VaR) 或特定的分位數。q-functions 正是為此而設計的。
情境: 某保險理賠分佈服從對數正態分佈 (Lognormal),其中 \( meanlog = 5 \) 且 \( sdlog = 2 \)。求理賠額的第 99 百分位數。
R 指令: \( qlnorm(0.99, meanlog = 5, sdlog = 2) \)
重點筆記: 如果題目給你一個機率(例如:「前 5%」或「0.90 置信度」),你很可能需要用到 q-function。如果題目給你一個數值(例如:「理賠額超過 1000 的機率是多少?」),你則需要用到 p-function。
快速複習
匯總統計量: 使用 mean()、var()、sd() 和 summary()。
機率: 使用 p-name() 來計算 \( P(X \le x) \)。
分位數: 使用 q-name() 來尋找與機率相關聯的數值。
上尾機率: 使用 lower.tail = FALSE 來計算 \( P(X > x) \)。
正態分佈: 務必使用標準差 (\( \sigma \)),而非變異數 (\( \sigma^2 \))。
如果你忘記了某個函數參數的精確順序,別擔心!你可以在 R 中輸入問號後接函數名稱(例如:?pbinom)來查看幫助文件,確認所需的輸入內容。