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


การทดสอบ Kolmogorov-Smirnov ใช้เพื่อทดสอบว่าตัวอย่างมาจากการกระจายตัวที่แน่นอนหรือไม่

หากต้องการทำการทดสอบ Kolmogorov-Smirnov ใน Python เราสามารถใช้ scipy.stats.kstest() สำหรับการทดสอบแบบหนึ่งตัวอย่างหรือ scipy.stats.ks_2samp() สำหรับการทดสอบแบบสองตัวอย่าง

บทช่วยสอนนี้แสดงตัวอย่างวิธีใช้งานแต่ละฟังก์ชันในทางปฏิบัติ

ตัวอย่างที่ 1: ตัวอย่างการทดสอบ Kolmogorov-Smirnov

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

 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)

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

 from scipy.stats import kstest

#perform Kolmogorov-Smirnov test
kstest(data, ' norm ')

KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)

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

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

ตัวอย่างที่ 2: การทดสอบ Kolmogorov-Smirnov สองตัวอย่าง

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

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

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

#generate two datasets
data1 = randn(100)
data2 = lognormal(3, 1, 100)

รหัสต่อไปนี้แสดงวิธีดำเนินการทดสอบ Kolmogorov-Smirnov กับตัวอย่างทั้งสองนี้เพื่อตรวจสอบว่ามาจากการแจกแจงแบบเดียวกันหรือไม่:

 from scipy.stats import ks_2samp

#perform Kolmogorov-Smirnov test
ks_2samp(data1, data2)

KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)

จากผลลัพธ์เราจะเห็นว่าสถิติการทดสอบคือ 0.99 และค่า p ที่สอดคล้องกันคือ 4.4175e-57 เนื่องจากค่า p น้อยกว่า 0.05 เราจึงปฏิเสธสมมติฐานว่าง เรามีหลักฐานเพียงพอที่จะบอกว่าชุดข้อมูลตัวอย่างทั้งสองชุดไม่ได้มาจากการแจกแจงแบบเดียวกัน

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

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

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

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

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