ยินดีต้อนรับสู่สถิติประกันภัยในโปรแกรม R!

ใน Paper A คุณได้เรียนรู้ทฤษฎีเบื้องหลังการแจกแจงและสถิติต่างๆ ไปแล้ว ส่วนใน 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): นี่คือคำสั่งขวัญใจนักเรียนตอนสอบเลย! เพราะมันจะให้ทั้งค่าต่ำสุด (Min), ควอไทล์ที่ 1, มัธยฐาน (Median), ค่าเฉลี่ย (Mean), ควอไทล์ที่ 3 และค่าสูงสุด (Max) มาพร้อมกันในคราวเดียว เป็นวิธีที่เร็วที่สุดในการดู "ภาพรวม" ของข้อมูล

เคล็ดลับน่ารู้: หากข้อมูลของคุณมีค่าที่ขาดหายไป (ใน R จะแสดงเป็น NA) ฟังก์ชันเหล่านี้อาจส่งผลลัพธ์ออกมาเป็น NA วิธีแก้คือให้เพิ่มคำสั่ง na.rm = TRUE ไว้ในวงเล็บ เช่น \( mean(x, na.rm = TRUE) \)

สรุปประเด็นสำคัญ: ใช้ summary() เพื่อดูภาพรวมอย่างรวดเร็ว และใช้ฟังก์ชันเฉพาะอย่าง sd() หรือ var() เมื่อโจทย์ถามหาค่าสถิตินั้นๆ โดยเฉพาะ

2. อักษรนำหน้า "4 จตุรเทพ" ของการแจกแจง

ในวิชา CS1 คุณต้องเจอกับการแจกแจงมากมาย (ปกติ, พัวซอง, ทวินาม และอื่นๆ) โปรแกรม R มีระบบการตั้งชื่อที่สม่ำเสมอมาก โดยทุกการแจกแจงจะมีชื่อพื้นฐาน (เช่น norm สำหรับ Normal, pois สำหรับ Poisson) และจะมีอักษรนำหน้า 4 แบบที่แตกต่างกันตามการใช้งาน:

1. d (Density): ใช้สำหรับหาฟังก์ชันมวลความน่าจะเป็น (PMF) สำหรับตัวแปรสุ่มแบบไม่ต่อเนื่อง \( P(X = x) \) หรือค่าฟังก์ชันความหนาแน่นความน่าจะเป็น (PDF) สำหรับตัวแปรสุ่มแบบต่อเนื่อง
2. p (Probability): ใช้สำหรับหาฟังก์ชันการกระจายตัวสะสม (CDF) ซึ่งก็คือ \( P(X \le x) \) นี่คือเครื่องมือหลักที่คุณจะใช้หาค่าความน่าจะเป็น
3. q (Quantile): ใช้สำหรับหาค่าผกผันของ CDF (Inverse CDF) ถ้าคุณรู้ค่าความน่าจะเป็นแต่ต้องการหาค่า \( x \) ให้เลือกใช้ q
4. r (Random): ใช้สำหรับสร้างกลุ่มตัวอย่างแบบสุ่มจากการแจกแจงนั้นๆ (หมายเหตุ: เราจะเจาะลึกเรื่องนี้ในบทถัดไปเกี่ยวกับการจำลองสถานการณ์หรือ Simulation)

วิธีแยกความแตกต่างให้เห็นภาพ:
ถ้าต้องการหา "พื้นที่" ทางซ้ายของจุดใดจุดหนึ่ง ให้ใช้ p
ถ้าต้องการหา "จุด" ที่มีพื้นที่ทางซ้ายตามที่กำหนด ให้ใช้ q

3. การแจกแจงที่พบบ่อยใน R

นี่คือรายชื่อการแจกแจงที่คุณต้องรู้สำหรับหลักสูตร CS1 และชื่อเรียกใน R:

การแจกแจงแบบไม่ต่อเนื่อง (Discrete Distributions):
binom: ทวินาม (Binomial) \( (n, p) \)
pois: พัวซอง (Poisson) \( (\lambda) \)
geom: เรขาคณิต (Geometric) \( (p) \)
nbinom: ทวินามลบ (Negative Binomial) \( (k, p) \)
hyper: ไฮเพอร์จีโอเมตริก (Hypergeometric)

การแจกแจงแบบต่อเนื่อง (Continuous Distributions):
norm: ปกติ (Normal) \( (\mu, \sigma) \)
exp: เอกซ์โพเนนเชียล (Exponential) \( (\lambda) \)
gamma: แกมมา (Gamma) \( (\alpha, \lambda) \)
chisq: ไคสแควร์ (Chi-square) \( (\nu) \)
t: การแจกแจงที (Student’s t-distribution) \( (\nu) \)
f: การแจกแจงเอฟ (F-distribution)
beta: เบตา (Beta distribution)
unif: เอกรูป (Uniform distribution)

ตัวอย่าง: การหาเปอร์เซ็นไทล์ที่ 95 ของการแจกแจงปกติมาตรฐาน \( Z \sim N(0,1) \):
\( qnorm(0.95, mean = 0, sd = 1) \)

