ข้อมูลแบบปกติ

การออกแบบการทดลองด้วย Python

James Chapman

Curriculum Manager, DataCamp

การแจกแจงแบบปกติ

 

  • รูปร่าง 'โค้งระฆัง' ที่คุ้นเคย
  • เกี่ยวข้องกับการคำนวณ z-score

$$ {z} = \frac{x-\mu}{\sigma}$$

  • ค่าเฉลี่ย = 0, ส่วนเบี่ยงเบนมาตรฐาน = 1
    • 'จุดนี้อยู่ห่างจากค่าเฉลี่ยกี่ส่วนเบี่ยงเบนมาตรฐาน?'
    • 'ความน่าจะเป็นในการได้คะแนนนี้คือเท่าใด?'

 

กราฟโค้งระฆังทั่วไป เส้นโค้งสีน้ำเงินบนพื้นหลังสีขาว

การออกแบบการทดลองด้วย Python

ข้อมูลแบบปกติและการทดสอบทางสถิติ

 

  • จำเป็นสำหรับการทดสอบแบบ parametric
  • Nonparametric tests: ไม่ต้องสมมติว่าข้อมูลแบบปกติ

 

กราฟโค้งระฆังทั่วไป เส้นโค้งสีน้ำเงินบนพื้นหลังสีขาว

การออกแบบการทดลองด้วย Python

การแจกแจงปกติ, Z และ alpha

 

  • เชื่อมโยงสำคัญกับระดับนัยสำคัญ ($\alpha$)
  • เปรียบเทียบ p-value กับ $\alpha$
  • ความน่าจะเป็นของความผิดพลาดแบบที่ 1

 

การแจกแจงแบบปกติโดยมีพื้นที่ขนาดเล็กที่หางทั้งสองด้านแรเงาด้วยสีดำ

การออกแบบการทดลองด้วย Python

การแสดงภาพข้อมูลแบบปกติ

 

sns.displot(data=salaries,
            x='salary',
            kind="kde")
plt.show()

 

การแจกแจงแบบโค้งระฆังที่สูงและแคบกว่าแบบทั่วไป แต่ยังคงมีรูปร่างโค้งระฆังลักษณะเดิม

การออกแบบการทดลองด้วย Python

QQ plots

QQ plot: เปรียบเทียบข้อมูลกับการแจกแจงที่กำหนด

from statsmodels.graphics.gofplots import qqplot
from scipy.stats.distributions import norm
qqplot(salaries['salary'], 
       line='s', 
       dist=norm)
plt.show()
  • อุดมคติ: จุดกระจายชิดเส้น
  • ไม่ดี: จุดโป่งออกที่ปลายทั้งสองด้าน

 

QQ plot ที่จุดส่วนใหญ่กระจายชิดเส้น 45 องศาตรงกลาง

QQ plot ที่จุดตรงกลางชิดเส้น 45 องศา แต่ที่ปลายทั้งสองด้านจุดโค้งเข้าด้านใน

การออกแบบการทดลองด้วย Python

การทดสอบความเป็นปกติ

 

  • Shapiro-Wilk (เหมาะสำหรับชุดข้อมูลขนาดเล็ก)
  • D'Agostino $K^2$ (ใช้ kurtosis และ skewness)
  • Anderson-Darling (คืนค่าเป็นรายการ)

 

$H_0$ = "ข้อมูลถูกสุ่มมาจากการแจกแจงแบบปกติ"

การออกแบบการทดลองด้วย Python

การทดสอบ Shapiro-Wilk

 

from scipy.stats import shapiro
alpha = 0.05

stat, p = shapiro(salaries['salary']) print(f"p: {round(p,4)} test stat: {round(stat,4)}")
p: 0.8293 test stat: 0.9956
  • p > alpha
    • ไม่ปฏิเสธ $H_0$ → น่าจะเป็นการแจกแจงแบบปกติ
การออกแบบการทดลองด้วย Python

การทดสอบ Anderson-Darling

from scipy.stats import anderson
result = anderson(x=salaries['salary'], dist="norm")
print(round(result.statistic,4))
print(result.significance_level)
print(result.critical_values)
0.2748
[15.  10.   5.   2.5  1. ]
[0.572 0.651 0.781 0.911 1.084]
  • 0.2748 < [0.572 0.651 0.781 0.911 1.084]
    • ไม่ปฏิเสธ $H_0$ → น่าจะเป็นการแจกแจงแบบปกติ
การออกแบบการทดลองด้วย Python

มาฝึกกันเถอะ!

การออกแบบการทดลองด้วย Python

Preparing Video For Download...