Test auf Normalität von Daten in R
- Anwendbarkeit der gegebenen Techniken
- Zeichnen Sie die Daten
- Verwenden Sie den Shapiro-Wilk-Normalitätstest in R
- Das Quantil-Quantil-Diagramm in R
- Abschluss
Viele statistische Tests oder Techniken gehen davon aus, dass die Stichprobe, die wir haben, mit der Normalverteilung zusammenhängt. Bei einigen Tests oder Verfahren kann davon ausgegangen werden, dass die Stichprobe aus einer normalverteilten Grundgesamtheit stammt.
Andere mögen annehmen, dass die zufälligen Fehler (Residuen) unserer Daten aus einer Normalverteilung stammen. R bietet uns mehrere Möglichkeiten, um zu testen, ob unsere Daten (ursprünglich oder residual) einer Normalverteilung folgen.
In diesem Artikel werden drei einfache, beliebte Techniken zum Testen nicht gruppierter, univariater Daten auf Normalität betrachtet.
Beispielcode:
# First, we will create the data for our demonstrations.
# Large normal population.
set.seed(951)
p = rnorm(100000,100,5)
# Plot the population.
hist(p, breaks=100)
# Take a sample from the normal population.
set.seed(753)
s1 = sample(p, size=125, replace=FALSE)
# Create a non-normal sample.
# A vector (population).
v = c(31:81)
# Non-normal sample.
set.seed(159)
s2 = sample(v, 2000, replace=TRUE)
Anwendbarkeit der gegebenen Techniken
Die folgenden Techniken gelten für die uns zur Verfügung stehenden Daten. Sie sagen uns, ob die Daten akzeptabel normal sind oder nicht.
Daher sind sie nur zur Schlussfolgerung der verfügbaren Daten zu verwenden.
Insbesondere erlauben sie keinen Rückschluss auf die Grundgesamtheit, aus der die Daten (Stichprobe) stammen. Diese Schlussfolgerungen hängen von der statistischen Theorie ab, die für die zur Gewinnung der Stichprobe verwendete Stichprobentechnik relevant ist.
Zeichnen Sie die Daten
Wir beginnen mit einem qualitativen Ansatz, der als Ausgangspunkt geeignet ist. Ein einfaches Histogramm zeigt, ob die Daten eine Glockenform wie die normale Kurve haben.
Beispielcode:
# Plot the sample from the normal population.
hist(s1, breaks=25)
# Plot the non-normal sample.
hist(s2, breaks=25)
Ein Plot der aus der Normalpopulation gezogenen Stichprobe.
Ein Diagramm der nicht normalen Probe.
Wir finden, dass die Stichprobe aus der Normalpopulation eine ungefähre Glockenform hat. Die nicht normale Probe ähnelt einem Rechteck.
Verwenden Sie den Shapiro-Wilk-Normalitätstest in R
Der Shapiro-Wilk-Test für die Normalität von Daten ist ein weit verbreiteter statistischer Test.
Die Funktion shapiro.test()
nimmt einen Datenvektor von 3 bis 5000 Elementen. Genauer gesagt ist dies der Bereich des Vektors für die Anzahl der nicht fehlenden Elemente.
Der Test geht davon aus, dass die Daten normal sind. Das ist die Nullhypothese.
Es gibt eine W-Statistik
und einen p-Wert
zurück. Eine W-Statistik
nahe 1 bedeutet, dass die Verteilung fast normal ist.
Diese Interpretation muss jedoch mit dem zurückgegebenen p-Wert
kombiniert werden.
Ein p-Wert
grösser als 0.05 lässt den Schluss zu, dass die Stichprobe normalverteilt ist.
Beispielcode:
# Run the Shapiro-Wilk test on the samples.
# Sample from normal population.
shapiro.test(s1)
# Non-normal sample.
shapiro.test(s2)
Ausgang:
> # Sample from normal population.
> shapiro.test(s1)
Shapiro-Wilk normality test
data: s1
W = 0.99353, p-value = 0.8383
> # Non-normal sample.
> shapiro.test(s2)
Shapiro-Wilk normality test
data: s2
W = 0.95117, p-value < 2.2e-16
Wir stellen fest, dass die Stichprobe aus der Normalbevölkerung eine hohe W-Statistik
und einen hohen p-Wert
hat. Die Stichprobe folgt genau der Normalverteilung.
Allerdings hat die nicht-normale Probe erwartungsgemäß einen extrem niedrigen p-Wert
. Es bestätigt, dass die Stichprobe nicht der Normalverteilung folgt.
Das Quantil-Quantil-Diagramm in R
Der Quantil-Quantil-Plot (auch Q-Q
-Plot genannt) ist eine weitere qualitative Technik zum Testen auf Normalität.
Bei diesem Test werden Quantile aus den Stichprobendaten gegen entsprechende Quantile aus einer Standardnormalverteilung aufgetragen. Bei ausreichender linearer Korrelation zwischen den Quantilen sind beide Verteilungen ähnlich; die Stichprobendaten folgen einer Normalverteilung.
Wenn der Plot grafisch eine fast gerade Linie ergibt, unterstützt dies die Schlussfolgerung, dass die Probe fast normal ist.
Die Funktion qqnorm()
erstellt ein Q-Q
-Diagramm in R.
Beispielcode:
# Plot the Q-Q plots for both the samples.
# Q-Q plot of sample from the normal population.
qqnorm(s1)
# Q-Q plot for the non-normal sample.
qqnorm(s2)
Q-Q
-Plot der Stichprobe aus der Normalpopulation. Der Graph ist fast eine gerade Linie.
Q-Q
-Diagramm der nicht normalen Probe. Der Plot ist eine gekrümmte Linie. Die Probe war nicht normal.
Abschluss
In der Praxis ergänzen sich alle drei oben genannten Ansätze. Der Shapiro-Wilk-Test kann einen sehr niedrigen p-Wert
ergeben, wenn die Stichprobengröße sehr groß ist.
Visuelle Techniken helfen uns, eine richtige Schlussfolgerung zu ziehen.