Monday, April 10, 2017

หัดทำ Central Limit Theorem ด้วยโปรแกรม Excel ง่ายอะไรเบอร์นี้

CLT คือหัวใจสำคัญของการทำงานสถิติแบบ inference เลย




วันนี้มาลองทำ central limit theorem หนึ่งในทฤษฏี holy pillar ของนักสถิติไปพร้อมกับเรานะครับ แอดชอบมากเลยเวลาสอนเรื่องนี้ สนุก ฮ่าๆ นักสถิติใช้ CLT ในการทำงานกับตัวแปรสุ่มที่เราไม่รู้ว่า distribution จริงๆของมันเป็นอย่างไร CLT ยังมีความสัมพันธ์กับสถิติอื่นๆที่มี assumption เรื่อง normal distribution อีกด้วย (หรือที่ภาษาง่ายๆเรียกว่า bell curve, ชื่อทางการอีกอันคือ Gaussian)

ถ้าวันนี้เราเข้าใจ CLT ชีวิตเรากับการเรียนสถิติเบื้องต้น และการทำ inference จะมีเหตุมีผลขึ้นอีกเยอะเลย มาเริ่มกันที่นิยามของทฤษฏีนี้กันก่อนดีกว่า แล้วเด๋วเราจะไปลองทำใน Excel ด้วยกันนะครับ
sample statistics ที่เราคำนวณได้จากการสุ่มซ้ำจะมีการกระจายตัวใกล้เคียงกับ normal distribution เสมอ
โดย sample statistics ในนิยามที่กล่าวข้างต้นคือค่าสถิติที่เราทำการ estimate ขึ้นมา เช่น ค่าเฉลี่ย ร้อยละ ค่า odds ratio หรือแม้แต่ regression coefficient ถ้าเราสุ่มซ้ำ 100 รอบ 1000 รอบแล้วเอาค่าสถิติที่คำนวณได้จากการสุ่มแต่ละครั้ง (expected values with finite variance) มาสร้างกราฟ histogram เพื่อดู distribution จะเห็นว่ากราฟของเราจะออกมา approximately normal เสมอเลย 👊

มันเจ๋งอะไรเบอร์นี้ !!

หลักการของ CLT บอกเราว่าค่าทางสถิติทั้งหมดเป็นค่า random (p-value ก็เหมือนกัน) ถ้าวันนี้เราสุ่มตัวอย่างซ้ำๆ ค่าทั้งหมดที่เรา estimate ขึ้นมาจะเปลี่ยนไปเรื่อยๆ แต่ว่าอยู่บน distribution ที่เราพอจะประมาณค่าได้ ในทฤษฏีของ CLT จะยึดกับ normal/ Gaussian เป็นหลัก

ตรงนี้สำคัญมากถ้าอยากจะ apply CLT ในการวิเคราะห์ของเรา เงื่อนไขสองข้อที่จำเป็นต้อง hold ไว้เสมอถ้าอยากให้ทฤษฏีนี้เกิดขึ้นได้จริง

1. กลุ่มตัวอย่างต้องใหญ่พอ หนังสือหลายเล่มบอกว่า sample size ที่ดีคือ n => 30 ขึ้นไป แต่ในกรณีที่ population distribution เป็นแบบ normal อยู่แล้ว sample size ที่เราสุ่มมาอาจจะน้อยกว่านี้ก็ได้ แต่เราแนะนำว่าเก็บให้เยอะไว้ก่อนดีกว่าเนอะ

2. ใช้ random sampling ในการสุ่มตัวอย่าง ในทางสถิติเราเรียกตัวอย่างที่สุ่มแบบนี้ว่า i.i.d หรือที่ย่อมาจาก independent and identically distributed

ง่ายอะไรเบอร์นี้ ถึงแม้ว่าเงื่อนไขจะดูง่าย แต่การจะ derive ให้ได้มาซึ่งสูตรของ CLT ก็ไม่ง่ายเลย กราบขอบคุณผู้คิดค้นทฤษฏีอย่างมากคร้าบ โดยคนที่คิดเวอร์ชั่นแรกของ CLT ขึ้นมาชื่อว่า Abraham de Moivre นักคณิตศาสตร์ชาวฝรั่งเศสในปี 1733

อีก 44 ปีต่อมา Carl Friedrich Gauss นักคณิตศาสตร์ชาวเยอรมันเป็นอีกหนึ่งคนที่มาต่อยอดทฤษฏีนี้และเป็นรากฐานสำคัญที่นักสถิติต่อยอดกันมา จนเข้าสู่ final form ของทฤษฏีนี้ในปี 1935 ที่เงื่อนไขต่างๆของโมเดลนี้เริ่มชัดเจนมากขึ้น โดยชื่อ central limit theorem นี้ถูกตั้งขึ้นโดย George Polya นักคณิตศาสตร์ชาวฮังกาเรียน คนนี้ก็เก่งและดังมากเหมือนกัน

