วิธีทำการทดสอบ anderson-darling ใน python
การทดสอบ Anderson-Darling คือการทดสอบความพอดีที่จะวัดว่าข้อมูลของคุณสอดคล้องกับการกระจายที่ระบุได้ดีเพียงใด
การทดสอบนี้มักใช้เพื่อพิจารณาว่าข้อมูลของคุณเป็นไปตาม การแจกแจงแบบปกติ หรือไม่
การทดสอบประเภทนี้มีประโยชน์สำหรับการทดสอบภาวะปกติ ซึ่งเป็นสมมติฐานที่ใช้กันทั่วไปในการทดสอบทางสถิติหลายอย่าง รวมถึง การถดถอย การวิเคราะห์ ความแปรปรวน การทดสอบที และอื่นๆ อีกมากมาย
ตัวอย่าง: การทดสอบ Anderson-Darling ใน Python
ในการทำการทดสอบ Anderson-Darling ใน Python เราสามารถใช้ ฟังก์ชัน anderson() จากไลบรารี scipy.stats ซึ่งใช้ไวยากรณ์ต่อไปนี้:
แอนเดอร์สัน(x, dist=’norm’)
ทอง:
- x : ตารางข้อมูลตัวอย่าง
- dist : ประเภทของการกระจายที่จะทดสอบ ค่าเริ่มต้นคือ “มาตรฐาน” แต่คุณสามารถระบุ “expon” หรือ “logistics” ได้เช่นกัน
ตัวอย่างเช่น ต่อไปนี้เป็นวิธีดำเนินการทดสอบ Anderson-Darling กับตัวอย่างที่มีตัวแปรสุ่มแบบกระจายแบบปกติ 50 ตัว:
import numpy as np #create data np.random.seed(0) data = np.random.normal(size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =0.15006999533388665, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
สถิติการทดสอบคือ 0.150 เราสามารถเปรียบเทียบค่านี้กับค่าวิกฤตแต่ละค่าที่สอดคล้องกับระดับนัยสำคัญแต่ละระดับเพื่อดูว่าผลการทดสอบมีนัยสำคัญหรือไม่ ตัวอย่างเช่น:
- ค่าวิกฤตสำหรับ α = 0.01 คือ 1.021 เนื่องจากสถิติการทดสอบ (0.150) ไม่มากกว่าค่าวิกฤตนี้ ผลลัพธ์จึงไม่มีนัยสำคัญที่ระดับนัยสำคัญ 0.01
- ค่าวิกฤตสำหรับ α = 0.025 คือ 0.858 เนื่องจากสถิติการทดสอบ (0.150) ไม่มากกว่าค่าวิกฤตนี้ ผลลัพธ์จึงไม่มีนัยสำคัญที่ระดับนัยสำคัญ 0.025
และอื่นๆ
เราจะเห็นว่าผลการทดสอบไม่มีนัยสำคัญในระดับนัยสำคัญใดๆ ซึ่งหมายความว่าเราจะไม่ปฏิเสธสมมติฐานว่างของการทดสอบ ดังนั้นเราจึงไม่มีหลักฐานเพียงพอที่จะอ้างว่าข้อมูลตัวอย่างไม่ได้กระจายตามปกติ
ผลลัพธ์นี้ไม่ควรน่าแปลกใจเนื่องจากเราใช้ฟังก์ชัน np.rand.normal() เพื่อสร้างตัวอย่างค่าที่แจกแจงแบบปกติ 50 ค่า
ให้พิจารณาว่าเราทำการทดสอบแอนเดอร์สัน-ดาร์ลิ่งกับตัวอย่างจำนวนเต็มสุ่ม 50 จำนวนระหว่าง 0 ถึง 10 หรือไม่:
import numpy as np #create data np.random.seed(0) data = np.random.randint(0, 10, size=50) #perform Anderson-Darling Test from scipy.stats import anderson anderson(data) AndersonResult( statistic =1.1926463985076836, critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]), significance_level =array([15. , 10. , 5. , 2.5, 1. ]))
สถิติการทดสอบคือ 1.1926 เราสามารถเปรียบเทียบค่านี้กับค่าวิกฤตแต่ละค่าที่สอดคล้องกับระดับนัยสำคัญแต่ละระดับเพื่อดูว่าผลการทดสอบมีนัยสำคัญหรือไม่ ตัวอย่างเช่น:
- ค่าวิกฤตสำหรับ α = 0.01 คือ 1.021 เนื่องจากสถิติการทดสอบ (1.1926) มากกว่าค่าวิกฤตนี้ ผลลัพธ์จึงมีนัยสำคัญที่ระดับนัยสำคัญ 0.01
- ค่าวิกฤตสำหรับ α = 0.025 คือ 0.858 เนื่องจากสถิติการทดสอบ (1.1926) มากกว่าค่าวิกฤตนี้ ผลลัพธ์จึงมีนัยสำคัญที่ระดับนัยสำคัญ 0.025
และอื่นๆ
เราจะเห็นว่าผลการทดสอบมีนัยสำคัญในแต่ละระดับนัยสำคัญ ซึ่งหมายความว่าเราจะปฏิเสธสมมติฐานว่างของการทดสอบไม่ว่าเราจะเลือกใช้ระดับนัยสำคัญใดก็ตาม ดังนั้นเราจึงมีหลักฐานเพียงพอที่จะบอกว่าข้อมูลตัวอย่างไม่ได้กระจายตามปกติ
ผลลัพธ์นี้ก็ไม่น่าแปลกใจเช่นกัน เนื่องจากเราใช้ฟังก์ชัน np.rand.randint() เพื่อสร้างตัวอย่างจำนวนเต็มสุ่ม 50 จำนวนระหว่าง 0 ถึง 10 ซึ่งไม่น่าจะเป็นไปตามการแจกแจงแบบปกติ
คุณสามารถค้นหาบทช่วยสอน Python เพิ่มเติมได้ ที่นี่