Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

Hypothesentests und Simulationen in R: Ein Leitfaden für MAST20005/MAST90058

Lerne, wie du in R den Vorzeichentest, Wilcoxon-Test und t-Test durchführst, Simulationen zur Power-Analyse nutzt und Goodness-of-Fit-Tests für Binomialverteilungen anwendest – mit Bezug zu aktuellen Trendthemen wie KI und Gaming.

R Hypothesentests Vorzeichentest R Wilcoxon-Test R gepaarter t-Test R Power-Simulation R Goodness-of-Fit Binomialverteilung Chi-Quadrat-Test R Pareto-Verteilung asymptotische Varianz zweifache ANOVA R Solarpanel Datenanalyse MAST20005 Assignment 3 MAST90058 Assignment 3 Statistik Übungen R R Programmierung für Studenten KI Datenanalyse Vergleich E-Sports Statistik Methoden

Einführung in die Welt der Hypothesentests

In der Statistik begegnen uns täglich Fragen wie: „Unterscheiden sich zwei Gruppen signifikant?“ oder „Folgen diese Daten einer bestimmten Verteilung?“ – Themen, die auch in der Assignment 3 der Kurse MAST20005/MAST90058 zentral sind. Mit der Programmiersprache R lassen sich solche Tests effizient durchführen. Dieser Tutorial-Artikel führt dich durch die wichtigsten Verfahren – vom Vorzeichentest bis zur Power-Simulation – und zeigt, wie du sie auf reale Datensätze anwendest. Dabei ziehen wir Parallelen zu aktuellen Trends: So wie ein KI-Modell seine Vorhersagen durch ständiges Testen verbessert, helfen uns statistische Tests, fundierte Entscheidungen zu treffen.

Daten einlesen und vorbereiten

Bevor wir testen, müssen wir die Daten in R bringen. Nehmen wir das erste Beispiel aus der Aufgabenstellung: gepaarte Stichproben (X, Y) mit 17 Beobachtungen. In R sieht das so aus:

x <- c(26.1, 26.6, 27.4, 27.5, 27.8, 28.1, 28.4, 29.5, 29.8, 30.4, 30.4, 31.2, 31.5, 32.9, 33.6, 34.1, 35.9)
y <- c(27.4, 28.1, 22.9, 31.3, 16.3, 50.1, 20.0, 24.6, 23.3, 19.3, 24.4, 24.4, 29.5, 27.6, 21.7, 25.4, 39.4)

Um die Differenz zu berechnen: d <- x - y. Diese Differenzen sind die Grundlage für die folgenden Tests.

1. Vorzeichentest (Sign Test)

Der Vorzeichentest ist ein nichtparametrischer Test, der nur die Richtung der Differenzen betrachtet – ideal, wenn die Daten nicht normalverteilt sind. Die Nullhypothese lautet: Der Median der Differenzen ist Null. In R gibt es keine Standardfunktion, aber wir können ihn leicht selbst programmieren:

n <- length(d)
pos <- sum(d > 0)
neg <- sum(d < 0)
# Bindestrich: Anzahl der positiven Differenzen
# p-Wert für zweiseitigen Test
p_sign <- 2 * pbinom(min(pos, neg), pos+neg, 0.5)
p_sign

Ergebnis: Der p-Wert liegt über 0.05, also behalten wir die Nullhypothese. Der Vorzeichentest ist robust, aber weniger mächtig – ähnlich wie ein E-Sport-Team, das auf eine einfache Strategie setzt, aber gegen komplexere Taktiken verliert.

2. Wilcoxon-Vorzeichen-Rang-Test

Der Wilcoxon-Test berücksichtigt zusätzlich die Rangordnung der Differenzen. In R geht das mit:

wilcox.test(x, y, paired = TRUE)

Auch hier liegt der p-Wert über 0.05. Der Wilcoxon-Test ist mächtiger als der Vorzeichentest, weil er mehr Information nutzt – vergleichbar mit einem Machine-Learning-Algorithmus, der nicht nur binäre Labels, sondern auch Wahrscheinlichkeiten einbezieht.

3. Gepaarter t-Test

Der t-Test setzt Normalverteilung der Differenzen voraus. In R:

t.test(x, y, paired = TRUE)

Der p-Wert ist ebenfalls nicht signifikant. Der t-Test ist der mächtigste, wenn die Annahme erfüllt ist – wie ein professioneller Gamer, der mit optimaler Ausrüstung spielt. Aber wehe, die Daten sind nicht normal – dann kann der t-Test irreführend sein.

Vergleich der Testergebnisse

Alle drei Tests kommen zum gleichen Schluss: Kein signifikanter Unterschied. Das ist typisch, wenn die Daten keine klare Tendenz zeigen. In der Praxis sollte man jedoch die Annahmen prüfen: Ein Q-Q-Plot oder der Shapiro-Wilk-Test hilft, die Normalität zu beurteilen. Wenn die Daten stark abweichen, ist der Wilcoxon-Test oft die beste Wahl – ähnlich wie bei der Analyse von Social-Media-Trends, wo Ausreißer häufig sind und robuste Methoden gefragt sind.