พอเข้าใจถึงนิยามและที่มาของ central limit theorem กันแล้วเนอะ ต่อไปมาลองทำพร้อมๆกันใน Excel ได้เลยฮะ สามารถดาวน์โหลด file ตัวอย่างได้ ที่นี่ เลยครับ อ่านวิธี set up simulation ด้านล่างได้เลยนะครับ 😆
ใน Excel เราจะใช้ function =RANDBETWEEN(1,10) ในการสุ่มเลข 1, 2, 3, ..., 10 ใน cell B2:AE501
อันนี้ sheet SIMULATION นะครับ ที่เราใช้สุ่มตัวอย่าง n=30 (columns) ทำซ้ำ 500 รอบ (rows) นะครับ กด F9 รัวๆตัวเลขจะเปลี่ยนไปเรื่อยๆนะ


การ set up เพื่อ simulate CLT ง่ายมากๆเลยในโปรแกรม Excel โดย column B1:AE30 คือจำนวนตัวอย่างตั้งแต่คนที่ 1-30 เรามี 30 column (n=30) นะครับ ส่วน row A2:A501 คือการสุ่มตัวอย่างซ้ำทั้งหมด 500 รอบ

ส่วน column AF คือการใช้สูตรหาค่าเฉลี่ยปกติเลย ตัวอย่างสูตรใน cell AF2 =AVERAGE(B2:AE2) แล้วก๊อปปี้สูตรลงไปข้างล่างสุดได้เลยครับ

ใน cell AH3:AI4 แค่ผูกสูตร MIN(..) กับ MAX(..) ของค่า mean ทั้ง 500 ค่าที่เราสุ่มออกมาเพื่อดูว่าช่วงมันวิ่งอยู่ในช่วงไหน เราพบว่าพอทำ simulation ไปหลายๆรอบ ค่าไม่เคยต่ำกว่า 3.5 เลยและไม่เคยสูงกว่า 8.0 เหมือนกัน เราเลยใช้สองค่านี้ในการสร้าง histogram

สำหรับ Excel เวอร์ชั่นต่ำกว่า 2016 ที่ยังไม่สามารถ plot histogram ได้โดยตรง สามารถใช้สูตร FREQUENCY สร้างกราฟนี้ได้ไม่ยากเลย โดยการกำหนดค่า bin ก่อนใน cell AK4:AK13 แล้วใช้เมาส์ลากคลุม cell AL4:AL13 แล้วพิมสูตร =FREQUENCY(AF:AF, AK4:AK13) แล้วกด ctrl + shift + enter พร้อมกัน เพื่อสร้างสูตร array formula (ถ้ากด enter เฉยๆสูตรมันจะผิดน๊า) ลองดูนะครับ

เสร็จแล้วเราก็แค่ลากคลุม cell AK3:AL13 เอาไว้ แล้วกด tab INSERT เพื่อสร้าง bar chart ปกติได้เลยครับ ปรับแกนนอนให้เป็นค่า bin เนอะ แล้วเราจะได้กราฟอย่างที่เห็นใน sheet "HISTOGRAM" ครับ

เวลาอยากให้ Excel มัน generate random number 1-10 ให้เราใหม่ แค่กด F9 รัวๆ โปรแกรมก็จะเปลี่ยนค่า random ไปเรื่อยๆ ถ้าเกิดเรานั่งดู histogram ที่เราสร้างขึ้นมา กด F9 รัวๆ เพลินมากๆเลยครับ 😊

สูตรใน cell AK4:AL13 เป็น array formula นะครับ เวลาพิมพ์สูตร FREQUENCY เสร็จให้เรากดปุ่ม ctrl + shift + enter นะครับ จะได้สูตรที่ถูกต้องน๊า


และนี่คือ central limit theorem ครับทุกคน ทฤษฏีที่เป็นหัวใจสำคัญของการทำ inference เลย เพราะในชีวิตจริงเราสุ่มตัวอย่างแค่ครั้งเดียว และใช้ CLT มา apply กับค่าสถิติที่เราคำนวณได้ เพื่อสร้างช่วงความเชื่อมั่นนั่นเองครับ

คร่าวๆคือ 95% ของค่าสถิติของเราจะวิ่งอยู่ระหว่าง +/- 2 standard deviation from the mean ตามหลักของ Gaussian และ CLT นี่เองเป็นทฤษฏีที่ Jerzy Neyman นำมาใช้สร้าง confidence interval ในปี 1937 นั่นเองฮะ ลองเก็บเทคนิคนี้ไว้ใช้ดูนะครับ อ่านจบแล้ว หวังว่าทุกคนจะเข้าใจมากขึ้นเนอะ ✌

ถ้าใครอยากเรียนให้ลึก และซึ้งกว่านี้ลองดูวีดีโอนี้ เรียนฟรีเลยบน Khan Academy นะครับ ลิ้ง

ขอบคุณที่อ่านจนจบครับ #DataRockie #IdeasAreBulletproof


Central Limit Theorem การสุ่มตัวอย่างแบบ random และค่าสถิติที่กระจายตัวแบบ approximately normal


อ้างอิง
https://en.wikipedia.org/wiki/Central_limit_theorem
https://www.johndcook.com/blog/2010/01/05/how-the-central-limit-theorem-began/

No comments:

Post a Comment