บทสรุปนี้เป็นส่วนหนึ่งของโครงการ Super AI Engineer และเนื้อหาจาก อ.เปรม มหาวิทยาลัยขอนแก่น ต้องขอขอบคุณทางโครงการและอาจารย์เป็นอย่างสูงครับ
Data & Variable
ในการเก็บข้อมูลจะประกอบด้วย 2 อย่าง คือ
1. Subjects เช่น record,row
2. Variables เช่น Attribute,Feature,column

Variable จะแบ่งได้ 2 แบบ
1) scale คือ ข้อมูลตัวเลข
discrete จำนวนเต็ม เช่น จำนวนประชากร
continuous ข้อมูลแบบต่อเนื่อง เช่น ทศนิยม ค่าวัดต่างๆ
2) categorical คือ ข้อมูลแบบกลุ่ม
ordinal เป็นข้อมูลแบบมีลำดับ เช่น ระดับความพึงพอใจ
nominal เช่น ข้อมูล หมา,แมว ข้อมูลที่ไม่ได้เป็นลำดับ

ตัวอย่าง

ขั้นตอนทางสถิติหลักๆมี 2 แบบ
1. Descriptive Statistics(สถิติเชิงบรรยาย) คือ เป็นการอธิบายข้อมูลที่เก็บมาว่ามีลักษณะยังไง เช่น อธิบายในรูปแบบของความถี่ หรือค่าศูนย์กลาง อื่นๆ
2. Inferential Statistics(สถิติเชิงอนุมาน) มีสองหัวข้อย่อย การประมาณค่าของประชากร และการทดสอบสมมติฐานทางสถิติ

Populations and Samples
populations คือ หน่วยที่เราสนใจทั้งหมด เช่น นักศึกษาในมหาวิทยาลัยแห่งหนึ่งคือนักศึกษาทั้งหมดในมหาลัยนั้น ถ้าหาค่าเฉลี่ยของกลุ่มนี้ก็จะเรียกว่า population mean
samples คือ สุ่มเลือกตัวอย่างมา ถ้าหาค่าเฉลี่ยของกลุ่มนี้ก็จะเรียกว่า sample mean
การแจกแจงปกติ (Normal Distribution)
สำหรับทฤษฎีความน่าจะเป็น การแจกแจงปกติ (normal distribution) เป็นการแจกแจงความน่าจะเป็นของค่าของตัวแปรสุ่มที่เป็นค่าแบบต่อเนื่อง โดยที่ค่าของตัวแปรสุ่มมีแนวโน้มที่จะมีค่าอยู่ใกล้ ๆ กับค่า ๆ หนึ่ง (เรียกว่าค่าเฉลี่ย) กราฟแสดงค่าฟังก์ชันความหนาแน่น (probability density function) จะเป็นรูปคล้ายระฆังคว่ำ หรือเรียกว่า Gaussian function โดยค่าฟังก์ชันความหนาแน่นของการแจกแจงปกติ ได้แก่

จุดที่ x = μ คือ จุดที่ยอดสูงสุด
โดย x แทนตัวแปรสุ่ม พารามิเตอร์ μ แสดงค่าเฉลี่ยประชากร และ σ 2 คือค่าความแปรปรวน (variance) ซึ่งเป็นค่าที่ใช้บอกปริมาณการกระจายของการแจกแจง
การแจกแจงปกติมาตรฐาน (Standard Normal Distribution)
คือ การแจกแจงปกติที่มีค่า μ = 0 และ σ 2 = 1

สรุป normal distribution
การแจกแจงปกติเป็นการแจกแจงที่เด่นที่สุดในทางวิชาความน่าจะเป็นและสถิติศาสตร์ ซึ่งก็มาจากหลาย ๆ เหตุผล ซึ่งก็รวมถึงผลจากทฤษฎีบทขีดจํากัดกลาง (central limit theorem) ที่กล่าวว่า ภายใต้สภาพทั่ว ๆ ไปแล้ว ค่าเฉลี่ยจากการสุ่มค่าของตัวแปรสุ่มอิสระจากการแจกแจงใด ๆ (ที่มีค่าเฉลี่ยและค่าความแปรปรวนจำกัด) ถ้าจำนวนการสุ่มนั้นใหญ่พอ แล้วค่าเฉลี่ยนั้นจะมีการแจกแจงประมาณได้เป็นการแจกแจงปรกติ
การทดสอบสมมติฐาน (Hypothesis Testing)
ทำไมต้องทำ Hypothesis Testing ในความเป็นจริง เราไม่สามารถใช้ข้อมูลประชากรทั้งหมดได้ เนื่องมาจากค่าใช้จ่ายหรือใช้เวลานาน ดังนั้นจึงใช้วิธีการสถิติมาช่วยในการหาค่าประมาณ parameter ที่เราสนใจอยู่ และเราต้องมีการทดสอบสมมติฐานทางสถิติ
สมมติฐานที่เราตั้ง จะมี 2 ค่า คือ สมมติฐานหลัก H0 และสมมติฐานรอง Ha
*** ข้อสังเกต สมมติฐานหลัก คือ สมมติฐานที่เราทราบอยู่แล้ว สมมติฐานรองคือเหตุการณ์ใหม่ที่ต้องการทราบผล
ผลลัพท์ทั้งหมดที่เราจะสรุปผลจากสมมติฐานหลักและสมมติฐานรอง
type I error ปฏิเสธสมมติฐานหลัก แต่จริงๆแล้วสมมติฐานหลักเป็นจริง
type II error ยอมรับสมมติฐานหลัก แต่จริงๆแล้วสมมติฐานหลักเป็นเท็จ


ในการตัดสินใจหรือการยอมรับสมมติฐานใดๆ เราต้องใช้ข้อมูลที่เก็บมาเป็นตัวทดสอบว่าเราจะเชื่อหรือไม่เชื่อสมมติฐานนั้น
ตัวแปร
P(Type I Error) ความน่าจะเป็นที่จะเกิดเหตุการณ์ Type I Error จะเรียกว่า ⍺ หรือค่านัยสำคัญ
P(Type II Error) ความน่าจะเป็นที่จะเกิดเหตุการณ์ P(Type II Error) จะเรียกว่า β
power of the test ความน่าจะเป็นที่จะปฏิเสธสมมติฐานหลัก เมื่อกำหนดให้สมมติฐานรองเป็นจริง หรือ 1-β

การทดสอบสมมติฐานหลักเกี่ยวกับพารามิเตอร์ θ

หลักการตั้งสมมติฐาน

การทดสอบสมมติฐานแบบทางเดียว(One-tailed test)

การทดสอบแบบสองทาง (Two-tail test)

ค่าพี (P-Value)


สรุป p-value
เมื่อกำหนดระดับนัยสำคัญที่ยอมรับได้แล้ว นั่นคือค่า ⍺ เราจะใช้ค่า p-value ไปเปรียบเทียบเป็นเกณฑ์ตัดสินใจว่าจะยอมรับหรือปฏิเสธสมมติฐานหลัก
ถ้า p-value >= ⍺ ยอมรับสมมติฐานหลัก
ถ้า p-value < ⍺ ปฏิเสธสมมติฐานหลัก
*** ขั้นตอนการทดสอบสมมติฐาน

