Table of Contents
Ce guide explique, pas à pas et avec l’exemple des passagers du Titanic, comment réaliser et interpréter un test T en R ; il montre aussi une approche par bootstrap pour mieux comprendre les résultats du test T R Titanic.
Rappel des données et préparation (passagers du Titanic)
Les données utilisées proviennent du package R titanic, ensemble titanic_train. Après suppression des valeurs manquantes pour l’âge, l’échantillon contient 712 observations : 261 femmes et 453 hommes.
Les statistiques descriptives par sexe sont :
- Femmes — moyenne d’âge 27,9 ans, écart type 14,1, n = 261.
- Hommes — moyenne d’âge 30,7 ans, écart type 14,7, n = 453.
La différence observée entre les moyennes est de 2,8 ans (hommes moins âgés en moyenne).
Code R utilisé pour la préparation : library(titanic); data(‘titanic_train’); df <- titanic_train %>% select(Sex, Age) %>% na.omit().
Interpréter un test T R Titanic : exécution et résultats
Le test T (Student) permet de vérifier si la différence de moyenne entre deux groupes est statistiquement significative ou s’explique par le hasard. Dans notre cas, la question est : l’âge moyen est‑il le même chez les hommes et chez les femmes à bord du Titanic ?
En R, le test est réalisé simplement avec la fonction t.test et la formule : t.test(Age ~ Sex, data = df). Cette utilisation suppose l’indépendance des deux échantillons et une distribution approchée de l’âge normale, ce que le graphique de densité laissait envisager.
Les principaux résultats du test sont :
- p‑value = 0,0118 (soit 1,18 %).
- intervalle de confiance à 95 % approximativement entre -5 et -0,62 (différence des moyennes).
Interprétation factuelle : la p‑value de 0,0118 signifie que, si l’hypothèse nulle (égalité des moyennes) était vraie, il y aurait seulement 1,18 % de chances d’observer une différence aussi grande ou plus grande que celle constatée. Étant donné que cette p‑value est inférieure à 0,05, on rejette l’hypothèse nulle au niveau de confiance 95 % ; en revanche, au niveau de confiance 99 % (seuil 0,01), on ne la rejette pas.
L’intervalle de confiance ne contenant pas 0 (entre -5 et -0,62) corrobore le rejet de l’hypothèse nulle au seuil 5 % et indique que la différence moyenne observée est négative dans l’orientation retenue (hommes minus femmes).
Bootstrap : reproduire la logique du test sans supposer la normalité
Le bootstrap illustre la logique du test T en générant une distribution d’échantillonnage des différences de moyennes à partir d’un seul échantillon. L’idée repose sur le théorème central limite : la distribution des moyennes d’échantillons suivra une loi approchée normale, dont l’écart type est l’erreur standard.
Procédure suivie :
- On crée une version de l’échantillon sous l’hypothèse nulle en recentrant les âges des hommes : on soustrait la différence observée (2,81) à l’âge de chaque homme, de sorte que la différence des moyennes soit 0 dans cet échantillon nulle (df_null).
- On définit une fonction diff_means qui tire un échantillon bootstrap (taille n = 712 avec remise), calcule les moyennes par sexe et retourne la différence (moyenne hommes − moyenne femmes).
- On répète l’opération 1 000 fois avec replicate(1000, diff_means(df_null)) et on étudie la distribution des différences obtenues.
Résultats numériques observés :
- la moyenne de la distribution d’échantillonnage est approximativement 0, comme attendu sous l’hypothèse nulle ;
- l’écart type de cette distribution est d’environ 1,1 ;
- parmi les 1 000 répétitions, 9 échantillons ont produit une différence ≥ 2,81 ou ≤ −2,81, soit 0,9 % des cas.
Cette proportion (0,9 %) est très proche de la p‑value calculée par t.test, ce qui renforce l’interprétation précédente : il est improbable d’observer la différence constatée si les moyennes étaient égales. Le bootstrap présente l’avantage de ne pas supposer la normalité de la distribution de l’âge.
Points pratiques et commandes clés
Commandes R essentielles mentionnées dans l’article :
- préparation des données : df <- titanic_train %>% select(Sex, Age) %>% na.omit() ;
- test T : t.test(Age ~ Sex, data = df) ;
- création de l’échantillon nul : df_null <- df %>% mutate(Age = ifelse(Sex == « male », Age – 2.81, Age)) ;
- bootstrap : définition de la fonction diff_means puis diffs <- replicate(1000, diff_means(df_null)) et calcul des proportions extrêmes.
Pour toute question méthodologique ou remarque sur l’implémentation, signalez‑la directement sur le billet original de l’auteur.