```{r}
setwd('/Users/arthurdanjou/Workspace/studies/M1/General Linear Models/TP3-bis')

library(GGally)
library(broom)
library(scales)
library(car)
library(glue)
library(janitor)
library(marginaleffects)
library(tidyverse)
library(qqplotr)
options(scipen = 999, digits = 5)
```
```{r}
data03 <- read.csv('data03.csv', header = TRUE, sep = ',', dec = '.')
data03$sexe <- as.factor(data03$sexe)
data03$travail <- as.factor(data03$travail)
head(data03, 15)
```
```{r}
tab_sexe <- data03 |>
  count(sexe) |>
  mutate(freq1 = n / sum(n)) |>
  mutate(freq2 = glue("{n} ({label_percent()(freq1)})")) |>
  rename(Sexe = 1, Effectif = n, Proportion = freq1, "n (%)" = freq2)
tab_sexe
```

```{r}
tab_travail <- data03 |>
  count(travail) |>
  mutate(freq1 = n / sum(n)) |>
  mutate(freq2 = glue("{n} ({label_percent()(freq1)})")) |>
  rename(Travail = 1, Effectif = n, Proportion = freq1, "n (%)" = freq2)
tab_travail
```

```{r}
cross_sexe_travail <- data03 |>
  count(sexe, Travail = travail) |>
  group_by(sexe) |>
  mutate(freq1 = n / sum(n)) |>
  mutate(freq2 = glue("{n} ({label_percent(0.1)(freq1)})"), n = NULL, freq1 = NULL) |>
  pivot_wider(names_from = sexe, values_from = freq2)
cross_sexe_travail
```

```{r}
data03 <- mutate(data03, logy = log(y))

data03 |>
  pivot_longer(c(y, logy), names_to = "variable", values_to = "value") |>
  mutate(variable = factor(
    variable,
    levels = c("y", "logy"),
    labels = c("Salaire", "Log-Salaire"))
  ) |>
  ggplot(aes(x = value)) +
  facet_wrap(vars(variable), scales = "free") +
  geom_histogram(
    fill = "dodgerblue",
    color = "black",
    bins = 15) +
  scale_y_continuous(expand = expansion(c(0, 0.05))) +
  scale_x_continuous(breaks = pretty_breaks()) +
  labs(x = "Valeur", y = "Effectif") +
  theme_bw(base_size = 14) +
  theme(strip.text = element_text(size = 11, face = "bold"))
```
```{r}
data03 |>
  pivot_longer(c(y, logy), names_to = "variable", values_to = "value") |>
  mutate(variable = factor(
    variable,
    levels = c("y", "logy"), labels = c("Salaire", "Log-Salaire")
  )) |>
  ggplot(aes(x = sexe, y = value)) +
  facet_wrap(vars(variable), scales = "free") +
  geom_boxplot(
    width = 0.5, fill = "cyan", linewidth = 0.5, outlier.size = 2, outlier.alpha = 0.3
  ) +
  scale_y_continuous(breaks = pretty_breaks()) +
  labs(x = NULL, y = "Valeur") +
  theme_bw(base_size = 14) +
  theme(
    strip.text = element_text(size = 11, face = "bold"),
    panel.border = element_rect(linewidth = 0.5)
  )
```
```{r}
data03 |>
  pivot_longer(c(y, logy), names_to = "variable", values_to = "value") |>
  mutate(variable = factor(
    variable,
    levels = c("y", "logy"), labels = c("Salaire", "Log-Salaire")
  )) |>
  ggplot(aes(x = travail, y = value)) +
  facet_wrap(vars(variable), scales = "free") +
  stat_boxplot(width = 0.25, geom = "errorbar", linewidth = 0.5) +
  geom_boxplot(
    width = 0.5, fatten = 0.25, fill = "cyan", linewidth = 0.5,
    outlier.size = 2, outlier.alpha = 0.3
  ) +
  scale_y_continuous(breaks = pretty_breaks()) +
  labs(x = NULL, y = "Valeur") +
  theme_bw(base_size = 14) +
  theme(
    strip.text = element_text(size = 11, face = "bold"),
    panel.border = element_rect(linewidth = 0.5)
  )
```

```{r}
data03 |>
  group_by(sexe) |>
  summarise(n = n(), "Mean (Salaire)" = mean(y), "SD (Salaire)" = sd(y))
```

```{r}
data03 |>
  group_by(travail) |>
  summarise(n = n(), "Mean (Salaire)" = mean(y), "SD (Salaire)" = sd(y))
```

