วิธีทำการทดสอบ shapiro-wilk ใน python


การทดสอบชาปิโร-วิลค์ เป็นการทดสอบภาวะปกติ ใช้เพื่อพิจารณาว่าตัวอย่างมาจาก การแจกแจงแบบปกติ หรือไม่

ในการทำการทดสอบ Shapiro-Wilk ใน Python เราสามารถใช้ฟังก์ชัน scipy.stats.shapiro() ซึ่งใช้ไวยากรณ์ต่อไปนี้:

scipy.stats.shapiro(x)

ทอง:

  • x: ตารางข้อมูลตัวอย่าง

ฟังก์ชันนี้ส่งคืนสถิติการทดสอบและค่า p ที่สอดคล้องกัน

หากค่า p ต่ำกว่าระดับนัยสำคัญที่กำหนด เราก็มีหลักฐานเพียงพอที่จะบอกว่าข้อมูลตัวอย่างไม่ได้มาจากการแจกแจงแบบปกติ

บทช่วยสอนนี้แสดงตัวอย่างวิธีใช้คุณสมบัตินี้ในทางปฏิบัติ

ตัวอย่างที่ 1: การทดสอบชาปิโร-วิลค์กับข้อมูลที่แจกแจงแบบปกติ

สมมติว่าเรามีข้อมูลตัวอย่างต่อไปนี้:

 from numpy.random import seed
from numpy.random import randn

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 random values that follow a standard normal distribution
data = randn(100)

รหัสต่อไปนี้แสดงวิธีการทดสอบ Shapiro-Wilk กับตัวอย่างค่าข้อมูล 100 ค่านี้เพื่อตรวจสอบว่ามาจากการแจกแจงแบบปกติหรือไม่:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)

จากผลลัพธ์เราจะเห็นว่าสถิติการทดสอบคือ 0.9927 และค่า p ที่สอดคล้องกันคือ 0.8689

เนื่องจากค่า p ไม่น้อยกว่า 0.05 เราจึงไม่สามารถปฏิเสธสมมติฐานว่างได้ เราไม่มีหลักฐานเพียงพอที่จะบอกว่าข้อมูลตัวอย่างไม่ได้มาจากการแจกแจงแบบปกติ

ผลลัพธ์นี้ไม่น่าประหลาดใจเนื่องจากเราสร้างข้อมูลตัวอย่างโดยใช้ฟังก์ชัน randn() ซึ่งสร้างค่าสุ่มที่เป็นไปตามการแจกแจงแบบปกติมาตรฐาน

ตัวอย่างที่ 2: การทดสอบชาปิโร-วิลค์กับข้อมูลที่ไม่กระจายตามปกติ

ตอนนี้ สมมติว่าเรามีข้อมูลตัวอย่างต่อไปนี้:

 from numpy.random import seed
from numpy.random import fish

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 values that follows a Poisson distribution with mean=5
data = fish(5, 100)

รหัสต่อไปนี้แสดงวิธีการทดสอบ Shapiro-Wilk กับตัวอย่างค่าข้อมูล 100 ค่านี้เพื่อตรวจสอบว่ามาจากการแจกแจงแบบปกติหรือไม่:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)

จากผลลัพธ์เราจะเห็นว่าสถิติการทดสอบคือ 0.9582 และค่า p ที่สอดคล้องกันคือ 0.00299

เนื่องจากค่า p น้อยกว่า 0.05 เราจึงปฏิเสธสมมติฐานว่าง เรามีหลักฐานเพียงพอที่จะบอกว่าข้อมูลตัวอย่างไม่ได้มาจากการแจกแจงแบบปกติ

ผลลัพธ์นี้ก็ไม่น่าแปลกใจเนื่องจากเราสร้างข้อมูลตัวอย่างโดยใช้ฟังก์ชัน Poisson() ซึ่งสร้างค่าสุ่มตาม การแจกแจงแบบปัวซอง

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทดสอบภาวะปกติอื่นๆ ในซอฟต์แวร์ทางสถิติต่างๆ:

วิธีทำการทดสอบ Shapiro-Wilk ใน R
วิธีทำการทดสอบ Anderson-Darling ใน Python
วิธีทำการทดสอบ Kolmogorov-Smirnov ใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *