วิธีทำการทดสอบ anderson-darling ใน r
การทดสอบ Anderson-Darling คือการทดสอบความพอดีที่จะวัดว่าข้อมูลของคุณสอดคล้องกับการกระจายที่ระบุได้ดีเพียงใด การทดสอบนี้มักใช้เพื่อพิจารณาว่าข้อมูลของคุณเป็นไปตาม การแจกแจงแบบปกติ หรือไม่
การทดสอบประเภทนี้มีประโยชน์สำหรับการทดสอบภาวะปกติ ซึ่งเป็นสมมติฐานที่ใช้กันทั่วไปในการทดสอบทางสถิติหลายอย่าง รวมถึงการถดถอย การวิเคราะห์ความแปรปรวน การทดสอบที และอื่นๆ อีกมากมาย
ตัวอย่าง: การทดสอบ Anderson-Darling ใน R
ในการทำการทดสอบ Anderson-Darling ใน R เราสามารถใช้ฟังก์ชัน ad.test() ในไลบรารี nortest
รหัสต่อไปนี้แสดงวิธีดำเนินการทดสอบ AD เพื่อทดสอบว่าเวกเตอร์ 100 ค่าเป็นไปตามการแจกแจงแบบปกติหรือไม่:
#install (if not already installed) and load nortest library install.packages('nortest') library(nortest) #make this example reproducible set.seed(1) #defined vector of 100 values that are normally distributed x <- rnorm(100, 0, 1) #conduct Anderson-Darling Test to test for normality ad.test(x) # Anderson-Darling normality test # #data:x #A = 0.16021, p-value = 0.9471
การทดสอบนี้ส่งคืนค่าสองค่า:
A : สถิติการทดสอบ
p-value : ค่า p-value ที่สอดคล้องกันของสถิติการทดสอบ
สมมติฐานว่างของการทดสอบ AD คือข้อมูล เป็นไปตาม การแจกแจงแบบปกติ ดังนั้น หากค่า p ของเราสำหรับการทดสอบน้อยกว่าระดับนัยสำคัญของเรา (ตัวเลือกทั่วไปคือ 0.10, 0.05 และ 0.01) เราก็สามารถปฏิเสธสมมติฐานว่างและสรุปได้ว่าเรามีหลักฐานเพียงพอที่จะยืนยันว่าข้อมูลของเราไม่เป็นไปตาม วิถีปกติ การกระจาย.
ในกรณีนี้ ค่า p ของเราคือ 0.9471 เนื่องจากตัวเลขนี้ไม่ต่ำกว่าระดับนัยสำคัญของเรา (เช่น 0.05) เราจึงไม่มีหลักฐานเพียงพอที่จะปฏิเสธสมมติฐานว่าง พูดได้อย่างปลอดภัยว่าข้อมูลของเราเป็นไปตามการแจกแจงแบบปกติ ซึ่งสมเหตุสมผลแล้วเนื่องจากเราสร้างค่า 100 ค่าที่เป็นไปตามการแจกแจงแบบปกติโดยมีค่าเฉลี่ยเป็น 0 และค่าเบี่ยงเบนมาตรฐานเป็น 1 โดยใช้ฟังก์ชัน rnorm() ใน R
ที่เกี่ยวข้อง: คำแนะนำเกี่ยวกับ dnorm, pnorm, qnorm และ rnorm ใน R
สมมติว่าเราสร้างเวกเตอร์ 100 ค่าตามการแจกแจงแบบสม่ำเสมอระหว่าง 0 ถึง 1 เราสามารถทำการทดสอบ AD อีกครั้งเพื่อดูว่าข้อมูลนี้เป็นไปตามการแจกแจงแบบปกติหรือไม่:
#make this example reproducible set.seed(1) #defined vector of 100 values that are uniformly distributed x <- runif(100, 0, 1) #conduct Anderson-Darling Test to test for normality ad.test(x) # Anderson-Darling normality test # #data:x #A = 1.1472, p-value = 0.005086
สถิติการทดสอบ A ของเราเท่ากับ 1.1472 และค่า p ที่สอดคล้องกันเท่ากับ 0.005086 เนื่องจากค่า p ของเราน้อยกว่า 0.05 เราจึงสามารถปฏิเสธสมมติฐานว่างและสรุปได้ว่าเรามีหลักฐานเพียงพอที่จะบอกว่าข้อมูลนี้ไม่เป็นไปตามการแจกแจงแบบปกติ นี่คือผลลัพธ์ที่เราคาดหวังเนื่องจากเรารู้ว่าข้อมูลของเราเป็นไปตามการกระจายแบบสม่ำเสมอ
ทำการทดสอบ Anderson-Darling บนคอลัมน์ของกรอบข้อมูลใน R
นอกจากนี้เรายังสามารถทำการทดสอบ AD สำหรับคอลัมน์ที่ระบุของกรอบข้อมูลใน R ได้ ตัวอย่างเช่น พิจารณาชุดข้อมูล ม่านตา ที่ฝังไว้:
#view first six lines of iris dataset
head(iris)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa
สมมติว่าเราต้องการทราบว่าตัวแปร Petal.Width มีการแจกแจงตามปกติหรือไม่ ก่อนอื่นเราสามารถสร้างฮิสโตแกรมเพื่อแสดงภาพการกระจายตัวของค่าได้:
hist(iris$Petal.Width, col = 'steelblue', main = 'Distribution of Petal Widths', xlab = 'Petal Width')
ข้อมูลไม่ปรากฏว่ามีการกระจายตามปกติ เพื่อยืนยันสิ่งนี้ เราสามารถทำการทดสอบ AD เพื่อทดสอบอย่างเป็นทางการว่าข้อมูลมีการกระจายตามปกติหรือไม่:
#conduct Anderson-Darling Test to test for normality
ad.test(iris$Petal.Width)
# Anderson-Darling normality test
#
#data: iris$Petal.Width
#A = 5.1057, p-value = 1.125e-12
ค่า p ของการทดสอบน้อยกว่า 0.05 ดังนั้นเราจึงมีหลักฐานเพียงพอที่จะปฏิเสธสมมติฐานว่างและสรุปได้ว่า Petal.Width ไม่เป็นไปตามการแจกแจงแบบปกติ