Jak wykonać test shapiro-wilka w r (z przykładami)


Test Shapiro-Wilka jest testem normalności. Służy do określenia, czy próbka pochodzi z rozkładu normalnego .

Ten typ testu jest przydatny do ustalenia, czy dany zbiór danych pochodzi z rozkładu normalnego, co jest powszechnie stosowanym założeniem w wielu testach statystycznych, w tym w regresji , ANOVA , testach t i wielu innych. 'inni.

Możemy łatwo wykonać test Shapiro-Wilka na danym zbiorze danych, korzystając z następującej funkcji wbudowanej w R:

shapiro.test(x)

Złoto:

  • x: wektor numeryczny wartości danych.

Ta funkcja generuje statystykę testową W wraz z odpowiednią wartością p. Jeśli wartość p jest mniejsza niż α = 0,05, istnieją wystarczające dowody, aby stwierdzić, że próbka nie pochodzi z populacji o rozkładzie normalnym.

Uwaga: aby można było skorzystać z funkcji shapiro.test(), wielkość próbki musi mieścić się w przedziale od 3 do 5000.

W tym samouczku przedstawiono kilka przykładów praktycznego wykorzystania tej funkcji.

Przykład 1: Test Shapiro-Wilka na normalnych danych

Poniższy kod pokazuje, jak przeprowadzić test Shapiro-Wilka na zbiorze danych o wielkości próby n=100:

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a normal distribution
data <- rnorm(100)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.98957, p-value = 0.6303

Wartość p testu wynosi 0,6303 . Ponieważ wartość ta jest nie mniejsza niż 0,05, możemy założyć, że przykładowe dane pochodzą z populacji o rozkładzie normalnym.

Wynik ten nie powinien dziwić, gdyż przykładowe dane wygenerowaliśmy za pomocą funkcji rnorm(), która generuje wartości losowe z rozkładu normalnego o średniej = 0 i odchyleniu standardowym = 1.

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

Możemy również utworzyć histogram, aby wizualnie sprawdzić, czy przykładowe dane mają rozkład normalny:

 hist(data, col=' steelblue ') 

Test Shapiro-Wilka na normalność w R

Widzimy, że rozkład ma kształt dzwonu z pikiem w środku rozkładu, co jest typowe dla danych o rozkładzie normalnym.

Przykład 2: Test Shapiro-Wilka na danych nietypowych

Poniższy kod pokazuje jak wykonać test Shapiro-Wilka na zbiorze danych o wielkości próby n=100, w którym wartości są generowane losowo z rozkładu Poissona :

 #make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a Poisson distribution
data <- rpois(n=100, lambda=3)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

	Shapiro-Wilk normality test

data:data
W = 0.94397, p-value = 0.0003393

Wartość p testu wynosi 0,0003393 . Ponieważ wartość ta jest mniejsza niż 0,05, mamy wystarczające dowody, aby stwierdzić, że dane próbki nie pochodzą z populacji o rozkładzie normalnym.

Wynik ten nie powinien dziwić, gdyż przykładowe dane wygenerowaliśmy za pomocą funkcji rpois(), która generuje wartości losowe z rozkładu Poissona.

Powiązane: Przewodnik po dpois, ppois, qpois i rpois w R

Możemy również utworzyć histogram, aby wizualnie zobaczyć, że przykładowe dane nie mają rozkładu normalnego:

 hist(data, col=' coral2 ') 

Histogram testu Shapiro-Wilka w R

Widzimy, że rozkład jest prawoskośny i nie ma typowego „kształtu dzwonu” kojarzonego z rozkładem normalnym. Zatem nasz histogram pasuje do wyników testu Shapiro-Wilka i potwierdza, że nasze przykładowe dane nie pochodzą z rozkładu normalnego.

Co zrobić z nietypowymi danymi

Jeśli dany zbiór danych nie ma rozkładu normalnego, często możemy wykonać jedną z następujących transformacji, aby uczynić go bardziej normalnym:

1. Transformacja logu: przekształć zmienną odpowiedzi z y na log(y) .

2. Transformacja pierwiastka kwadratowego: Przekształć zmienną odpowiedzi z y na √y .

3. Transformacja pierwiastka sześciennego: przekształć zmienną odpowiedzi z y na y 1/3 .

Wykonując te przekształcenia, zmienna odpowiedzi ogólnie zbliża się do rozkładu normalnego.

Sprawdź ten samouczek , aby zobaczyć, jak wykonać te transformacje w praktyce.

Dodatkowe zasoby

Jak wykonać test Andersona-Darlinga w R
Jak wykonać test Kołmogorowa-Smirnowa w R
Jak wykonać test Shapiro-Wilka w Pythonie

Dodaj komentarz

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