---
title: "Statistik 3"
subtitle: "Übung 4"
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_Statistik3_4"
---

```{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 vierten Übung Statistik 3. Diese Übung trainiert mehrere neue Befehle um anschliessend verschiedene Kodierungen in R durchzuführen.

## Agenda
- R-Befehle
- Dummykodierung
- Ungewichtete Effektkodierung
- Gewichtete Effektkodierung
- Vergleich mit Mittelwerten

## 1. R-Befehle - Einführung 1

\

Führen Sie zunächst folgenden R-Code aus, um einen Beispieldatensatz für die Befehle zu erhalten:

```{R}
#| eval: false
#| echo: true
Beispiel <- data.frame(VP = 1:10,
                       Geschlecht = c("m","m","w","d","m","d","w","w","w","w"),
                       Neugier = c(22,31,23,21,32,42,32,18,15,16))
```


## 1. R-Befehle - Einführung 2

\

**aggregate(x, data, FUN)**

\

*x* 

- Formel, die angibt, welche Spalte nach den Stufen anderer Spalten zusammengefasst werden soll
- Beispiele (mehr UVs/AVs möglich)
  - V1~V2 (fasst die Werte der Spalte V1 für die Stufen der Spalte V2 getrennt zusammen)
  - V1~V2+V3 (fasst die Werte der Spalte V1 getrennt nach Stufenkombinationen von V1 und V2 zusammen)
  
*data*

- Name des Datensatz
    
*FUN*

- Funktion die auf Werte mit der gleichen UV-Kombination angewandt werden soll
- häufig mean oder sd

## 1. R-Befehle - Übung 1

Bestimmen Sie mittels aggregate() die Mittelwerte und Standardabweichungen der Neugier je Geschlecht.

|  |  |  |
|---|---|-------|
|$\overline x_{m}$ |$\quad=\quad$ |`r forms_string( "28.33", width = 7,  obfuscate = FALSE)`|
|$\overline x_{w}$ |$\quad=\quad$ |`r forms_string( "20.80", width = 7,  obfuscate = FALSE)`|
|$\overline x_{d}$ |$\quad=\quad$ |`r forms_string( "31.50", width = 7,  obfuscate = FALSE)`|
|$s_{m}$ |$\quad=\quad$ |`r forms_string( "5.51", width = 7,  obfuscate = FALSE)`|
|$s_{w}$ |$\quad=\quad$ |`r forms_string( "6.98", width = 7,  obfuscate = FALSE)`|
|$s_{d}$ |$\quad=\quad$ |`r forms_string( "14.85", width = 7,  obfuscate = FALSE)`|

```{R}
#| include: false
#| eval: false
Beispiel <- data.frame(VP = 1:10,
                       Geschlecht = c("m","m","w","d","m","d","w","w","w","w"),
                       Neugier = c(22,31,23,21,32,42,32,18,15,16))