Power-Simulation für die drei Tests

Wie gut erkennen die Tests einen wahren Unterschied? Das ist die Power. In der Aufgabenstellung sollen wir simulieren: X ~ N(30, 32), Y-X ~ N(3, 52). Das bedeutet, der wahre Unterschied beträgt 3. Wir simulieren 1000 Stichproben und zählen, wie oft der Test die Nullhypothese ablehnt.

set.seed(123)
power_sim <- function(n_sim = 1000, n = 17, mu_diff = 3, sd_x = sqrt(32), sd_diff = sqrt(52)) {
  p_sign <- p_wilcox <- p_ttest <- numeric(n_sim)
  for (i in 1:n_sim) {
    x <- rnorm(n, mean = 30, sd = sd_x)
    y <- x + rnorm(n, mean = mu_diff, sd = sd_diff)
    d <- x - y
    # Vorzeichentest
    pos <- sum(d > 0)
    p_sign[i] <- 2 * pbinom(min(pos, n-pos), n, 0.5)
    # Wilcoxon
    p_wilcox[i] <- wilcox.test(x, y, paired = TRUE)$p.value
    # t-Test
    p_ttest[i] <- t.test(x, y, paired = TRUE)$p.value
  }
  power_sign <- mean(p_sign < 0.05)
  power_wilcox <- mean(p_wilcox < 0.05)
  power_ttest <- mean(p_ttest < 0.05)
  return(c(power_sign, power_wilcox, power_ttest))
}
power_sim()

Erwartung: Der t-Test hat die höchste Power, gefolgt vom Wilcoxon-Test, der Vorzeichentest die niedrigste. Das liegt an der Effizienz der Tests – ein Prinzip, das auch in der KI-Entwicklung gilt: Je mehr Informationen ein Modell nutzt, desto genauer sind seine Vorhersagen.

Goodness-of-Fit-Test für Binomialdaten

Im zweiten Teil der Aufgabe geht es um 80 Studierende, die die Keimung von Samen untersuchen. Die Daten sind Häufigkeiten von 3 bis 17 Keimungen bei 30 Versuchen. Wir schätzen p als Mittelwert/30: p_hat <- sum(counts * germinations) / (80 * 30). Dann führen wir einen Chi-Quadrat-Anpassungstest durch. Dazu müssen wir Klassen so zusammenfassen, dass die erwarteten Häufigkeiten mindestens 5 sind. In R:

germ <- 0:30
obs <- c(rep(0,3), 1,2,2,4,10,16,9,11,13,4,7, rep(0,13),1) # Achtung: Länge 31
expected <- dbinom(germ, 30, p_hat) * 80
# Zusammenfassen
classes <- c(0:6, 7,8,9,10,11,12,13,14:30) # Beispiel
# ... (weitere Schritte)

Der Test prüft, ob die Daten wirklich binomialverteilt sind. Wenn der p-Wert klein ist, müssen wir die Nullhypothese verwerfen – ähnlich wie bei der Qualitätskontrolle in der Produktion: Weicht die Fehlerrate von der erwarteten Binomialverteilung ab, läuft etwas schief.

Pareto-Verteilung und asymptotische Varianz

Ein theoretischer Teil beschäftigt sich mit der Pareto-Verteilung. Hier geht es um die Verteilungsfunktion des Minimums, Quantile und die asymptotische Varianz des Medians. Das ist eher mathematisch, aber für die Finanzmathematik relevant: Pareto-Verteilungen modellieren oft Vermögensverteilungen – ein Thema, das durch Kryptowährungen und Börsen-Trends immer aktuell bleibt.

Zweifache ANOVA mit Interaktion

Im letzten Teil analysieren wir die Leistung von Solarpanels bei verschiedenen Winkeln und Panel-Typen. Mit aov in R:

daten <- data.frame(
  Leistung = c(42.3,42.2,37.6,36.8,45.8,41.4,40.3,35.7,34.9,43.7, ...),
  Winkel = factor(rep(c(0,10,20,30), each=10)),
  Panel = factor(rep(1:5, each=2, times=4))
)
modell <- aov(Leistung ~ Winkel + Panel, data = daten)
summary(modell)

Da es keine Wiederholungen pro Kombination gibt (nur zwei Replikate), können wir Interaktionen nicht testen – das ist eine typische Einschränkung in Experimenten mit limitierten Ressourcen, wie man sie oft in Start-ups oder Forschungslaboren findet.

Fazit

Dieser Leitfaden hat gezeigt, wie du in R verschiedene Hypothesentests durchführst, Simulationen zur Power-Analyse nutzt und Anpassungstests anwendest. Die Methoden sind nicht nur für die Uni relevant, sondern auch für Data-Science-Projekte in der Industrie – ob bei der Analyse von Spielerstatistiken in E-Sports oder der Auswertung von A/B-Tests in Apps. Mit R hast du ein mächtiges Werkzeug in der Hand, um datengetriebene Entscheidungen zu treffen.