mirror of
https://github.com/ArthurDanjou/ArtStudies.git
synced 2026-02-02 19:31:33 +01:00
Add tp3 bis
This commit is contained in:
206
M1/General Linear Models/TP3-bis/TP3.Rmd
Normal file
206
M1/General Linear Models/TP3-bis/TP3.Rmd
Normal file
@@ -0,0 +1,206 @@
|
||||
```{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()
|
||||
```
|
||||
Reference in New Issue
Block a user