library(tidyverse)
library(titanic)
library(janitor)
data("titanic_train")
titanic_eiom <- titanic_train |>
clean_names() |>
transmute(
passenger_id,
survie = survived,
verite = factor(
if_else(survived == 1, "survecu", "non_survecu"),
levels = c("non_survecu", "survecu")
),
classe = factor(
pclass,
levels = c(3, 2, 1),
labels = c("3e", "2e", "1re")
),
sexe = factor(
sex,
levels = c("male", "female"),
labels = c("homme", "femme")
),
age,
tarif = fare,
famille_bord = sib_sp + parch
)Mission 1: contester une explication trop simple
Associations stratifiées, données manquantes et formule de modèle
Votre mandat
Une personne affirme que l’association visible entre le sexe enregistré et la survie s’explique uniquement par la répartition des classes. Votre équipe doit vérifier cette affirmation sans ajuster encore de modèle.
Vous devez comparer les proportions à l’intérieur de chaque classe, examiner qui risque d’être retiré lorsque l’âge manque, puis proposer un modèle principal et une extension à vérifier plus tard.
Durée: 25 minutes.
Production: un graphique stratifié, un tableau sur les âges manquants, deux formules candidates et un verdict de quatre phrases.
Ce que vous devez apprendre
À la fin de cette mission, vous devez pouvoir:
- distinguer une association marginale d’une association examinée à l’intérieur de groupes;
- reconnaître qu’une différence peut persister tout en changeant d’ampleur selon la classe;
- étudier la composition des données exclues plutôt que compter seulement les valeurs manquantes;
- proposer une interaction comme hypothèse à évaluer, sans la déclarer automatiquement nécessaire;
- refuser une explication causale trop simple à partir de données descriptives.
Organisation de l’équipe
La personne pilote prépare les tableaux. La personne interprète compare les proportions à l’intérieur de chaque classe. La personne vérificatrice examine les données manquantes. La personne sceptique cherche une autre explication compatible avec les mêmes résultats.
Avant le code, votez sur l’affirmation: plausible, incertaine ou déjà réfutée. Vous pourrez changer de position après l’analyse.
1. Charger et préparer
Vérifiez les 891 lignes et l’événement positif. Une ligne représente un passager de cet échantillon. Les résultats restent descriptifs et historiques.
2. Comparer à l’intérieur de chaque classe
survie_par_classe_sexe <- titanic_eiom |>
group_by(classe, sexe) |>
summarise(
n = n(),
proportion_survie = mean(survie),
.groups = "drop"
)
survie_par_classe_sexe
graphique_stratifie <- survie_par_classe_sexe |>
ggplot(aes(sexe, proportion_survie, fill = sexe)) +
geom_col(width = 0.65, show.legend = FALSE) +
facet_wrap(vars(classe)) +
coord_cartesian(ylim = c(0, 1)) +
labs(
x = NULL,
y = "Proportion de survie enregistrée",
title = "La comparaison est répétée dans chaque classe"
)
graphique_stratifieRépondez:
- l’écart associé au sexe enregistré disparaît-il dans une classe quelconque?
- son ampleur semble-t-elle identique dans les trois classes?
- l’affirmation « tout s’explique par la classe » est-elle soutenue?
- ces comparaisons suffisent-elles à identifier un mécanisme causal?
Le graphique stratifié contrôle visuellement une variable, mais il ne rend pas les groupes identiques sur l’âge, le tarif, la composition familiale ou les circonstances historiques.
3. Examiner qui est exclu par l’âge manquant
Le nombre total de 177 âges manquants a déjà été présenté. Votre tâche est différente: vérifier si ces absences sont réparties uniformément.
manquants_par_groupe <- titanic_eiom |>
mutate(age_manquant = is.na(age)) |>
group_by(classe, verite) |>
summarise(
n = n(),
proportion_age_manquant = mean(age_manquant),
.groups = "drop"
)
manquants_par_groupeIdentifiez les groupes où l’âge manque le plus souvent. Expliquez pourquoi une analyse sur les 714 lignes complètes peut modifier la composition des classes et des résultats observés.
Vous ne devez pas conclure que les données manquantes causent un biais précis. Vous devez conclure que leur répartition n’est pas uniforme et que l’analyse complète porte sur une population sélectionnée.
4. Proposer deux formules
Modèle principal, volontairement lisible:
survie ~ sexe + classe + age + tarifExtension à évaluer si l’ampleur de l’écart semble varier selon la classe:
survie ~ sexe * classe + age + tarifExpliquez ce que permettrait l’interaction sexe * classe: l’association du sexe enregistré ne serait plus contrainte d’être identique sur l’échelle logit dans toutes les classes.
Ne choisissez pas l’extension uniquement parce que le graphique montre des différences. Elle ajoute des paramètres et devra être comparée sur des données non utilisées pour l’ajustement.
5. Rendre le verdict
Rédigez exactement quatre phrases:
- ce que montre la comparaison à l’intérieur des classes;
- ce qu’elle ne permet pas d’expliquer causalement;
- ce que révèle la répartition des âges manquants;
- pourquoi vous retenez le modèle principal tout en conservant l’interaction comme hypothèse à évaluer.
Vérification avant de remettre
- Le graphique compare des proportions dans chaque classe.
- Les effectifs de chaque combinaison restent visibles dans le tableau.
- Le verdict distingue persistance et variation d’ampleur.
- La limite des lignes complètes concerne leur composition, pas seulement leur nombre.
- Les deux formules sont différentes et leur rôle est expliqué.
- Aucune phrase ne prétend reconstituer un mécanisme de sauvetage.