Die Normalverteilung wird verwendet, um Häufigkeiten von Daten und Beobachtungen darzustellen. Die Abweichungen der Messwerte vieler natur-, wirtschafts- und ingenieurwissenschaftlichen Vorgänge vom Mittelwert lassen sich durch Normalverteilung oft in guter Näherung beschreiben. Der Kurvenverlauf ist symmetrisch, Median und Mittelwert identisch. Es gilt, dass rund zwei Drittel der Messwerte innerhalb der Entfernung einer Standardabweichung zum Mittelwert liegen. Je größer die Standardabweichung eines Prozesses ist, desto mehr streuen die Daten um den Mittelwert.
Im Folgenden werden die Befehle dargestellt, um normalverteilte, gleichförmige, linksschiefe und rechtsschiefe Zufallsdaten zu erstellen. Es werden verschiedene verteilte Daten erstellt, um so Daten, die einer Normalverteilung folgen, von Daten, die dies nicht tun, unterscheiden zu können.
set.seed (123)
“set.seed” wird verwendet, um reproduzierbare Daten zu erhalten, damit sich die Daten nicht ständig ändern. Anbei wird “set.seed” genauer beschrieben: https://rfunction.com/archives/62
n <- rnorm (100, mean = 0, sd=1)
Mit dem Code “rnorm(100, mean = 0, sd=1)” werden 100 normalverteilte Zufallszahlen mit dem Erwartungswert von 0 und einer Standardabweichung von 1 erstellt.
g <- runif(100)
Die Definition von “runif” lautet uniform random numbers. Mit dem Code “runif(100)” werden 100 gleichverteilte Zufallszahlen erzeugt.
l <- rbeta (100,5,2)
Die Definition von “rbeta” lautet beta random numbers. Mit dem Code
“rbeta(100,5,2)” werden 100 linksschiefe Daten mit den Formparametern 5
und 2, die die Form der Verteilungskurve beeinflussen, erstellt.
Anbei werden die Formparameter genauer beschrieben: https://www.rdocumentation.org/packages/rBeta2009/versions/1.0/topics/rbeta
r <- rbeta (100,2,5)
Mit dem Code “rbeta(100,2,5)” werden 100 rechtschiefe Daten mit den Formparametern 2 und 5, die die Form der Verteilungskurve beeinflussen, erstellt.
Mithilfe eines QQ-Plots lässt sich graphisch feststellen, ob die Datenpunkte einer bestimmten Verteilung folgen – meistens einer Normalverteilung. Wenn die Datenpunkte annähernd einer Gerade folgen, bedeutet das, dass normalverteilte Daten vorliegen. Um dies besser erkennen zu können, wird oft der Befehl “qqline()” durchgeführt. Mithilfe dieses Befehls wird eine Linie eingezeichnet, um so einfacher beurteilen zu können, ob die Daten dieser Geraden folgen oder nicht. Wenn keine Normalverteilung vorliegt, kann mittels QQ-Plot auch bestimmt werden, an welchen Daten das Problem liegt – man kann also Ausreißer erkennen und in weiterer Folge entfernen.
Wenn die Datenpunkt nahe an der 45° Linie liegen, zeigt dies, dass die Daten normalverteilt sind.
qqnorm(n)
qqline(n, col="red")
Bei dem hier gezeigten QQ-Plot lässt sich erkennen, dass die Datenpunkte ziemlich nahe an der Linie liegen und dieser folgen, weshalb eine Normalverteilung der Daten vorliegt. Lediglich die äußeren Datenpunkte weichen etwas von der Gerade ab.
qqnorm(g)
qqline(g, col="blue")
Der hier gezeigte QQ-Plot weist eine S-Form auf, wodurch die Daten nicht normalverteilt sind. Insbesondere an den Enden der Linie ist deutlich zu erkennen, dass die Daten weit von der Gerade entfernt liegen.
qqnorm(l)
qqline(l, col="purple")
In der hier gezeigten Graphik ist noch deutlicher zu erkennen, dass keine Normalverteilung vorliegt. Die Kurve der linksschiefen Datenpunkte ist mehr oder weniger nach unten gebogen, und demnach liegen die Daten auch nicht nahe an der Linie bzw. folgen dieser.
qqnorm(r)
qqline (r, col="green")
Beim QQ-Plot der rechtsschiefen Daten ist nicht so ein eindeutiger Krümmungsverlauf, wie bei dem der linksschiefen zu sehen. Dennoch ist erkennbar, dass die Kurve der Datenpunkte nach oben gebogen ist, und die Punkte auch eher weiter weg von der Gerade liegen. Demnach liegt auch hier keine Normalverteilung vor.
Ein Boxplot ist eine grafische Darstellung von Verteilungen numerischer Daten. Er besteht aus einer Box, die den Bereich von Quartil 1 (Q1) bis Quartil 3 (Q3) darstellt, sowie einem Strich (Whisker), der den Bereich außerhalb der Box bis zum nächsten Punkt, der innerhalb vom 1,5-fachen Interquartilsabstand von der Box entfernt ist, darstellt. Punkte, die außerhalb dieses Bereichs liegen, werden als Ausreißer betrachtet und als separate Punkte dargestellt. Boxplots werden oft verwendet, um die Verteilung von Daten zu vergleichen oder, um Ausreißer zu identifizieren.
Liegen ein oder mehrere Datenpunkte über dem Maximum beziehungsweise unter dem Minimum, sind diese Daten Ausreißer.
boxplot(n)
Bei den normalverteilten Daten liegt der Median ungefähr in der Mitte der Box und die Whisker sind ungefähr gleich lang. Außerdem liegt ein Ausreißer vor, welcher unterhalb des Minimums aufzufinden ist.
boxplot(g)
Auch bei gleichförmig verteilten Daten liegt der Median ungefähr in der Mitte der Box und die Whisker sind ungefähr gleich lang. Des Weiteren liegt kein Ausreißer vor. Wenn man nun den Boxplot der normalverteilten Daten mit dem Boxplot der gleichförmig verteilten Daten vergleicht, lässt sich erkennen, dass beide ähnlich sind. Daraus lässt sich allerdings schließen, dass Boxplots per se keine allzu geeignete Methode zur Erkennung einer Normalverteilung sind, da gleichförmig verteilte Daten eigentlich nicht normalverteilt sind (anhand des Boxplots würden die Daten jedoch einer Normalverteilung ähneln).
boxplot(l)
Es ist ersichtlich, dass bei linksschiefen Verteilungen die meisten Datenwerte am oberen Rand der Grafik liegen. Dadurch ist der Median nach oben hin verschoben und der obere Whisker ist deutlich kürzer als der untere. Dies bedeutet, dass die Daten oberhalb des Medians gedrängt vorliegen, während unterhalb eine breitere Verteilung aufzufinden ist. Weiters liegen zwei Ausreißer unterhalb des Minimums.
boxplot(r)
Bei rechtschiefen Verteilungen sind die meisten Datenpunkte am unteren Rand der Grafik aufzufinden. Der Median ist nach unten hin verschoben und der untere Whisker ist kürzer als der obere. Die Daten sind also unterhalb des Medians gedrängt, während oberhalb eine breitere Verteilung vorliegt. Des Weiteren befindet sich ein Ausreißer oberhalb des Maximus.
Der Shapiro-Wilk-Test ist ein statistischer Test zur Überprüfung, ob eine Stichprobe aus einer normalverteilten Population stammt. Der Test basiert auf der Annahme, dass die Daten normalverteilt sind, und vergleicht die beobachtete Verteilung mit der erwarteten Verteilung. Der Test berechnet einen Teststatistikwert und einen p-Wert, der angibt, wie wahrscheinlich es ist, dass die beobachteten Daten aus einer normalverteilten Population stammen, wenn die Nullhypothese (d.h. die Daten stammen aus einer normalverteilten Population) wahr ist. Die Nullhypothese besagt, dass die Daten normalverteilt sind. Die Alternativhypothese drückt aus, dass die Daten nicht normalverteilt sind. Ein kleiner p-Wert zeigt an, dass es unwahrscheinlich ist, dass die Daten normalverteilt sind, während ein großer p-Wert darauf hindeutet, dass die Daten normalverteilt sein könnten. Der Shapiro-Wilk-Test wird häufig in der Statistik verwendet, um die Normalverteilung von Daten zu prüfen, bevor andere statistische Tests angewendet werden.
Wenn der p - Wert größer ist als alpha, dann wird die Nullhypothese beibehalten. Dies bedeutet, dass es sich beim Datensatz um normalverteilte Daten handelt. Als Signifikanzniveau alpha wird 0,05 angenommen.
shapiro.test(n)
##
## Shapiro-Wilk normality test
##
## data: n
## W = 0.99388, p-value = 0.9349
In diesem Beispiel ist der p-Wert größer als 0,05, sodass die Nullhypothese nicht abgelehnt werden kann. Die Daten sind also normalverteilt.
shapiro.test(g)
##
## Shapiro-Wilk normality test
##
## data: g
## W = 0.9454, p-value = 0.0004182
Bei diesem Datensatz beträgt der p-Wert 0,0004182. Dieser ist kleiner als 0,05 (alpha). Deshalb wird die Nullhypothese abgelehnt, was bedeutet, dass die Daten nicht normalverteilt sind.
shapiro.test(l)
##
## Shapiro-Wilk normality test
##
## data: l
## W = 0.91663, p-value = 9.369e-06
Der p-Wert der linksschiefen Daten ist deutlich kleiner als 0,05, weshalb die Nullhypothese abgelehnt wird. Daher sind die Daten nicht normalverteilt.
shapiro.test(r)
##
## Shapiro-Wilk normality test
##
## data: r
## W = 0.96802, p-value = 0.01562
In diesem Beispiel beträgt der p-Wert 0,01562. Dieser ist kleiner als alpha. Daher wird die Nullhypothese abgelehnt, was auf einen nicht-normalverteilten Datensatz hindeutet.
Der Grubbs-Test ist ein statistischer Test zur Erkennung von Ausreißern in einer Stichprobe. Er basiert auf der Annahme, dass die Daten normalverteilt sind und identifiziert Ausreißer als Werte, die signifikant von den anderen Werten in der Stichprobe abweichen. Der Test berechnet einen Teststatistikwert, der das Verhältnis der Abweichung des vermeintlichen Ausreißers zum Schätzfehler angibt, sowie einen kritischen Wert, der auf der Größe der Stichprobe und einem Signifikanzniveau basiert. Wenn der Teststatistikwert größer ist als der kritische Wert, wird der vermeintliche Ausreißer als signifikant identifiziert und aus der Stichprobe entfernt. Die Teststatistik lässt sich wie folgt berechnen, wobei X_i für alle Werte, X für den Mittelwert und S_n für die Standardabweichung stehen:
\[ G = \frac{max|X_i - \bar{X}|}{S_n} \]
Der Grubbs-Test wird häufig in der Statistik und der Qualitätskontrolle verwendet, um Daten auf ungewöhnliche Werte zu überprüfen, die möglicherweise Fehler in der Messung oder im Prozesssignal darstellen.
Wenn der p-Wert kleiner als alpha ist, wird die Nullhypothese verworfen. Dies bedeutet, dass Ausreißer vorhanden sind. Als Signifikanzniveau alpha wird 0,05 angenommen.
library(outliers)
## Warning: Paket 'outliers' wurde unter R Version 4.5.2 erstellt
install.packages("outliers")
## Warning: Paket 'outliers' wird gerade benutzt und deshab nicht installiert
grubbs.test(n, type = 10, two.sided=FALSE)
##
## Grubbs test for one outlier
##
## data: n
## G = 2.62876, U = 0.92949, p-value = 0.3792
## alternative hypothesis: lowest value -2.30916887564081 is an outlier
In diesem Beispiel ist der p-Wert größer als 0,05, sodass die Nullhypothese nicht abgelehnt werden kann, und somit gibt es keine Ausreißer.
n[1] <- 10
Mit dem Code “n[1] <-10” wird ein Ausreißer in die normalverteilten Daten hinzugefügt. Die Nummer 1 zeigt, dass der Ausreißer an der ersten Stelle im Datensatz liegt, und die Zahl 10 gibt den Wert des Ausreißers an.
grubbs.test(n, type = 10, two.sided=FALSE)
##
## Grubbs test for one outlier
##
## data: n
## G = 7.28804, U = 0.45806, p-value < 2.2e-16
## alternative hypothesis: highest value 10 is an outlier
In diesem Beispiel beträgt der p-Wert 2.2e-16. Da der p-Wert kleiner ist als alpha, wird die Nullhypothese abgelehnt. Demnach ist ein Ausreißer vorhanden.