# Folie 5 | Zentraler Grenzwertsatz - Übung 1 ----------------------------
# Ein Würfel: Ereignisse 1 bis 6, jeweils mit Wahrscheinlichkeit 1/6.
set.seed(1999) # Für reproduzierbare Ergebnisse

Wuerfe1 <- replicate(10000, sample(1:6, 1, replace = TRUE))
Haeufigkeiten1 <- table(Wuerfe1)
Haeufigkeiten1

RelativeHaeufigkeiten1 <- prop.table(Haeufigkeiten1)
RelativeHaeufigkeiten1

barplot(RelativeHaeufigkeiten1,
        main = "Ein idealer Würfel", xlab = "Augenzahl",
        ylab = "Relative Häufigkeit")

# Die relativen Häufigkeiten liegen ungefähr bei 1/6; zufällige Abweichungen.


# Folie 6 | Zentraler Grenzwertsatz - Übung 2 ----------------------------
# Zwei Würfel: Summen 2 bis 12; insgesamt 36 gleich wahrscheinliche Paare.
# Mögliche Summen bei zwei Würfeln
MoeglicheSummen <- 2:12

# Anzahl der Möglichkeiten für jede Summe
AnzahlMoeglichkeiten <- c(1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1)

# Wahrscheinlichkeit für jede Summe
Wahrscheinlichkeiten <- AnzahlMoeglichkeiten / 36

set.seed(1999)
Wuerfe2 <- replicate(10000, sample(1:6, 2, replace = TRUE))

Summen2 <- apply(Wuerfe2, 2, sum) # Jede Spalte ist eine Stichprobe; apply summiert je Spalte.
Haeufigkeiten2 <- table(Summen2)
Haeufigkeiten2

RelativeHaeufigkeiten2 <- prop.table(Haeufigkeiten2)
RelativeHaeufigkeiten2

barplot(RelativeHaeufigkeiten2,
        main = "Summe zweier idealer Würfel", xlab = "Augensumme",
        ylab = "Relative Häufigkeit")

# Für die Summe 7 gibt es die meisten Paare.
# Die beobachteten Anteile nähern sich den theoretischen Wahrscheinlichkeiten.


# Folie 7 | Zentraler Grenzwertsatz - Übung 3 ----------------------------
set.seed(1999)

Wuerfe20 <- replicate(10000, sample(1:6, 20, replace = TRUE))
Summen20 <- apply(Wuerfe20, 2, sum) # Mögliche Summen: 20 bis 120
Haeufigkeiten20 <- table(Summen20)
Haeufigkeiten20

RelativeHaeufigkeiten20 <- prop.table(Haeufigkeiten20)
RelativeHaeufigkeiten20

barplot(RelativeHaeufigkeiten20,
        main = "Summe von 20 idealen Würfeln", xlab = "Augensumme",
        ylab = "Relative Häufigkeit")


# Folie 8 | Zentraler Grenzwertsatz - Übung 4: Vergleich -----------------
# Ein Würfel: gleichverteilt. 
# Zwei Würfel: dreiecksförmige Summenverteilung.
# 20 Würfel: annähernd normalverteilte Summen


# Folie 10 | Populationsschätzungen - Übung 1: Stichproben --------------
# rnorm() erwartet die Standardabweichung, also sqrt(Populationsvarianz).
set.seed(1999)

Stichproben1 <- replicate(5000, rnorm(10, 100, sqrt(100)))
Stichproben2 <- replicate(5000, rnorm(6, 100, sqrt(100)))
Stichproben3 <- replicate(5000, rnorm(30, 100, sqrt(225)))

# Je Spalte alle vier Kennwerte derselben Stichprobe berechnen.
M1 <- apply(Stichproben1, 2, mean)
V1 <- apply(Stichproben1, 2, var)
Med1 <- apply(Stichproben1, 2, median)
Max1 <- apply(Stichproben1, 2, max)

M2 <- apply(Stichproben2, 2, mean)
V2 <- apply(Stichproben2, 2, var)
Med2 <- apply(Stichproben2, 2, median)
Max2 <- apply(Stichproben2, 2, max)