```{r}
data03 |>
  group_by(sexe, travail) |>
  summarise(n = n(), "Mean (Salaire)" = mean(y), "SD (Salaire)" = sd(y))
```
```{r}
data03 |>
  group_by(sexe) |>
  summarise(n = n(), "Mean (Salaire)" = mean(logy), "SD (Salaire)" = sd(logy))
```

```{r}
data03 |>
  group_by(travail) |>
  summarise(n = n(), "Mean (Salaire)" = mean(logy), "SD (Salaire)" = sd(logy))
```

```{r}
data03 |>
  group_by(sexe, travail) |>
  summarise(n = n(), "Mean (Salaire)" = mean(logy), "SD (Salaire)" = sd(logy))
```
```{r}
data03 <- data03 |>
  mutate(sexef = ifelse(sexe == "Femme", 1, 0), sexeh = 1 - sexef) |>
  mutate(job1 = (travail == "Type 1") * 1) |>
  mutate(job2 = (travail == "Type 2") * 1) |>
  mutate(job3 = (travail == "Type 3") * 1)
head(data03, 15)
```
```{r}
mod1 <- lm(y ~ sexeh, data = data03)
mod2 <- lm(y ~ job2 + job3, data = data03)
mod3 <- lm(y ~ sexeh + job2 + job3, data = data03)
tidy(mod1)
tidy(mod2)
tidy(mod3)
```

Interprétations des coefficients du modèle 1
$𝑦_i = β_0 + β_1 sexeh_i + ϵ_i$
• (Intercept): $\hat{β_0} = 7.88$ : Salaire moyen chez les femmes
• sexeh: $\hat{𝛽1} = 2.12$ : Les hommes gagnent en moyenne 2.12 dollars par heure de plus que les femmes
(significatif).

Interprétations des coefficients du modèle 2
$𝑦_i = β_0 + β_1 job2_i + β_2 job3_i + ϵ_i$
• (Intercept): $\hat{β_0} = 12.21$ : Salaire moyen pour le travail de type 1.
• job2: $\hat{β_1} = −5.09$ : la différence de salaire entre le travail de type 2 et celui de type 1 est de −5.09 dollars par heure en moyenne (significatif)
• job3: $\hat{β_2} = −3.78$ : la différence de salaire entre le travail de type 3 et celui de type 1 est de −3.78 dollarspar heure en moyenne (significatif).

Interprétations des coefficients du modèle 3
$𝑦_i = β_0 + β_1 sexeh_i + β_2 job2_i + β_3 job3_i + ϵ_i$
• (Intercept): $\hat{β_0} = 11.13$ : Salaire moyen chez les femmes avec un travail de type 1
• sexeh: $\hat{β_1 = 1.97$ : Les hommes gagnent en moyenne 1.97 dollars par heure de plus que les femmes
(significatif), quelque soit le type de travail.
• job2: $\hat{β_2} = −4.71$ : la différence de salaire entre le travail de type 2 et celui de type 1 est de −4.71 dollars par heure en moyenne (significatif), quelque soit le sexe.
• job3: $\hat{β_3} = −4.3$ : la différence de salaire entre le travail de type 3 et celui de type 1 est de −4.3 dollars par heure en moyenne (significatif), quelque soit le sexe.

```{r}
anova(mod1, mod3)
```
La p-value du test est inférieur à 0.05, on rejette donc $𝐻0$ et on conclue qu’au moins un des coefficients (𝛽1, 𝛽2) est significativement non nulle.
• On vient de tester si le type de travail est associé au salaire horaire. C’est donc le cas pour ces données.
```{r}
linearHypothesis(mod3, c("job2", "job3"))
linearHypothesis(mod3, "job2 = job3")
```
Le test est non significatif (𝑝 = 0.44). On ne rejette pas $𝐻0$ et on conclue qu’il n’y pas de différence de salaire horaire entre le travail de type 2 et le travail de type 3, quelque soit le sexe.
```{r}
mod3bis <- lm(y ~ sexe + travail, data = data03)
summary(mod3bis)
```
Les modèles mod3bis1 et mod3 sont identiques
• Pas besoins de créer toutes ces variables indicatrices si nos variables catégorielles sont de type factor !
• La référence sera toujours la première modalité du factor.
• On peut changer la référence avec `relevel()` ou avec `C()`. Par exemple, si on veut la modalité 2 en référence pour le travail
```{r}
lm(y ~ sexe + relevel(travail, ref = 2), data = data03) |>
  tidy()
```
