วิธีทำการทดสอบ 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 ไม่เป็นไปตามการแจกแจงแบบปกติ

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

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