Hoe te testen op normaliteit in r (4 methoden)


Veel statistische tests gaan ervan uit dat datasets normaal verdeeld zijn.

Er zijn vier gebruikelijke manieren om deze aanname in R te controleren:

1. (Visuele methode) Maak een histogram.

  • Als het histogram ongeveer de vorm van een klok heeft, wordt aangenomen dat de gegevens normaal verdeeld zijn.

2. (Visuele methode) Maak een QQ-plot.

  • Als de punten op de grafiek grofweg langs een rechte diagonale lijn liggen, wordt aangenomen dat de gegevens normaal verdeeld zijn.

3. (Formele statistische test) Voer een Shapiro-Wilk-test uit.

  • Als de p-waarde van de test groter is dan α = 0,05, wordt aangenomen dat de gegevens normaal verdeeld zijn.

4. (Formele statistische test) Voer een Kolmogorov-Smirnov-test uit.

  • Als de p-waarde van de test groter is dan α = 0,05, wordt aangenomen dat de gegevens normaal verdeeld zijn.

De volgende voorbeelden laten zien hoe u elk van deze methoden in de praktijk kunt gebruiken.

Methode 1: Maak een histogram

De volgende code laat zien hoe u een histogram maakt voor een normaal verdeelde en niet-normaal verdeelde gegevensset in R:

 #make this example reproducible
set. seeds (0)

#create data that follows a normal distribution
normal_data <- rnorm(200)

#create data that follows an exponential distribution
non_normal_data <- rexp(200, rate=3)

#define plotting region
by(mfrow=c(1,2)) 

#create histogram for both datasets
hist(normal_data, col=' steelblue ', main=' Normal ')
hist(non_normal_data, col=' steelblue ', main=' Non-normal ') 

Het histogram aan de linkerkant toont een dataset die normaal verdeeld is (ruwweg „klokvormig“) en het histogram aan de rechterkant toont een dataset die niet normaal verdeeld is.

Methode 2: Maak een QQ-plot

De volgende code laat zien hoe u een QQ-plot maakt voor een normaal verdeelde en niet-normaal verdeelde gegevensset in R:

 #make this example reproducible
set. seeds (0)

#create data that follows a normal distribution
normal_data <- rnorm(200)

#create data that follows an exponential distribution
non_normal_data <- rexp(200, rate=3)

#define plotting region
by(mfrow=c(1,2)) 

#create QQ plot for both datasets
qqnorm(normal_data, main=' Normal ')
qqline(normal_data)

qqnorm(non_normal_data, main=' Non-normal ')
qqline(non_normal_data)

De QQ-plot aan de linkerkant presenteert een dataset die normaal verdeeld is (de punten vallen langs een rechte diagonale lijn) en de QQ-plot aan de rechterkant presenteert een dataset die niet normaal verdeeld is.

Methode 3: Voer een Shapiro-Wilk-test uit

De volgende code laat zien hoe u een Shapiro-Wilk-test uitvoert op een normaal verdeelde en niet-normaal verdeelde gegevensset in R:

 #make this example reproducible
set. seeds (0)

#create data that follows a normal distribution
normal_data <- rnorm(200)

#perform shapiro-wilk test
shapiro. test (normal_data)

	Shapiro-Wilk normality test

data: normal_data
W = 0.99248, p-value = 0.3952

#create data that follows an exponential distribution
non_normal_data <- rexp(200, rate=3)

#perform shapiro-wilk test
shapiro. test (non_normal_data)

	Shapiro-Wilk normality test

data: non_normal_data
W = 0.84153, p-value = 1.698e-13

De p-waarde van de eerste test is niet minder dan 0,05, wat aangeeft dat de gegevens normaal verdeeld zijn.

De p-waarde van de tweede test is kleiner dan 0,05, wat aangeeft dat de gegevens niet normaal verdeeld zijn.

Methode 4: Voer een Kolmogorov-Smirnov-test uit

De volgende code laat zien hoe u een Kolmogorov-Smirnov-test uitvoert op een normaal verdeelde en niet-normaal verdeelde dataset in R:

 #make this example reproducible
set. seeds (0)

#create data that follows a normal distribution
normal_data <- rnorm(200)

#perform kolmogorov-smirnov test
ks. test (normal_data, ' pnorm ')

	One-sample Kolmogorov–Smirnov test

data: normal_data
D = 0.073535, p-value = 0.2296
alternative hypothesis: two-sided

#create data that follows an exponential distribution
non_normal_data <- rexp(200, rate=3)

#perform kolmogorov-smirnov test
ks. test (non_normal_data, ' pnorm ') 
	One-sample Kolmogorov–Smirnov test

data: non_normal_data
D = 0.50115, p-value < 2.2e-16
alternative hypothesis: two-sided

De p-waarde van de eerste test is niet minder dan 0,05, wat aangeeft dat de gegevens normaal verdeeld zijn.

De p-waarde van de tweede test is kleiner dan 0,05, wat aangeeft dat de gegevens niet normaal verdeeld zijn.

Hoe om te gaan met niet-normale gegevens

Als een bepaalde dataset niet normaal verdeeld is , kunnen we vaak een van de volgende transformaties uitvoeren om deze normaler verdeeld te maken:

1. Logtransformatie: transformeer x-waarden naar log(x) .

2. Vierkantsworteltransformatie: Transformeer de waarden van x naar √x .

3. Derdemachtsworteltransformatie: transformeer de waarden van x naar x 1/3 .

Door deze transformaties uit te voeren, wordt de dataset doorgaans normaler verdeeld.

Lees deze tutorial om te zien hoe u deze transformaties in R kunt uitvoeren.

Aanvullende bronnen

Histogrammen maken in R
Hoe u een QQ-plot in R maakt en interpreteert
Hoe een Shapiro-Wilk-test uit te voeren in R
Hoe een Kolmogorov-Smirnov-test uit te voeren in R

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert