---
title: "Statistik 5"
subtitle: "Übung 5"
format: 
  revealjs:
    chalkboard:
      remember-playback: true
      create-playback: true
    slide-number: true
    #embed-resources: true
    css: 
     - webex.css
     - statistics_exercises_reveal.css
    include-after-body: 
      - webex.js
      - webex-pdf-persist.js
    height: 1200
    width: 1800
webexercises:
  storage-key: "Uebung_Statistik5_5"
---

```{r setup}
#| include: false
library("exams2forms")
knitr::opts_knit$set("out.format" = NULL, "rmarkdown.pandoc.to" = NULL)
```

## Einleitung und Ziele der Übung

\

Herzlich Willkommen zur Übung Statistik 5. In dieser Übung wollen wir Permutationstests und Bootstrapping üben.

## Agenda

\

- Varianzenhomogenität: Permutationstest
- Varianzenhomogenität: Bootstrapping

## 1. Varianzenhomogenität: Permutationstest - Einführung

\

Sie wollen testen, ob die Varianzen der Populationen zweier Gruppen gleich sind, oder nicht.

Die Daten der Gruppen können Sie wie folgt in R laden:
```{r}
#| eval: false
#| include: true
#| echo: true
Daten <- data.frame(G1 = c(18.94,24.28,34.50,29.70,79.17,17.35,31.16,41.37,76.69,64.1),
                    G2 = c(33.12,61.47,7.97,26.72,53.48,21.14,47.24,43.33,33.63,12.42))
```

## 1. Varianzenhomogenität: Permutationstest - Übung 1

\

Überlegen Sie sich zunächst eine oder mehrere plausible Teststatistik(en) zur Überprüfung ob die Varianzen gleich sind.

Hinweis: Denken Sie nicht an irgendein statistisches Verfahren, sondern überlegen Sie ganz banal, wie Sie mathematisch die Varianzen vergleichen würden.

```{r}
#| eval: false
#| include: false
#| echo: false
#Möglichkeiten, die mir spontan in den Sinn gekommen sind:
# Differenz der Varianzen 
# Betrag der Differenz der Varianzen
# Quadrierte Differenz der Varianzen 
# Verhältnis der Varianzen G1/G2 oder umgedreht
# Verhältnis der Varianzen grösser durch kleinere
# Verhältnis der Varianzen kleinere durch grössere 
# letzte drei Varianten mit zusätzlich - 1
# natürlich können wir statt der Varianz auch die Standardabweichung nehmen
```

## 1. Varianzenhomogenität: Permutationstest - Übung 2

\

Überlegen Sie für Ihr(e) Teststatistik(en), welchen Wertebereich diese annehmen können. 
Was wäre theoretisch der kleinste mögliche Wert, was der grösste mögliche Wert?
Welche(s) Ende(n) ihrer dieses Wertebereichs steht für Unterschiedlichkeit? 


```{r}
#| eval: false
#| include: false
#| echo: false
# Differenz der Varianzen            
# -unendl. bis + unendl. (beide Enden für Unterschiedlichkeit)

# Betrag der Differenz der Varianzen
# 0 bis + unendl. (nur rechtes Ende für Unterschiedlichkeit)

# Quadrierte Differenz der Varianzen
# 0 bis + unendl. (nur rechtes Ende für Unterschiedlichkeit)

# Verhältnis der Varianzen G1/G2 oder G2/G1
# 0 bis + unendl. (beide Enden für Unterschiedlichkeit)

# Verhältnis der Varianzen grösser durch kleinere 
# 1 bis + unendl. (nur rechtes Ende für Unterschiedlichkeit)

# Verhältnis der Varianzen kleinere durch grössere 
# 0 bis 1 (nur linkes Ende für Unterschiedlichkeit)

# letzte drei Varianten mit zusätzlich - 1 #Verschiebt um eins, 

# natürlich können wir statt der Varianz auch die Standardabweichung nehmen
# ändert nichts
```

## 1. Varianzenhomogenität: Permutationstest - Übung 3

\

Überlegen Sie für Ihr(e) Teststatistik(en), was jeweils die statistische Alternativhypothese wäre. 

Würde es Sinn machen einseitig- oder zweiseitig zu testen?

```{r}
#| eval: false
#| include: true
#| echo: false
# Differenz der Varianzen            
# ungleich 0, zweiseitig

# Betrag der Differenz der Varianzen
# ungleich 0, einseitig (rechts)

# Quadrierte Differenz der Varianzen
# ungleich 0, einseitig (rechts)

# Verhältnis der Varianzen G1/G2 oder G2/G1
# ungleich 1, zweiseitig


# Verhältnis der Varianzen grösser durch kleinere 
# ungleich 1, einseitig (rechts)


# Verhältnis der Varianzen kleinere durch grössere 
# ungleich 1, einseitig (links)

# letzte drei Varianten mit zusätzlich - 1 #Verschiebt um eins, 
# dann  sind Nullhypothese/Alternativhypothese gleich/ungleich 0 statt gleich/ungleich 1

# natürlich können wir statt der Varianz auch die Standardabweichung nehmen
# ändert nichts
```

## 1. Varianzenhomogenität: Permutationstest - Übung 4

\

Berechnen Sie zunächst Ihr(e) Teststatistik(en) für die beobachteten Werte.

```{r}
#| eval: false
#| include: false
#| echo: false

# Differenz der Varianzen            
T_b_Diff <- var(Daten$G1) - var(Daten$G2)

# Betrag der Differenz der Varianzen
T_b_Abs_Diff <- abs(var(Daten$G1) - var(Daten$G2))

# Quadrierte Differenz der Varianzen
T_b_sq_Diff <- (var(Daten$G1) - var(Daten$G2))^2

# Verhältnis der Varianzen G1/G2 oder G2/G1
T_b_Quot <- var(Daten$G1)/var(Daten$G2)

# Verhältnis der Varianzen grösser durch kleinere 
T_b_max_min_Quot <- max(var(Daten$G1),var(Daten$G2))/min(var(Daten$G1),var(Daten$G2))

# Verhältnis der Varianzen kleinere durch grössere 
T_b_min_max_Quot <- min(var(Daten$G1),var(Daten$G2))/max(var(Daten$G1),var(Daten$G2))

# letzte drei Varianten mit zusätzlich - 1 #Verschiebt um eins, 
T_b_Quot_0 <- var(Daten$G1)/var(Daten$G2) - 1
T_b_max_min_Quot_0 <- max(var(Daten$G1),var(Daten$G2))/min(var(Daten$G1),var(Daten$G2)) - 1
T_b_min_max_Quot_0 <- min(var(Daten$G1),var(Daten$G2))/max(var(Daten$G1),var(Daten$G2)) - 1

```

## 1. Varianzenhomogenität: Permutationstest - Übung 5

\

Berechnen Sie jetzt die Anzahl und die Varianten aller möglichen Permutationen in R.

```{r}
#| eval: false
#| include: false
#| echo: false

Anz <- choose(20,10) # Bestimmt die Anzahl an Kombinationen
Komb <- combn(20,10) 

```

## 1. Varianzenhomogenität: Permutationstest - Übung 6

\

Berechnen Sie jetzt Ihr(e) Teststatistik(en) für die permutierten Werte.

```{r}
#| eval: false
#| include: false
#| echo: false

T_perm_Diff           <- rep(NA,Anz)
T_perm_Abs_Diff       <- rep(NA,Anz)
T_perm_sq_Diff        <- rep(NA,Anz)
T_perm_Quot           <- rep(NA,Anz)
T_perm_max_min_Quot   <- rep(NA,Anz)
T_perm_min_max_Quot   <- rep(NA,Anz)
T_perm_Quot_0         <- rep(NA,Anz)
T_perm_max_min_Quot_0 <- rep(NA,Anz)
T_perm_min_max_Quot_0 <- rep(NA,Anz)

alleWerte  <- c(Daten$G1, Daten$G2)
alleIndizes <- 1:20

# rechnet bei mir so halbe Minute oder so, könnte bei euch länger/kürzer sein
# achtet darauf wenn das Stopp-Symbol weg ist
# ihr müsst auch nicht alle Varianten machen

for (i in 1:Anz){
  IndizesG1 <- Komb[,i]
  IndizesG2 <- setdiff(alleIndizes,IndizesG1) # Indizes die nicht in Gruppe 1 sind, sind in Gruppe 2

  # Differenz der Varianzen            
  T_perm_Diff[i] <- var(alleWerte[IndizesG1]) - var(alleWerte[IndizesG2])
  
  # Betrag der Differenz der Varianzen
  T_perm_Abs_Diff[i] <- abs(var(alleWerte[IndizesG1]) - var(alleWerte[IndizesG2]))
  
  # Quadrierte Differenz der Varianzen
  T_perm_sq_Diff[i] <- (var(alleWerte[IndizesG1]) - var(alleWerte[IndizesG2]))^2
  
  # Verhältnis der Varianzen G1/G2 oder G2/G1
  T_perm_Quot[i] <- var(alleWerte[IndizesG1])/var(alleWerte[IndizesG2])
  
  # Verhältnis der Varianzen grösser durch kleinere 
  T_perm_max_min_Quot[i] <- max(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2]))/min(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2]))
  
  # Verhältnis der Varianzen kleinere durch grössere 
  T_perm_min_max_Quot[i] <- min(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2]))/max(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2]))
  
  # letzte drei Varianten mit zusätzlich - 1 #Verschiebt um eins, 
  T_perm_Quot_0[i] <- var(alleWerte[IndizesG1])/var(alleWerte[IndizesG2]) - 1
  T_perm_max_min_Quot_0[i] <- max(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2]))/min(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2])) - 1
  T_perm_min_max_Quot_0[i] <- min(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2]))/max(var(alleWerte[IndizesG1]),var(alleWerte[IndizesG2])) - 1
}


```

## 1. Varianzenhomogenität: Permutationstest - Übung 6

\

Bestimmen Sie jetzt, ob sich die Varianzen signifikant unterscheiden für $\alpha = 1\%$.


```{r}
#| eval: false
#| include: false
#| echo: false

T_perm_Diff_Grenzen           <- quantile(T_perm_Diff          , c(.005,.995))
T_perm_Abs_Diff_Grenze        <- quantile(T_perm_Abs_Diff      , c(.99))
T_perm_sq_Diff_Grenze         <- quantile(T_perm_sq_Diff       , c(.99))
T_perm_Quot_Grenzen           <- quantile(T_perm_Quot          , c(.005,.995))
T_perm_max_min_Quot_Grenze    <- quantile(T_perm_max_min_Quot  , c(.99))
T_perm_min_max_Quot_Grenze    <- quantile(T_perm_min_max_Quot  , c(.01))
T_perm_Quot_0_Grenzen         <- quantile(T_perm_Quot_0        , c(.005,.995))
T_perm_max_min_Quot_0_Grenze  <- quantile(T_perm_max_min_Quot_0, c(.99))
T_perm_min_max_Quot_0_Grenze  <- quantile(T_perm_min_max_Quot_0, c(.01))

# alle nicht signifikant
(T_b_Diff < T_perm_Diff_Grenzen[1]) | (T_b_Diff > T_perm_Diff_Grenzen[2])
(T_b_Abs_Diff > T_perm_Abs_Diff_Grenze)
(T_b_sq_Diff > T_perm_sq_Diff_Grenze)

(T_b_Quot < T_perm_Quot_Grenzen[1]) | (T_b_Quot > T_perm_Quot_Grenzen[2])
(T_b_max_min_Quot > T_perm_max_min_Quot_Grenze)
(T_b_min_max_Quot < T_perm_min_max_Quot_Grenze)

(T_b_Quot_0 < T_perm_Quot_0_Grenzen[1]) | (T_b_Quot_0 > T_perm_Quot_0_Grenzen[2])
(T_b_max_min_Quot_0 > T_perm_max_min_Quot_0_Grenze)
(T_b_min_max_Quot_0 < T_perm_min_max_Quot_0_Grenze)

```

## 2. Varianzenhomogenität: Bootstrapping - Einführung

\

Jetzt wollen wir die gleiche Aufgabe mittels Bootstrapping lösen.
Es sollen 10'000 Bootstrap-Stichproben gezogen werden.

## 2. Varianzenhomogenität: Bootstrapping - Übung 1

\

Übernehmen Sie Ihren Code für die Bestimmung der Teststatistik mittels Permutationsverfahren und passen Sie diesen so an,
dass stattdessen Bootstrapping durchgeführt wird.

