บทนำเรื่องการทดสอบสมมติฐานและช่วงความเชื่อมั่นใน R
ยินดีต้อนรับเข้าสู่เนื้อหาส่วนที่นำไปใช้งานจริงได้มากที่สุดส่วนหนึ่งของหลักสูตร CS1! ในการสอบ Paper A คุณอาจต้องใช้เวลาส่วนใหญ่ไปกับการคำนวณสถิติทดสอบด้วยมือและเปิดหาค่าในตารางสถิติ (Goldstein Tables) แต่ใน Paper B (ซึ่งเป็นการสอบด้วยคอมพิวเตอร์) ซอฟต์แวร์จะช่วยจัดการงานหนักเหล่านั้นให้คุณเอง หน้าที่ของคุณจะเปลี่ยนจากการ "คำนวณ" มาเป็นการ "ตีความ" แทน
ในบทนี้เราจะเน้นไปที่วิธีการใช้ R เพื่อทำการทดสอบสมมติฐาน (Hypothesis tests) และการสร้างช่วงความเชื่อมั่น (Confidence intervals) ซึ่งเป็นทักษะที่สำคัญมากสำหรับนักคณิตศาสตร์ประกันภัย เพราะข้อมูลในโลกแห่งความเป็นจริงนั้นไม่ค่อยจะ "สวยงามเหมือนในตำรา" และเกือบจะทุกครั้งจำเป็นต้องใช้ซอฟต์แวร์ในการวิเคราะห์ เราจะมาดูวิธีการอ่านผลลัพธ์จาก R, การตัดสินใจเกี่ยวกับสมมติฐานว่าง และการทำความเข้าใจช่วงของค่าที่พารามิเตอร์ที่แท้จริงน่าจะสถิตอยู่
หมายเหตุ: สำหรับใครที่ต้องการทบทวนวิธีการคำนวณสถิติเชิงพรรณนาเบื้องต้น เช่น ค่าเฉลี่ย หรือความแปรปรวน ก่อนที่จะเริ่มทำการทดสอบเหล่านี้ สามารถกลับไปดูได้ที่บท "ความน่าจะเป็น, ควอนไทล์ และสถิติเชิงพรรณนาใน R"
หัวใจสำคัญ: ค่า \(p\)-value
ในการสอบ Paper B ค่า \(p\)-value คือเพื่อนที่ดีที่สุดของคุณ ในขณะที่ Paper A มักจะกำหนดให้คุณต้องหาค่าวิกฤต (Critical value) แต่ผลลัพธ์จาก R ใน Paper B มักจะมีค่า \(p\)-value มาให้เสมอ
ค่า \(p\)-value คืออะไร? มันคือความน่าจะเป็นที่จะได้ผลลัพธ์ที่มีค่าสุดโต่งเท่ากับ (หรือมากกว่า) ค่าที่สังเกตได้ โดยสมมติว่าสมมติฐานว่าง (\(H_0\)) เป็นจริง
กฎเหล็กของการทดสอบ:
ถ้า \(p\)-value \( < \alpha \) (ระดับนัยสำคัญ ซึ่งปกติคือ 0.05) เราจะ ปฏิเสธ \(H_0\)
ถ้า \(p\)-value \( \ge \alpha \) เราจะ ไม่ปฏิเสธ \(H_0\)
คำเปรียบเทียบ: ลองนึกภาพว่าค่า \(p\)-value คือ "ความแข็งแกร่งของหลักฐาน" ที่ใช้คัดค้านสมมติฐานว่าง ยิ่งตัวเลขนี้มีค่าน้อยเท่าไหร่ ข้อมูลที่พบก็จะยิ่งดู "น่าประหลาดใจ" มากขึ้นเท่านั้นหาก \(H_0\) เป็นจริง ซึ่งทำให้เรามีแนวโน้มที่จะทิ้ง \(H_0\) ไปนั่นเอง
การทดสอบค่าเฉลี่ยด้วย t.test()
ฟังก์ชัน t.test() เปรียบเสมือน "มีดพับสวิส" ของฟังก์ชันทางสถิติใน R มันถูกใช้สำหรับการทดสอบที่เกี่ยวข้องกับ การแจกแจงปกติ (Normal distribution) เมื่อเราไม่ทราบค่าความแปรปรวน
1. One-Sample t-test (การทดสอบทีสำหรับกลุ่มตัวอย่างเดียว)
ใช้เพื่อทดสอบว่าค่าเฉลี่ยของกลุ่มข้อมูลชุดเดียว (\(\mu\)) เท่ากับค่าที่เจาะจงไว้ (\(\mu_0\)) หรือไม่
คำสั่ง R: t.test(data_vector, mu = mu_0)
2. Two-Sample t-test (การทดสอบทีสำหรับสองกลุ่มตัวอย่าง)
ใช้เพื่อเปรียบเทียบค่าเฉลี่ยของกลุ่มข้อมูลอิสระสองกลุ่ม (\(\mu_1\) และ \(\mu_2\))
คำสั่ง R: t.test(group1, group2)
โดยค่าเริ่มต้น R จะทำการทดสอบ Welch's t-test ซึ่งไม่ได้สมมติว่าความแปรปรวนของทั้งสองกลุ่มต้องเท่ากัน หากโจทย์สอบสั่งให้คุณสมมติว่าความแปรปรวนเท่ากัน คุณต้องเพิ่มอาร์กิวเมนต์ var.equal = TRUE ลงไป
3. Paired t-test (การทดสอบทีสำหรับกลุ่มตัวอย่างที่สัมพันธ์กัน)
ใช้เมื่อคุณมีการวัดผลสองครั้งในกลุ่มตัวอย่าง เดียวกัน (เช่น น้ำหนักก่อนและหลังการคุมอาหาร) นี่คือ การทดสอบสำหรับข้อมูลรายคู่ (paired data) ที่ระบุไว้ในหลักสูตร
คำสั่ง R: t.test(before_vector, after_vector, paired = TRUE)
การอ่านผลลัพธ์
เมื่อคุณรันคำสั่ง t.test() โปรแกรม R จะแสดงข้อความชุดหนึ่ง ให้คุณโฟกัสที่ 3 จุดนี้:
1. t: ค่าสถิติทดสอบที่คำนวณได้
2. p-value: นำค่านี้ไปเปรียบเทียบกับระดับนัยสำคัญของคุณ (เช่น 0.05)
3. 95 percent confidence interval: ช่วงของค่าที่เป็นไปได้สำหรับความแตกต่างของค่าเฉลี่ย ถ้าช่วงนี้ครอบคลุมค่า 0 มักจะหมายความว่าความแตกต่างนั้นไม่มีนัยสำคัญ!
สัดส่วนและอัตรา: Binomial และ Poisson
หลักสูตรกำหนดให้คุณต้องรับมือกับการทดสอบสำหรับความน่าจะเป็นแบบทวินาม (Binomial probabilities) และค่าเฉลี่ยแบบปัวซง (Poisson means) รวมถึง การประมาณด้วยการแจกแจงปกติ (Normal approximation) ด้วย
การทดสอบ Binomial
ในการทดสอบสัดส่วน (เช่น ความน่าจะเป็นที่ความเสียหายจะเกิดขึ้น) เราใช้ binom.test() สำหรับผลลัพธ์ที่แม่นยำ (Exact results) หรือ prop.test() สำหรับการใช้การประมาณด้วยการแจกแจงปกติ
ตัวอย่าง: หากคุณพบเหตุการณ์ที่สำเร็จ 30 ครั้งจากการทดลอง 100 ครั้ง และต้องการทดสอบว่า \(p = 0.25\) หรือไม่:
binom.test(x = 30, n = 100, p = 0.25)
การทดสอบ Poisson
ในการทดสอบอัตราของกระบวนการปัวซง (เช่น จำนวนอุบัติเหตุต่อปี) ให้ใช้ poisson.test()
คำสั่ง R: poisson.test(x = count_of_events, T = time_period, r = hypothesized_rate)
ประเด็นสำคัญ: สำหรับทั้งสองฟังก์ชัน R จะให้ค่า \(p\)-value และช่วงความเชื่อมั่นสำหรับพารามิเตอร์นั้นๆ (\(p\) หรือ \(\lambda\)) ให้ตรวจสอบเสมอว่า "ค่าที่ตั้งสมมติฐานไว้" จาก \(H_0\) ของคุณ ตกอยู่ในช่วงความเชื่อมั่นที่ให้มาหรือไม่
แนวทางแบบนอนพารามิเตอร์ (Non-Parametric): Permutation และ Bootstrap
บางครั้งเราก็ไม่อยากจะทึกทักเอาเองว่าข้อมูลของเรามีการแจกแจงแบบ Normal หรือ Poisson ที่สมบูรณ์แบบ หลักสูตรจึงเน้นเทคนิคสมัยใหม่สองอย่าง คือ Permutation tests และ Bootstrapping
1. วิธี Permutation
ใช้สำหรับ การทดสอบสมมติฐานแบบนอนพารามิเตอร์ แทนที่จะใช้สูตรสำเร็จรูปของการแจกแจง เราจะทำการ "สลับลำดับ" (shuffle) ป้ายกำกับข้อมูลหลายๆ ครั้ง เพื่อดูว่าผลลัพธ์ของเรามีโอกาสเกิดขึ้นโดยบังเอิญมากน้อยเพียงใด
ใน Paper B คุณอาจถูกขอให้เขียน for loop ง่ายๆ เพื่อสลับข้อมูลและคำนวณสถิติทดสอบซ้ำๆ เพื่อสร้างการแจกแจงของคุณขึ้นมาเอง
2. วิธี Bootstrap
วิธีนี้ใช้เพื่อให้ได้ ช่วงความเชื่อมั่น สำหรับตัวประมาณค่า (Estimator) ในกรณีที่ไม่ทราบสูตรมาตรฐานหรือการแจกแจงมีความซับซ้อน
หลักการทำงาน:
1. สุ่มตัวอย่างใหม่จากข้อมูลเดิม แบบใส่คืน (with replacement) หลายๆ ครั้ง (เช่น 1,000 ครั้ง)
2. คำนวณค่าสถิติ (เช่น ค่าเฉลี่ยหรือความแปรปรวน) สำหรับแต่ละกลุ่มตัวอย่างที่สุ่มใหม่
3. ค่าเปอร์เซ็นไทล์ที่ 2.5 และ 97.5 จากผลลัพธ์ทั้ง 1,000 ครั้งนั้น จะกลายเป็นช่วงความเชื่อมั่น 95% Bootstrap ของคุณ
รู้หรือไม่? คำว่า "Bootstrapping" มาจากสำนวนที่ว่า "to pull oneself up by one's bootstraps" (ดึงตัวเองขึ้นมาด้วยสายรองเท้าบู้ท) ซึ่งหมายถึงแนวคิดที่ว่าข้อมูลนั้น "หาการแจกแจงของตัวมันเอง" ได้โดยไม่ต้องพึ่งพาความช่วยเหลือจากภายนอก!
การตีความผลลัพธ์จากโมเดลการถดถอย (Regression)
แม้ว่าเรื่องการถดถอยจะมีบทแยกเฉพาะของมันเอง แต่คุณต้องสามารถระบุ การทดสอบ และ ช่วงความเชื่อมั่น ภายในส่วนสรุปผลของการถดถอยได้ (จากคำสั่ง summary(lm_model))
1. Standard Error: ใช้สำหรับสร้างช่วงความเชื่อมั่น (CI) ของค่าความชัน (\(\beta\))
2. t value: ค่าสถิติทดสอบสำหรับสมมติฐาน \(H_0: \beta = 0\)
3. Pr(>|t|): ค่า \(p\)-value สำหรับตัวแปรนั้นๆ หากค่านี้มีขนาดเล็ก แสดงว่าตัวแปรดังกล่าวเป็นตัวพยากรณ์ที่มีนัยสำคัญ
สำหรับ Generalised Linear Models (GLMs) คุณจะต้องดูที่ deviance และใช้ Pearson's chi-square test หรือ likelihood-ratio test เพื่อพิจารณาว่าโมเดลนั้นเหมาะสมกับข้อมูลดีพอหรือไม่
ข้อผิดพลาดที่พบบ่อยที่ควรระวัง
1. ตั้งค่า Alternative ผิด: โดยปกติ R จะตั้งค่าเป็นแบบ "two-sided" (สองทาง) หากสมมติฐานของคุณคือ "มากกว่า" (\(H_1: \mu > \mu_0\)) คุณ ต้อง ระบุ alternative = "greater" ในโค้ด R ไม่เช่นนั้นค่า \(p\)-value ของคุณจะผิดทันที!
2. ตีความช่วงความเชื่อมั่น (CI) ผิด: จำไว้ว่าช่วงความเชื่อมั่น 95% หมายความว่าหากเราทำการทดลองซ้ำหลายๆ ครั้ง ช่วงที่คำนวณได้ 95% ของทั้งหมดจะครอบคลุมค่าพารามิเตอร์ ที่แท้จริง มัน ไม่ได้ หมายความว่ามีความน่าจะเป็น 95% ที่พารามิเตอร์จะอยู่ในช่วง นี้โดยเฉพาะ (แม้ว่านี่จะเป็นความเข้าใจผิดที่เจอบ่อยมากก็ตาม!)
3. สับสนระหว่าง paired และ independent: ให้ถามตัวเองเสมอว่า: "ข้อมูลนี้เป็นคนละกลุ่มกัน (Independent) หรือเป็นกลุ่มเดียวกันที่วัดผลสองรอบ (Paired)?" การเลือกใช้ในฟังก์ชัน t.test() ผิดประเภทจะทำให้เสียคะแนนได้
สรุปสั้นๆ กันลืม
- p-value < 0.05: ผลลัพธ์มีนัยสำคัญ, ปฏิเสธ \(H_0\)
- t.test(): ใช้กับค่าเฉลี่ย (ข้อมูลแบบ Normal) ใช้ paired = TRUE สำหรับข้อมูลรายคู่
- binom.test() / prop.test(): ใช้กับสัดส่วน (ข้อมูลแบบ Binomial)
- poisson.test(): ใช้กับอัตรา (ข้อมูลแบบ Poisson)
- Bootstrap: การสุ่มใหม่แบบใส่คืนเพื่อให้ได้ช่วงความเชื่อมั่น (CIs)
- Permutation: การสลับป้ายกำกับข้อมูลเพื่อให้ได้ \(p\)-value สำหรับการทดสอบแบบนอนพารามิเตอร์
ถ้ารู้สึกว่าโค้ด R มันดูเยอะจนน่าตกใจในตอนแรก ก็ไม่ต้องกังวลนะ! ในการสอบ Paper B ปกติแล้วคุณจะสามารถเปิดดูไฟล์ Help ของ R ได้ (เช่น พิมพ์ ?t.test) ซึ่งมันจะช่วยเตือนคุณเองว่าต้องใส่อาร์กิวเมนต์อะไรบ้าง!