สรุปขั้นตอนการทดสอบสมมติฐาน
สมมติฐานหลักมีแบบเดียว สมมติฐานรองจะมีให้เลือกสองแบบ คือ แบบทางเดียว ก็จะมีแบบด้านซ้ายหรือด้านขวา(<,>) และแบบสองทาง
ระดับนัยสำคัญที่นิยมใช้ 0.05 ทางการแพทย์ใช้ 0.01
การทดสอบสมมติฐานของค่าเฉลี่ยประชากร 1 กลุ่ม
กรณีที่ 1 กำหนดให้ประชากรมีการแจกแจงแบบปกติ(normal distribution)
ทราบความแปรปรวนประชากร σ^2 (โดยปกติจะไม่ค่อยมีกรณีที่ทราบค่าความแปรปรวนประชากร)
สมมติฐาน ใช้ Z เป็นตัวสถิติทดสอบ หรือเรียกว่า Z test
กรณีที่ 2 กำหนดให้ประชากรมีการแจกแจงแบบปกติ(normal distribution)
ไม่ทราบความแปรปรวนประชากร σ^2
สมมติฐาน ใช้ T เป็นตัวสถิติทดสอบ หรือเรียกว่า t-test (ใช้บ่อย)
กรณีที่ 3 กำหนดให้ประชากรมีการแจกแจงแบบปกติ(normal distribution)
ไม่ทราบความแปรปรวนประชากร σ^2 แต่จำนวนตัวอย่าง n มีขนาดใหญ่พอ
ใช้ S^2 ประมาณ σ^2
ใช้ Z เป็นตัวสถิติทดสอบ
ตัวอย่าง

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#Example samp=[8.6,6.4,7.2,10.5,8.7,10.7,5.4,5.7,3.9,4.5,3.6,7.6,6.8,10.9,10.2,7.9,9.4,7.9] samp_mean=np.mean(samp) print('Sample mean is %f' % samp_mean) from scipy.stats import ttest_1samp # 1. Set assumption: mu=9.4 vs H1: mu < 9.4 (One-tail testing) mu0=9.4 tail=-1 # Valid value of tail are -1,1,2 # 2. Set level of significance: alpha = 0.01 # 3. Select a statistical test: t-test tval,pval =stats.ttest_1samp(samp,mu0) # 4. Draw the conclusion based on p-value. if tail==-1.0: pval=pval/2.0 print("p-value: %f" % pval) if (pval<alpha and tval <0) : print(" Reject the null hypothesis (H0)") else: print(" Fail to reject the null hypothesis (H0)") elif (tail==1.0) : pval=pval/2.0 print("p-value: %f" % pval) if (pval<alpha and tval > 0) : print(" Reject the null hypothesis (H0)") else: print(" Fail to reject the null hypothesis (H0)") else: print("p-value: %f" % pval) if pval<alpha: print(" Reject the null hypothesis (H0)") else: print(" Fail to reject the null hypothesis (H0)") |
แสดงผล
1 2 3 |
Sample mean is 7.550000 p-value: 0.001749 Reject the null hypothesis (H0) |
การทดสอบสมมติฐานของค่าเฉลี่ยประชากร 2 กลุ่ม แบ่งเป็น 2 กรณี
1. กรณีที่ทั้งสองกลุ่มเป็นอิสระต่อกัน



ตัวอย่าง

1 2 3 4 |
# Example acer=[81,86,71,77,80,81,75,72,98,74] hp=[89,65,69,64,57,58,55,57,65,68,72,71,69] stats.ttest_ind(acer,hp,equal_var=True) # independent t-test |
แสดงผล
1 |
Ttest_indResult(statistic=3.7272668623325207, pvalue=0.0012447850703981899) |
สมมติฐานหลัก คือ ผลต่างคะแนนนิยม acer และ hp ไม่แตกต่างกัน
เมื่อรันโปรแกรมจะได้ p-value มา ต้องกำหนดระดับนัยสำคัญ สมมติให้เป็น 0.01 จะได้ว่า p-value มีค่าน้อยกว่า ดังนั้นเราจะปฏิเสธสมมติฐานหลัก
สรุปได้ว่า คะแนนนิยม acer และ hp มีความแตกต่างกันอย่างมีนัยสำคัญทางสถิติ
ASSUMPTION CHECK
การแสดงการทดสอบเกี่ยวกับเงื่อนไขเบื้องต้นก่อนที่จะใช้ independence t-test
– Idependence ทั้งสองกลุ่มเป็นอิสระต่อกันหรือไม่
คะแนนที่ได้ acer และ hp เป็นอิสระต่อกัน เพราะจัดเก็บข้อมูลคนล่ะกลุ่ม
– Normality การแจกแจงแบบปกติ
ตั้งสมมติฐานหลัก คือ ประชากรมีการแจกแจงแบบปกติ สมมติฐานรอง คือ ประชากรไม่มีการแจกแจงแบบปกติ
จากโค้ดใช้ stats.shapiro ตามในโค้ด ถ้าค่านัยสำคัญ ⍺ คือ 0.01 จะได้ acer และ hp มีค่า p-value > ⍺ คือ ยอมรับสมมติฐานหลัก ทั้ง acer และ hp มีการแจกแจงแบบปกติ มีความสอดคล้องเงื่อนไขในเรื่องของ normality
– Homogeneity Of Varaince ความแปรปรวนของทั้งสองกลุ่มเท่ากันหรือไม่
ตั้งสมมติฐานหลัก คือ ความแปรปรวนของประชากรทั้งสองกลุ่มเท่ากัน สมมติฐานรองความแปรปรวนของประชากรทั้งสองกลุ่มไม่เท่ากัน จากโค้ดจะใช้ stats.levene จะได้ p-value ออกมา พิจารณาเช่นเดิม จะได้ความแปรปรวนของทั้งสองกลุ่มเท่ากัน

2. กรณีที่ทั้งสองกลุ่มไม่เป็นอิสระต่อกัน


ส่วนใหญ่เป็นการทดสอบใน sample เดียวกัน แต่มีการทำก่อนและหลังเพื่อเปรียบเทียบก่อนทำและหลังทำว่ามีการเปลี่ยนแปลงเกิดขึ้นหรือไม่ เช่น กรณีกินยาลดความอ้วน แล้วดูผลต่างของน้ำหนัก คือ ค่า D โดยจะทดสอบค่า D แทน ใช้ t-test
ตัวอย่าง

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# Example from scipy import stats import numpy as np #samp=[8.6,6.4,7.2,10.5,8.7,10.7,5.4,5.7,3.9,4.5,3.6,7.6,6.8,10.9,10.2,7.9,9.4,7.9] samp = [3,0,5,3,9,1,6,5,3,5] samp_mean=np.mean(samp) print('Sample mean is %f' % samp_mean) from scipy.stats import ttest_1samp # 1. Set assumption: mu=0 vs H1: mu > 0 (One-tail testing) Mu_D=0 # สมมติฐานหลัก tail=1 # Valid value of tail are -1,1,2 # 2. Set level of significance: alpha = 0.01 # ระดับนัยสำคัญ # 3. Select a statistical test: t-test tval,pval =stats.ttest_1samp(samp,Mu_D) print('tval :',tval) # 4. Draw the conclusion based on p-value. if tail==-1.0: pval=pval/2.0 print("p-value: %.5f" % pval) if (pval<alpha and tval <0) : print(" Reject the null hypothesis (H0)") else: print(" Fail to reject the null hypothesis (H0)") elif (tail==1.0) : pval=pval/2.0 print("p-value: %.5f" % pval) if (pval<alpha and tval > 0) : print(" Reject the null hypothesis (H0)") else: print(" Fail to reject the null hypothesis (H0)") else: print("p-value: %.5f" % pval) if pval<alpha: print(" Reject the null hypothesis (H0)") else: print(" Fail to reject the null hypothesis (H0)") |
แสดงผล
1 2 3 4 |
Sample mean is 4.000000 tval : 4.898979485566356 p-value: 0.00042 Reject the null hypothesis (H0) |
QUIZ

ตอบ C)

ตอบ C)

ตอบ B)
4