M3 <- apply(Stichproben3, 2, mean)
V3 <- apply(Stichproben3, 2, var)
Med3 <- apply(Stichproben3, 2, median)
Max3 <- apply(Stichproben3, 2, max)


# Folie 11 | Übung 2: Histogramme der Mittelwerte ------------------------
hist(M1,breaks=50,xlim= c(80, 120))
hist(M2, breaks = 50, xlim = c(80, 120))
hist(M3, breaks = 50, xlim = c(80, 120))


# Folie 11 | Übung 2: Histogramme der Varianzen --------------------------
hist(V1, breaks = 50, xlim = c(0, 700))
hist(V2, breaks = 50, xlim = c(0, 700))
hist(V3, breaks = 50, xlim = c(0, 700))


# Folie 11 | Übung 2: Histogramme der Mediane ----------------------------
hist(Med1, breaks = 50, xlim = c(80, 120))
hist(Med2, breaks = 50, xlim = c(80, 120))
hist(Med3, breaks = 50, xlim = c(80, 120))


# Folie 11 | Übung 2: Histogramme der Maxima -----------------------------
hist(Max1, breaks = 50, xlim = c(80, 160))
hist(Max2, breaks = 50, xlim = c(80, 160))
hist(Max3, breaks = 50, xlim = c(80, 160))


# Folie 12 | Übung 3: Standardfehler des Mittelwerts ---------------------
# Mit den wahren Populationswerten: SE = sigma / sqrt(n).
round(sqrt(100) / sqrt(10), 2)
round(sqrt(100) / sqrt(6), 2)
round(sqrt(225) / sqrt(30), 2)

sd(M1)
sd(M2)
sd(M3)

# Normalverteilt; am stärksten streut Verteilung 2, am wenigsten Verteilung 3.
# Simulierte SDs liegen ungefähr bei theoretischen Standardfehlern.
# Grösseres sigma erhöht den SE, grösseres n senkt ihn.


# Folie 13 | Übung 4: Standardfehler der Varianz -------------------------
# Mit den wahren Populationswerten: SE = sigma^2 * sqrt(2 / (n - 1)).
round(100 * sqrt(2 / (10 - 1)), 2)
round(100 * sqrt(2 / (6 - 1)), 2)
round(225 * sqrt(2 / (30 - 1)), 2)

sd(V1)
sd(V2)
sd(V3)

# Rechtsschief; bei normalverteilten Daten eine skalierte Chi-Quadrat-Verteilung.
# grösster SE: Verteilung 2, kleinster: 1.
# Die simulierten SDs nähern sich den theoretischen SEs.
# Grössere Populationsvarianz erhöht den SE, grösseres n senkt ihn.


# Folie 14 | Übung 5: Standardfehler des Medians -------------------------
# Mit den wahren Populationswerten.

sqrt(pi / 2) * sqrt(100) / sqrt(10)
sqrt(pi / 2) * sqrt(100) / sqrt(6)
sqrt(pi / 2) * sqrt(225) / sqrt(30)


sd(Med1)
sd(Med2)
sd(Med3)

# Annähernd normalverteilt; stärkste Streuung: Verteilung 2, geringste: 3.
# Sigma erhöht, n senkt den SE.

# Nach der Formel ist der SE des Medians sqrt(pi / 2) = ca. 1.253-mal
# so gross wie der SE des Mittelwerts


# Folie 15 | Übung 6: Stichprobenmaxima ---------------------------------
sd(Max1)
sd(Max2)
sd(Max3)


# Rechtsschief: Ein einzelner sehr grosser Wert genügt für ein hohes Maximum;
# für ein sehr kleines Maximum müssten dagegen alle Werte klein sein.
# Erwartete Reihenfolge der Streuung: Verteilung 3 > Verteilung 2 > Verteilung 1.

# Bei Normalverteilungen: Grösseres sigma erhöht den SE; grösseres n senkt
# ihn bei konstantem sigma. Der erwartete Maximalwert steigt dennoch mit n.
