# Laden der Pakete ####
library(report) # Einfaches Erstellen von statistischen Berichten
library(marginaleffects) # Für Vorhersagen
library(tidyverse) # Datenmanagement und Visualisierung: https://www.tidyverse.org/

# Laden und aufbereiten des Datensatzes ####
# Kopiert aus Skript zur Vorlesung ####
d <- haven::read_stata(here::here("data/Vanerkel_Vanaelst_2021.dta")) |>
  rename(
    Political_knowledge = PK,
    Personalized_news = personalized_news,
    Radio = News_channels_w4_1,
    Television = News_channels_w4_2,
    Newspapers = News_channels_w4_3,
    Online_news_sites = News_channels_w4_4,
    Twitter = News_channels_w4_5,
    Facebook = News_channels_w4_6
  ) |>
  mutate(
    Gender = as_factor(Gender),
    Education = as_factor(Education),
    trad = factor(trad, labels = c(
      "traditional news diet: no",
      "traditional news diet: yes"
    ))
  )

### 2) Prüfen Sie die Hypothese: Je häufiger eine Person Zeitungen nutzt, desto höher ist ihr politisches Wissen.
# - Zeitungsnutzung: Variable `Newspapers`
# - Stellen Sie den Zusammenhang als 'jittered Scatterplot' dar.
theme_set(theme_classic()) # Layout des Plots
d |> 
  ggplot(aes(Newspapers, Political_knowledge)) + 
  geom_jitter(width = 0.3, height = 0.3) + 
  geom_smooth(method = "lm", se = FALSE, linewidth = 2)
## `geom_smooth()` using formula = 'y ~ x'

# - Schätzen Sie den Zusammenhang mit einer linearen Regression.
m_pk_np <- lm(Political_knowledge ~ Newspapers, data = d)
m_pk_np |> 
  report_table(metrics = "R2")
## Parameter   | Coefficient |       95% CI | t(991) |      p | Std. Coef.
## -----------------------------------------------------------------------
## (Intercept) |        2.11 | [1.93, 2.30] |  22.34 | < .001 |   3.03e-16
## Newspapers  |        0.27 | [0.22, 0.31] |  10.95 | < .001 |       0.33
##             |             |              |        |        |           
## R2          |             |              |        |        |           
## 
## Parameter   | Std. Coef. 95% CI |  Fit
## --------------------------------------
## (Intercept) |     [-0.06, 0.06] |     
## Newspapers  |     [ 0.27, 0.39] |     
##             |                   |     
## R2          |                   | 0.11
# - Sagen Sie das politische Wissen für Personen mit unterdurchschnittlicher, durchschnittlicher und überdurchschnittlicher Zeitungsnutzung voraus.
m_pk_np |> 
  avg_predictions(variables = list(Newspapers = "threenum"))
## 
##  Newspapers Estimate Std. Error    z Pr(>|z|)   S 2.5 % 97.5 %
##        1.83     2.60     0.0578 44.9   <0.001 Inf  2.48   2.71
##        3.52     3.04     0.0408 74.5   <0.001 Inf  2.96   3.12
##        5.20     3.49     0.0578 60.4   <0.001 Inf  3.38   3.60
## 
## Type: response
m_pk_np |> 
  plot_predictions(condition = list(Newspapers = "threenum"))

# - Interpretieren Sie die Ergebnisse. Schreiben Sie dazu einen kurzen Text.

# BONUS: Überprüfen Sie, inwiefern das Modell die statistischen Annahmen erfüllt. 
library(performance)
check_model(m_pk_np, check = c("linearity", "normality", "homogeneity", "outliers"))

check_residuals(m_pk_np) |> plot()

# - BONUS: Zentrieren Sie die Variable `Newspapers` um ihren Mittelwert. Verwenden Sie die neue Variable `Newspapers_z` in einer Regressionsanalyse und vergleichen Sie die Ergebnisse.
d <- d |> 
  mutate(Newspapers_z = Newspapers - mean(Newspapers))
m_pk_npz <- lm(Political_knowledge ~ Newspapers_z, data = d)
m_pk_npz |> 
  report_table(metrics = "R2")
## Parameter    | Coefficient |       95% CI | t(991) |      p | Std. Coef.
## ------------------------------------------------------------------------
## (Intercept)  |        3.04 | [2.96, 3.12] |  74.54 | < .001 |   2.64e-16
## Newspapers z |        0.27 | [0.22, 0.31] |  10.95 | < .001 |       0.33
##              |             |              |        |        |           
## R2           |             |              |        |        |           
## 
## Parameter    | Std. Coef. 95% CI |  Fit
## ---------------------------------------
## (Intercept)  |     [-0.06, 0.06] |     
## Newspapers z |     [ 0.27, 0.39] |     
##              |                   |     
## R2           |                   | 0.11