Jak wykonać test andersona-darlinga w r


Test Andersona-Darlinga to test dobroci dopasowania, który mierzy, jak dobrze dane pasują do określonego rozkładu. Ten test jest najczęściej używany do określenia, czy dane mają rozkład normalny .

Ten typ testu jest przydatny do testowania normalności, co jest powszechnie stosowanym założeniem w wielu testach statystycznych, w tym w regresji, ANOVA, testach t i wielu innych.

Przykład: test Andersona-Darlinga w R

Aby wykonać test Andersona-Darlinga w R, możemy użyć funkcji ad.test() z biblioteki nortest .

Poniższy kod ilustruje sposób przeprowadzenia testu AD w celu sprawdzenia, czy wektor 100 wartości ma rozkład normalny:

 #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

Ten test zwraca dwie wartości:

Odp .: statystyka testowa.

wartość p : odpowiadająca wartość p statystyki testowej.

Hipotezą zerową testu AD jest to, że dane mają rozkład normalny. Zatem, jeśli nasza wartość p w teście jest mniejsza niż nasz poziom istotności (najczęściej wybierane wartości to 0,10, 0,05 i 0,01), wówczas możemy odrzucić hipotezę zerową i stwierdzić, że mamy wystarczające dowody, aby stwierdzić, że nasze dane nie są zgodne z normalna trajektoria. dystrybucja.

W tym przypadku nasza wartość p wynosi 0,9471. Ponieważ liczba ta nie jest niższa od naszego poziomu istotności (powiedzmy 0,05), nie mamy wystarczających dowodów, aby odrzucić hipotezę zerową. Można śmiało powiedzieć, że nasze dane mają rozkład normalny, co ma sens, biorąc pod uwagę, że wygenerowaliśmy 100 wartości, które mają rozkład normalny ze średnią 0 i odchyleniem standardowym 1 za pomocą funkcji rnorm() w R.

Powiązane: Przewodnik po dnorm, pnorm, qnorm i rnorm w R

Zamiast tego załóżmy, że generujemy wektor 100 wartości o równomiernym rozkładzie od 0 do 1. Możemy ponownie uruchomić test AD, aby sprawdzić, czy te dane mają rozkład normalny:

 #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

Nasza statystyka testowa A wynosi 1,1472, a odpowiadająca jej wartość p wynosi 0,005086. Ponieważ nasza wartość p jest mniejsza niż 0,05, możemy odrzucić hipotezę zerową i stwierdzić, że mamy wystarczające dowody, aby stwierdzić, że dane te nie mają rozkładu normalnego. Jest to wynik, jakiego się spodziewaliśmy, ponieważ wiemy, że nasze dane w rzeczywistości mają rozkład równomierny.

Wykonywanie testu Andersona-Darlinga na kolumnie ramki danych w R

Możemy również wykonać test AD dla określonej kolumny ramki danych w R. Rozważmy na przykład osadzony zbiór danych iris :

 #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

Załóżmy, że chcemy wiedzieć, czy zmienna Petal.Width ma rozkład normalny. Możemy najpierw utworzyć histogram, aby zwizualizować rozkład wartości:

 hist(iris$Petal.Width, col = 'steelblue', main = 'Distribution of Petal Widths',
     xlab = 'Petal Width')

Dane nie wydają się mieć rozkładu normalnego. Aby to potwierdzić, możemy wykonać test AD, aby formalnie sprawdzić, czy dane mają rozkład normalny, czy nie:

 #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

Wartość p testu jest mniejsza niż 0,05, zatem mamy wystarczające dowody, aby odrzucić hipotezę zerową i stwierdzić, że Petal.Width nie ma rozkładu normalnego.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *