

# Vorbereitungen {visibility="hidden" .unnumbered .unlisted}

Der folgende R-Chunk soll Ihnen bei der Installation von benötigten Paketen helfen und eine geeignete Dateistruktur anlegen, wenn sie nicht schon da ist. Speichern Sie die qmd-Datei in einem Ordner auf Ihrem Rechner ab (am besten in einem Ordner mit Cloudsynchronisation wie Dropbox, SWITCH oder oneDrive). Wenn Sie den folgenden Chunk ausführen, werden Ihnen in dem Ordner die Unterordner "files", "data", und "images" angelegt (wenn sie nicht schon da sind und im Fall unangetastet bleiben). Dann wird die _common.R heruntergeladen, in der ein paar Optionen gespeichert sind. Wenn Sie daran Änderungen vornehmen und diese für später behalten möchten, müssen Sie die Zeile mit "download.file..." beginnt auskommentieren (# davor). 

Versuchen Sie die folgenden Zeilen zu verstehen und führen Sie die Befehle aus. Wenn Sie etwas nicht verstehen, googlen Sie die Pakte (zB "r corrr") und schauen sich dort die Vignette des Paketes an. 

Mit dem Die Installation von benötigten Paketen ist weiter vereinfacht. 

```{r}
#| label: Installation
#| echo: false 
#| eval: false

# Prüfe, ob es in dem Ordner in der die Uebung_2.qmd gespeichert ist, folgende Unterordner gibt und wenn nicht, dann lege sie an
if(dir.exists("files")){} else {dir.create("files")}
if(dir.exists("data")){} else {dir.create("data")}
if(dir.exists("images")){} else {dir.create("images")}

# lade die aktualisierte _common.R und speichere sie im Ordner "files"
download.file("https://stat.ikmz.uzh.ch/Aufbau/Folien/Sitzung_06/files/_common.R", destfile= "files/_common.R")

# Wenn die folgenen Pakete jeweils nicht schon installiert sind, werden sie installiert

if (!require("devtools")) install.packages("devtools")

if(!require("corrr")) install.packages("corrr")
if(!require("kableExtra")) install.packages("kableExtra")
if(!require("lm.beta")) install.packages("lm.beta")
if(!require("apaTables")) install.packages("apaTables")
if(!require("MOTE")) install.packages("MOTE")

# jetzt noch die Problembär-Pakete forcierter installieren. 
# Wenn die Nachricht kommt, das die Pakete seit der letzten Installation nicht geändert wurden und daher geskippt werden, is das perfekt in Ordnung
devtools::install_github("kassambara/ggpubr") 
devtools::install_github("rstudio/keras")
devtools::install_github("strengejacke/sjmisc")
devtools::install_github("strengejacke/sjPlot")

```


# Übung 2

```{r}
#| label: setup # Wenn das Label eines Chunks "setup" ist (darf es nur einmal geben), wird dieses immer automatisch am Anfang ausgeführt.
#| echo: false 

# führe die _common.R aus
source("files/_common.R")
```


### Ü2.1 Laden Sie die Daten {.unnumbered .unlisted .scrollable .scrollable}

```{r}
#| label: Video-Games-Daten-laden
#| echo: true
#| code-fold: false
#| code-summary: R-Code

download.file("http://www.discoveringstatistics.com/docs/ds_data_files/SPSS%20Data%20Files/Video%20Games.sav", "data/Video_Games.sav", quiet = TRUE)

Video_Games <- haven::read_spss("data/Video_Games.sav")

head(Video_Games)
```

## Ü2.2 Vollziehen Sie nach {.unnumbered .unlisted .scrollable .smaller} 

Schauen Sie sich folgenden R-Chunk an und versuchen ihn mit Hilfe von google und Paketvignetten zu verstehen

```{r}
#| label: Umkodieren-CaUnTs-in-Anti_Sozial
#| fig.height: 5
#| echo: true
#| code-fold: false
#| code-summary: R-Code

# Nehme die Variable für Antisoziales Verhalten (CaUnTs) und bilde eine Gruppenvariable (Anti_Sozial) daraus und drei Dummyvariablen (Anti_Soz_gering bis Anti_Soz_hoch).

Video_Games <- Video_Games  |>
  mutate(Anti_Sozial = case_match(CaUnTs,
    c(0:10) ~ 1,
    c(11:30) ~ 2,
    c(31:200) ~ 3, 
    .default = NA
  )) |>
  sjlabelled::var_labels(Anti_Sozial = "Antisoziales Verhalten")

Video_Games |> sjmisc::frq(Anti_Sozial)

```


### Ü2.3 Kommentieren Sie, was in den Befehlszeilen gemacht wird {.unnumbered .unlisted .scrollable}

Schreiben Sie Kommentare, die erklären, was die Befehle und Funktionen tun.

```{r}
#| fig.cap: "Zusammenhang Videospiele zu Aggression für Menschen mit hohem vs. geringerem antisozialen Verhalten"
#| fig.height: 5
#| echo: true
#| code-fold: true
#| code-summary: R-Code
#| 
Video_Games <- Video_Games  |>
  mutate(Anti_Soz_hoch = case_match(Anti_Sozial,
   3 ~ 1,
   .default = 0
  ), 
  Anti_Soz_mittel = case_match(Anti_Sozial, 
  2 ~ 1, 
  .default = 0))

Video_Games  |>
  ggplot2::ggplot(aes(x = Vid_Games, y = Aggression, color = as.factor(Anti_Soz_hoch))) +
  geom_point() + 
  scale_color_manual(values=c(c(Farben[3], Farben[4]))) + 
  geom_smooth(method=lm, se=FALSE, fullrange=TRUE) + 
  theme_minimal()
```

### Ü2.4 Interpretieren Sie die Regression in Ihren Worten {.unnumbered .unlisted .scrollable .smaller}

a. Was bedeutet `lm()`? 
b. Was wird in das "Modell4" geschrieben? 
c. Was steht links und was rechts von der Tilde (~)?  
d. Interpretieren Sie den Regressionsoutput! 
e. Wie kann es sein, dass das b für "Anti_Soz_hoch" stark negativ ist und das BETA positiv? (bei Ambitionen auf Note 6)
f. Was sagen Ihnen die Toleranz- und die VIF-Werte?

```{r}
#| echo: true
#| code-fold: true
#| code-summary: R-Code
#| 
Modell4 <- lm(Aggression ~ Vid_Games + Vid_Games * Anti_Soz_hoch, data = Video_Games)

olsrr::ols_vif_tol(Modell4)

lm.beta::lm.beta(Modell4)

summary(Modell4)

sjPlot::tab_model(Modell4, 
                  show.std = TRUE, 
                  show.est = TRUE, 
                  show.r2 = TRUE
                  )
```

### Ü2.5 Was geschieht hier? {.unnumbered .unlisted .scrollable .smaller}

a. Was macht wird durch die Funktion `scale()` erreicht?
b. Was hat sich in der Regression zum letzten Modell geändert? 
c. Warum ist $R^2$ nicht grösser, obwohl das Problem mit der Multikollinearität gelöst wurde? (bei 6-Ambitionen)
d. Warum hat `scale` das Problem mit der Multikollinearität gelöst? (bei 6-Ambitionen)

```{r}
#| echo: true
#| code-fold: true
#| code-summary: R-Code
#| 
Video_Games_z <- Video_Games %>% 
  mutate(Vid_Games = scale(Vid_Games))

Modell4 <- lm(Aggression ~ Vid_Games + Anti_Soz_hoch + Vid_Games * Anti_Soz_hoch, data = Video_Games_z)

olsrr::ols_vif_tol(Modell4)

sjPlot::tab_model(Modell4, 
                  show.std = TRUE, 
                  show.est = TRUE, 
                  show.r2 = TRUE, 
                  show.fstat = TRUE
                  )
```

### Ü2.6 Wie sind diese Ergebnisse zu interpretieren? {.unnumbered .unlisted .smaller .scrollable}

a. Warum ist das $R^2$ so viel grösser? 
b. Was bedeutet es, dass die beiden "Anti Soz"-Variablen signifikant sind?
c. Was bedetet es, dass die Interaktion aus "Vid Games" x "Anti Soz mittel" nicht signifikant ist?

```{r}
#| echo: true
#| code-fold: true
#| code-summary: R-Code


Video_Games_z <- Video_Games  |>
  mutate(across(everything(), ~scale(.x))) # verändere alle numerischen Variablen, indem sie z-transformiert werden (scale)

Modell5 <- lm(Aggression ~ Vid_Games + Anti_Soz_hoch + Anti_Soz_mittel +
                Vid_Games * Anti_Soz_hoch + Vid_Games * Anti_Soz_mittel,
              data = Video_Games_z)

olsrr::ols_vif_tol(Modell5)

sjPlot::tab_model(Modell5, 
                  show.std = TRUE, # zeige die standardisierten Koeffizienten
                  show.est = TRUE, # zeige die unstandardisierten estimates
                  show.r2 = TRUE, # zeige R^2
                  show.fstat = TRUE,
                  string.est = "b",
                  string.std = "std. b"
                  )
```


### Ü2.7 Sind die Voraussetzungen erfüllt? {.unnumbered .unlisted .scrollable}

a. Suchen Sie sich aus der ersten Übung die Befehle für die Prüfung der Voraussetzungen der Regressionsanalyse, hängen Sie die an die Übung und passen Sie sie so an, dass sie funktionieren.

b. Waren die Analysen erlaubt? 

c. Was könnte man tun, wenn Voraussetzungen verletzte werden. Recherchieren Sie. (bei 6-Ambitionen)