```{r}
#| eval: false
#| include: false
#| echo: false

AnzBoot <- 10000
T_boot_Diff           <- rep(NA,AnzBoot)
T_boot_Abs_Diff       <- rep(NA,AnzBoot)
T_boot_sq_Diff        <- rep(NA,AnzBoot)
T_boot_Quot           <- rep(NA,AnzBoot)
T_boot_max_min_Quot   <- rep(NA,AnzBoot)
T_boot_min_max_Quot   <- rep(NA,AnzBoot)
T_boot_Quot_0         <- rep(NA,AnzBoot)
T_boot_max_min_Quot_0 <- rep(NA,AnzBoot)
T_boot_min_max_Quot_0 <- rep(NA,AnzBoot)



for (i in 1:AnzBoot){
  IndizesG1 <- sample(1:10,10,replace=TRUE)
  IndizesG2 <- sample(1:10,10,replace=TRUE)

  # Differenz der Varianzen            
  T_boot_Diff[i] <- var(Daten$G1[IndizesG1]) - var(Daten$G2[IndizesG2])
  
  # Betrag der Differenz der Varianzen
  T_boot_Abs_Diff[i] <- abs(var(Daten$G1[IndizesG1]) - var(Daten$G2[IndizesG2]))
  
  # Quadrierte Differenz der Varianzen
  T_boot_sq_Diff[i] <- (var(Daten$G1[IndizesG1]) - var(Daten$G2[IndizesG2]))^2
  
  # Verhältnis der Varianzen G1/G2 oder G2/G1
  T_boot_Quot[i] <- var(Daten$G1[IndizesG1])/var(Daten$G2[IndizesG2])
  
  # Verhältnis der Varianzen grösser durch kleinere 
  T_boot_max_min_Quot[i] <- max(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2]))/min(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2]))
  
  # Verhältnis der Varianzen kleinere durch grössere 
  T_boot_min_max_Quot[i] <- min(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2]))/max(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2]))
  
  # letzte drei Varianten mit zusätzlich - 1 #Verschiebt um eins, 
  T_boot_Quot_0[i] <- var(Daten$G1[IndizesG1])/var(Daten$G2[IndizesG2]) - 1
  T_boot_max_min_Quot_0[i] <- max(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2]))/min(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2])) - 1
  T_boot_min_max_Quot_0[i] <- min(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2]))/max(var(Daten$G1[IndizesG1]),var(Daten$G2[IndizesG2])) - 1
}

```

## 2. Varianzenhomogenität: Bootstrapping - Übung 2

\

Bestimmen Sie jetzt, ob sich die Varianzen signifikant unterscheiden für $\alpha = 1\%$.


```{r}
#| eval: false
#| include: false
#| echo: false

T_boot_Diff_Grenzen           <- quantile(T_boot_Diff          , c(.005,.995))
T_boot_Abs_Diff_Grenze        <- quantile(T_boot_Abs_Diff      , c(.99))
T_boot_sq_Diff_Grenze         <- quantile(T_boot_sq_Diff       , c(.99))
T_boot_Quot_Grenzen           <- quantile(T_boot_Quot          , c(.005,.995))
T_boot_max_min_Quot_Grenze    <- quantile(T_boot_max_min_Quot  , c(.99))
T_boot_min_max_Quot_Grenze    <- quantile(T_boot_min_max_Quot  , c(.01))
T_boot_Quot_0_Grenzen         <- quantile(T_boot_Quot_0        , c(.005,.995))
T_boot_max_min_Quot_0_Grenze  <- quantile(T_boot_max_min_Quot_0, c(.99))
T_boot_min_max_Quot_0_Grenze  <- quantile(T_boot_min_max_Quot_0, c(.01))

# alle nicht signifikant
(0 < T_boot_Diff_Grenzen[1]) | (0 > T_boot_Diff_Grenzen[2])
(0 > T_boot_Abs_Diff_Grenze)
(0 > T_boot_sq_Diff_Grenze)

#Aufpassen, genau hier spielt jetzt die 1 eine Rolle statt der 0!!
(1 < T_boot_Quot_Grenzen[1]) | (1 > T_boot_Quot_Grenzen[2])
(1 > T_boot_max_min_Quot_Grenze)
(1 < T_boot_min_max_Quot_Grenze)

(0 < T_boot_Quot_0_Grenzen[1]) | (0 > T_boot_Quot_0_Grenzen[2])
(0 > T_boot_max_min_Quot_0_Grenze)
(0 < T_boot_min_max_Quot_0_Grenze)

```

## 2. Varianzenhomogenität: Bootstrapping - Übung 3

\

Vergleichen Sie das Histogramm der Teststatistiken basierend auf den permutierten Stichproben und das Histogramm basierend auf den Bootstrapstichproben!

```{r}
#| eval: false
#| include: false
#| echo: false

#Sehen sehr unterschiedlich aus,
#Histogramm von Permutationen: Verteilung unter der Nullhypothese
#Histogramm von Bootstrap: Unsicherheit der "Schätzung" des Unterschieds
hist(T_perm_Diff)
hist(T_boot_Diff)

hist(T_perm_Abs_Diff)
hist(T_boot_Abs_Diff)

hist(T_perm_sq_Diff)
hist(T_boot_sq_Diff)

hist(T_perm_Quot)
hist(T_boot_Quot)

hist(T_perm_max_min_Quot)
hist(T_boot_max_min_Quot)

hist(T_perm_min_max_Quot)
hist(T_boot_min_max_Quot)

hist(T_perm_Quot_0)
hist(T_boot_Quot_0)

hist(T_perm_max_min_Quot_0)
hist(T_boot_max_min_Quot_0)

hist(T_perm_min_max_Quot_0)
hist(T_boot_min_max_Quot_0)

```
