mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-01-21 22:23:22 +01:00
207 lines
6.9 KiB
Plaintext
207 lines
6.9 KiB
Plaintext
```{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()
|
||
```
|