aggregate(Neugier~Geschlecht,Beispiel,mean)
aggregate(Neugier~Geschlecht,Beispiel,sd)
```

## 1. R-Befehle - Einführung 3

\

**table(x)**


*x* 

- Vektor oder Variable
- es wird eine Häufigkeitstabelle für diese Variable ausgegeben

**unique(x)**

*x* 

- Vektor oder Variable
- es wird jede Ausprägung der Variable genau 1x ausgegeben


## 1. R-Befehle - Einführung 4

\

Datensatz[Zeilen,Spalten]


*Zeilen*

- Regel/Bedingung für die Zeilen angeben, die auszuwählen sind
- keine Angabe = alle Zeilen

*Spalten*

- Regel/Bedingung für die Spalten angeben, die auszuwählen sind
- keine Angabe = alle Spalten

*Beispiel*

- Datensatz[1:3,2:4] gibt für die ersten drei Zeilen Werte der 2. bis 4. Spalte zurück
- Datensatz[Datensatz\$Variable == "Text"] gibt alle Spalten für die Zeilen des Datensatzes zurück, bei denen die Spalte Variable den Wert "Text" hat.
- Datensatz\$Variable2[Datensatz\$Variable3 == 3] gibt die Werte von Variable2 zurück für alle Zeilen die in Variable3 den Wert 3 haben

## 1. R-Befehle - Übung 2

\

Führen Sie die folgenden Aufträge durch

- lassen sie sich alle Werte von VP (1x ausgeben)
- Bestimmen Sie die Häufigkeiten von Geschlecht
- Lassen Sie sich alle Zeilen ausgeben, deren VP-Nummer grösser als 5 ist
- Lassen Sie sich die Werte der Neugier ausgeben für Personen weiblichen Geschlechts
- Ersetzen Sie die Werte der Neugier für Personen, die sich nicht dem männlichen Geschlecht zugehörig fühlen mit 999
- legen Sie eine neue Spalte Test an, jede Person soll den Wert 80 haben

```{R}
#| include: false
#| eval: false
unique(Beispiel$VP)
table(Beispiel$Geschlecht)
Beispiel[Beispiel$VP>5,]
Beispiel[Beispiel$Geschlecht=="w",]
Beispiel$Neugier[Beispiel$Geschlecht!="m"] <- 999
Beispiel$Test <- 80
```


## 2. Dummykodierung - Einführung

Jede der Kodierungen wird verwendet um den Einfluss der Ausprägungen nominalskalierter Variablen auf den Regressanden bestimmen zu können.

\

Bei der Dummykodierung geht es darum, den Einfluss einer Ausprägung (Referenz) mit den Einflüssen der anderen Ausprägungen zu vergleichen.

\

Dazu erstellen wir für jede Ausprägung (ausser der Referenz) eine neue (Dummy-)Variable. Eine Person bekommt in einer bestimmten Dummyvariable den Wert 1 zugewiesen, wenn Sie selber diese Ausprägung aufweist, ansonsten den Wert 0.

## 2. Dummykodierung - Übung 1

Importieren Sie zunächsten den Datensatz Uebung_Statistik3_4a.csv und verschaffen Sie sich einen Überblick über die darin enthaltenen Variablen/Spalten.

Wir werden eine Dummykodierung für die Variable Lieblingsessen vornehmen um anschliessend die Offenheit der Personen vorherzusagen. Nutzen Sie table() um alle möglichen Ausprägungen der Variable Lieblingsessen zu bestimmen. 
Wie viele verschiedene Ausprägungen sind vorhanden?

`r forms_num( 5, width = 7,  obfuscate = FALSE)`

Wie viele Dummyvariablen sind somit nötig?

`r forms_num( 4, width = 7,  obfuscate = FALSE)`
```{R}
#| include: false
#| eval: false
unique(Uebung_Statistik3_4A$Lieblingsessen)
table(Uebung_Statistik3_4A$Lieblingsessen)
#Wenn wir die Anzahl an verschiedenen Ausprägungen nicht zählen wollen, können wir noch ein length() um den jeweiligen Befehl hinzufügen
```
\

Führen Sie die Dummykodierung durch

- Die Referenz soll zunächst noch offen sein. Daher legen Sie für jede Ausprägung des Lieblingsessens eine neue Spalte (Dummyvariable) im Datensatz an. Der Name der Spalte sei identisch mit der jeweiligen Ausprägung.
- Weisen Sie zunächst allen Personen bei jeder Dummyvariable den Wert 0 zu
- Weisen Sie anschliessend jeder Dummyvariable den Wert 1 zu, für jede Person, deren Lieblingsessen der Ausprägung der Dummyvariable entspricht.
- Benutzen Sie table() mit jeder der Dummyvariablen um zu überprüfen ob die Anzahl der Personen mit dem Wert 1, der tatsächlichen Häufigkeit der Ausprägung in Stichprobe entspricht.

```{R}
#| include: false
#| eval: false

# Neue Spalten mit Wert 0
Uebung_Statistik3_4A$Glace  <- 0
Uebung_Statistik3_4A$Pasta  <- 0
Uebung_Statistik3_4A$Pizza  <- 0
Uebung_Statistik3_4A$Pommes <- 0
Uebung_Statistik3_4A$Sushi  <- 0

#für die richtigen Personen den Wert 1 eintragen
Uebung_Statistik3_4A$Glace[Uebung_Statistik3_4A$Lieblingsessen=="Glace"]   <- 1
Uebung_Statistik3_4A$Pasta[Uebung_Statistik3_4A$Lieblingsessen=="Pasta"]   <- 1
Uebung_Statistik3_4A$Pizza[Uebung_Statistik3_4A$Lieblingsessen=="Pizza"]   <- 1
Uebung_Statistik3_4A$Pommes[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"] <- 1
Uebung_Statistik3_4A$Sushi[Uebung_Statistik3_4A$Lieblingsessen=="Sushi"]   <- 1

#Häufigkeiten kontrollieren
table(Uebung_Statistik3_4A$Lieblingsessen)

table(Uebung_Statistik3_4A$Glace)  
table(Uebung_Statistik3_4A$Pasta)  
table(Uebung_Statistik3_4A$Pizza)  
table(Uebung_Statistik3_4A$Pommes) 
table(Uebung_Statistik3_4A$Sushi)  
```

## 2. Dummykodierung - Übung 2

\

Normalerweise wird für die Referenz keine Dummyvariable angelegt. Führen Sie trotzdem eine Regression mit Offenheit als AV und allen Dummyvariablen als UV durch und lassen Sie sich die Ergebnisse mittels summary() anzeigen. Was fällt Ihnen auf?

```{R}
#| include: false
#| eval: false


ErgAlleDummies <- lm(Offenheit ~ Glace + Pasta + Pizza + Pommes + Sushi, Uebung_Statistik3_4A)
summary(ErgAlleDummies)
# Für die letzte Variable wird NA angezeigt, das liegt daran, dass perfekte Multikollinearität exisitiert (Sushi == 1 - Glace - Pasta - Pizza - Pommes). Daher wird die Variable nicht berücksichtigt.
```

\

Führen Sie die Regression einmal mit Pommes und einmal mit Pizza als Referenz durch (die jeweilige Dummyvariable sollte also nicht mehr enthalten sein). Schauen Sie sich jeweils den Haupteffekt von Sushi an. Was fällt Ihnen auf und wie kommt es dazu?

```{R}
#| include: false
#| eval: false


ErgRefPommes<- lm(Offenheit ~ Glace + Pasta + Pizza + Sushi, Uebung_Statistik3_4A)
summary(ErgRefPommes)

ErgRefPizza<- lm(Offenheit ~ Glace + Pasta + Pommes + Sushi, Uebung_Statistik3_4A)
summary(ErgRefPizza)

# Der Regressionskoeffizient ist unterschiedlich (und auch die statistische Signifikanz), da einmal der Unterschied in der Offenheit zwischen Pommesliebhabern und Sushiliebhabern geschätzt wird und einmal der Unterschied zwischen Pizzaliebhabern und Sushiliebhabern, je nachdem, was die Referenz ist.
```

\

Wie sind die Regressionskoeffizienten zu interpretieren? Was sagt uns ein signifikanter/ nicht signifikanter Koeffizient jeweils?


## 3. Ungewichtete Effektkodierung - Einführung

\

Bei der ungewichteten Effektkodierung geht es darum, den Einfluss jeder Ausprägung (ausser der Referenz) mit dem ungewichteten Mittelwert über die Ausprägungen zu vergleichen.

\

Dazu erstellen wir für jede Ausprägung (ausser der Referenz) eine neue (Effekt-)Variable. Eine Person bekommt in einer bestimmten Effektvariable den Wert

- 1 zugewiesen, wenn sie selber diese Ausprägung aufweist. 
- 0 zugewiesen, wenn sie eine andere Ausprägung als die Ausprägung der Effektvariable und der Referenz aufweist.
- -1 zugewiesen, wenn sie als Ausprägung die Referenz aufweist.

## 3. Ungewichtete Effektkodierung - Übung 1

\

Führen Sie die ungewichtete Effektkodierung mit Pommes als Referenz in R  durch.
Das heisst, für Pommes ist keine Effektvariable notwendig.

\

Überprüfen Sie die Häufigkeiten erneut mittels table().

```{R}
#| include: false
#| eval: false

# Neue Spalten mit Wert 0
Uebung_Statistik3_4A$Glace_ug  <- 0
Uebung_Statistik3_4A$Pasta_ug  <- 0
Uebung_Statistik3_4A$Pizza_ug  <- 0
Uebung_Statistik3_4A$Sushi_ug  <- 0

#für die richtigen Personen den Wert 1 eintragen
Uebung_Statistik3_4A$Glace_ug[Uebung_Statistik3_4A$Lieblingsessen=="Glace"]   <- 1
Uebung_Statistik3_4A$Pasta_ug[Uebung_Statistik3_4A$Lieblingsessen=="Pasta"]   <- 1
Uebung_Statistik3_4A$Pizza_ug[Uebung_Statistik3_4A$Lieblingsessen=="Pizza"]   <- 1
Uebung_Statistik3_4A$Sushi_ug[Uebung_Statistik3_4A$Lieblingsessen=="Sushi"]   <- 1

#für die Personen mit der Referenz den Wert -1 eintragen
Uebung_Statistik3_4A$Glace_ug[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -1
Uebung_Statistik3_4A$Pasta_ug[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -1
Uebung_Statistik3_4A$Pizza_ug[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -1
Uebung_Statistik3_4A$Sushi_ug[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -1

#Häufigkeiten kontrollieren
table(Uebung_Statistik3_4A$Lieblingsessen)

table(Uebung_Statistik3_4A$Glace_ug)  
table(Uebung_Statistik3_4A$Pasta_ug)  
table(Uebung_Statistik3_4A$Pizza_ug)  
table(Uebung_Statistik3_4A$Sushi_ug)  
```

## 3. Ungewichtete Effektkodierung - Übung 2

\

Führen Sie die Regression der Offenheit auf die (ungewichteten) Effektvariablen durch. Welche Hypothesen wurden diesmal für die einzelnen Regressionskoeffizienten geprüft.

```{R}
#| include: false
#| eval: false


ErgRefPommes_ug<- lm(Offenheit ~ Glace_ug + Pasta_ug + Pizza_ug + Sushi_ug, Uebung_Statistik3_4A)
summary(ErgRefPommes_ug)
```

\

Wie sind die Regressionskoeffizienten zu interpretieren? Was sagt uns ein signifikanter/ nicht signifikanter Koeffizient jeweils?

## 4. Gewichtete Effektkodierung - Einführung

\

Bei der gewichteten Effektkodierung geht es darum, den Einfluss jeder Ausprägung (ausser der Referenz) mit dem gewichteten Mittelwert über die Ausprägungen zu vergleichen.

\

Dazu erstellen wir für jede Ausprägung (ausser der Referenz) eine neue (Effekt-)Variable. Eine Person bekommt in einer bestimmten Effektvariable den Wert

- 1 zugewiesen, wenn sie selber diese Ausprägung aufweist. 
- 0 zugewiesen, wenn sie eine andere Ausprägung als die Ausprägung der Effektvariable und der Referenz aufweist.
- $-\frac{n_{Ausprägung_Effektvariable}}{n_{Ausprägung_Referenz}}$ zugewiesen, wenn sie als Ausprägung die Referenz aufweist.

## 2. Gewichtete Effektkodierung - Übung 1

\

Führen Sie die gewichtete Effektkodierung mit Pommes als Referenz in R  durch.
Das heisst, für Pommes ist keine Effektvariable notwendig.

\

Überprüfen Sie die Häufigkeiten erneut mittels table().

```{R}
#| include: false
#| eval: false

# Neue Spalten mit Wert 0
Uebung_Statistik3_4A$Glace_g  <- 0
Uebung_Statistik3_4A$Pasta_g  <- 0
Uebung_Statistik3_4A$Pizza_g  <- 0
Uebung_Statistik3_4A$Sushi_g  <- 0

#für die richtigen Personen den Wert 1 eintragen
Uebung_Statistik3_4A$Glace_g[Uebung_Statistik3_4A$Lieblingsessen=="Glace"]   <- 1
Uebung_Statistik3_4A$Pasta_g[Uebung_Statistik3_4A$Lieblingsessen=="Pasta"]   <- 1
Uebung_Statistik3_4A$Pizza_g[Uebung_Statistik3_4A$Lieblingsessen=="Pizza"]   <- 1
Uebung_Statistik3_4A$Sushi_g[Uebung_Statistik3_4A$Lieblingsessen=="Sushi"]   <- 1


#für die Personen mit der Referenz den Wert -n_Ausprägung/n_Referenz eintragen
table(Uebung_Statistik3_4A$Lieblingsessen)
Uebung_Statistik3_4A$Glace_g[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -12/11
Uebung_Statistik3_4A$Pasta_g[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -13/11
Uebung_Statistik3_4A$Pizza_g[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -8/11
Uebung_Statistik3_4A$Sushi_g[Uebung_Statistik3_4A$Lieblingsessen=="Pommes"]   <- -1/11

#Häufigkeiten kontrollieren
table(Uebung_Statistik3_4A$Lieblingsessen)

table(Uebung_Statistik3_4A$Glace_g)  
table(Uebung_Statistik3_4A$Pasta_g)  
table(Uebung_Statistik3_4A$Pizza_g)  
table(Uebung_Statistik3_4A$Sushi_g)  
```

## 4. Gewichtete Effektkodierung - Übung 2

\

Führen Sie die Regression der Offenheit auf die (gewichteten) Effektvariablen durch. Welche Hypothesen wurden diesmal für die einzelnen Regressionskoeffizienten geprüft.

```{R}
#| include: false
#| eval: false


ErgRefPommes_g<- lm(Offenheit ~ Glace_g + Pasta_g + Pizza_g + Sushi_g, Uebung_Statistik3_4A)
summary(ErgRefPommes_g)
```

\

Wie sind die Regressionskoeffizienten zu interpretieren? Was sagt uns ein signifikanter/ nicht signifikanter Koeffizient jeweils?

## 4. Vergleich mit Mittelwerten - Einführung
Alle unsere Hypothesen beziehen sich auf verschiedene Mittelwerte oder Mittelwertsdifferenzen. Im letzten Abschnitt werden Sie verschiedene Mittelwerte bestimmen und diese mit Ihren Regressionskoeffizienten vergleichen.

## 4. Vergleich mit Mittelwerten - Übung

\

Bestimmen Sie folgende Mittelwerte mittels der Funktionen mean() und/oder aggregate().

- den Mittelwert der Offenheit über die Gesamtstichprobe
- die Mittelwerte der Offenheit getrennt nach den Lieblingsessen
- den Mittelwert über die "Mittelwerte der Offenheit getrennt nach den den Lieblingsessen"

Vergleichen Sie diese Mittelwerte mit den Achsenabschnitten ihrer Regressionen. Was fällt Ihnen auf?

Können Sie auch die anderen Regressionskoeffizienten aus den Mittelwerten herleiten?

```{R}
#| include: false
#| eval: false


#Gesamtmittelwert
mean(Uebung_Statistik3_4A$Offenheit) # entspricht b0 der gewichteten Effektkodierung = gewichteter Mittelwert

#Mittelwerte je Ausprägung
aggregate(Offenheit ~ Lieblingsessen, Uebung_Statistik3_4A, mean) # einzelne Mittelwerte entsprechen den b0 der Regression bei der Dummykodierung (wenn diese Ausprägung die Referenz bildet)


# Mittelwert über die Mittelwerte je Ausprägung
Zwischenwerte <- aggregate(Offenheit ~ Lieblingsessen, Uebung_Statistik3_4A, mean)

mean(Zwischenwerte$Offenheit) #b0 bei der ungewichteten Effektkodierung = ungewichteter Mittelwert

#die bs bei der Dummykodierung sind die Differenzen der Mittelwerte je Ausprägung und dem Mittelwert der Referenz
#die bs bei der gewichteten Effektkodierung sind die Differenzen der Mittelwerte je Ausprägung und dem gewichteten Mittelwert
#die bs bei der ungewichteten Effektkodierung sind die Differenzen der Mittelwerte je Ausprägung und dem ungwewichteten Mittelwert
```