ตัวอย่าง: การหา \( P(X \le 3) \) เมื่อ \( X \sim Poisson(5) \):
\( ppois(3, lambda = 5) \)

4. กับดักสำคัญในห้องสอบ (ระวังเสียคะแนนฟรี!)

อาร์กิวเมนต์ "Lower Tail"

ตามปกติแล้ว ฟังก์ชันตระกูล p ใน R จะคำนวณ \( P(X \le x) \) (พื้นที่หางด้านซ้าย) หากโจทย์ถามหา \( P(X > x) \) คุณมี 2 ทางเลือก:
1. คำนวณแบบ \( 1 - p... \) (เช่น \( 1 - pnorm(x, ...) \))
2. ใส่เพิ่มอาร์กิวเมนต์ lower.tail = FALSE ลงไปในฟังก์ชัน (เช่น \( pnorm(x, ..., lower.tail = FALSE) \))

แบบไม่ต่อเนื่อง vs. แบบต่อเนื่อง

อย่าลืมเด็ดขาด! สำหรับการแจกแจงแบบต่อเนื่อง (เช่น ปกติ) ค่า \( P(X < x) \) จะเท่ากับ \( P(X \le x) \)
แต่สำหรับการแจกแจงแบบไม่ต่อเนื่อง (เช่น ทวินาม หรือ พัวซอง) มันต่างกัน! ฟังก์ชัน p ใน R จะรวมค่าจุดนั้นไปด้วยเสมอ: \( pbinom(k, ...) \) คือ \( P(X \le k) \) ดังนั้นถ้าคุณต้องการหา \( P(X < k) \) คุณต้องสั่งให้ R คำนวณ \( P(X \le k-1) \) แทน

พารามิเตอร์ของการแจกแจงแกมมา (Gamma)

ใน Paper A เรามักจะใช้พารามิเตอร์ rate (\( \lambda \)) แต่ใน R ฟังก์ชัน gamma สามารถรับค่าได้ทั้ง rate หรือ scale อย่าลืมว่า \( scale = 1 / rate \) หากไม่แน่ใจ ให้พิมพ์ ?rgamma ใน console ของ R เพื่อตรวจสอบอาร์กิวเมนต์ของฟังก์ชันเสมอ

ส่วนเบี่ยงเบนมาตรฐาน vs. ความแปรปรวน

ในฟังก์ชัน norm ของ R พารามิเตอร์ที่ต้องใส่คือ sd (\( \sigma \)) ไม่ใช่ variance (\( \sigma^2 \)) หากโจทย์บอกว่า \( X \sim N(10, 25) \) คุณต้องใส่ค่า sd = 5 ในโปรแกรม R

5. ควอนไทล์และเปอร์เซ็นไทล์

งานที่พบบ่อยใน Paper B คือการหา Value at Risk (VaR) หรือควอนไทล์ที่กำหนด ซึ่งฟังก์ชันตระกูล q ถูกออกแบบมาเพื่อการนี้โดยเฉพาะ

สถานการณ์: การกระจายตัวของค่าสินไหมทดแทนมีการแจกแจงแบบ Lognormal โดยมี \( meanlog = 5 \) และ \( sdlog = 2 \) จงหาเปอร์เซ็นไทล์ที่ 99 ของค่าสินไหม
คำสั่งใน R: \( qlnorm(0.99, meanlog = 5, sdlog = 2) \)

สรุปประเด็นสำคัญ: ถ้าโจทย์ให้ค่าความน่าจะเป็นมา (เช่น "สูงสุด 5%" หรือ "ความเชื่อมั่น 0.90") ให้คุณนึกถึงฟังก์ชัน q แต่ถ้าโจทย์ให้ค่าตัวเลขมา (เช่น "ความน่าจะเป็นที่ค่าสินไหมจะเกิน 1,000 คือเท่าใด") ให้คุณนึกถึงฟังก์ชัน p

สรุปสั้นๆ กันลืม

สถิติสรุป: ใช้ mean(), var(), sd(), และ summary()
ความน่าจะเป็น: ใช้ p-ชื่อการแจกแจง() เพื่อหา \( P(X \le x) \)
ควอนไทล์: ใช้ q-ชื่อการแจกแจง() เพื่อหาค่าที่ตรงกับความน่าจะเป็นที่กำหนด
พื้นที่หางด้านบน: ใช้ lower.tail = FALSE เพื่อหา \( P(X > x) \)
การแจกแจงปกติ: ต้องใช้ส่วนเบี่ยงเบนมาตรฐาน (\( \sigma \)) เสมอ ไม่ใช่ความแปรปรวน (\( \sigma^2 \))

ไม่ต้องกังวลถ้าคุณจำลำดับอาร์กิวเมนต์ของฟังก์ชันไม่ได้! คุณสามารถพิมพ์เครื่องหมายคำถามตามด้วยชื่อฟังก์ชัน (เช่น ?pbinom) ใน R เพื่อเปิดไฟล์ช่วยเหลือและดูว่าต้องใส่ค่าอะไรบ้างได้ตลอดเวลา