Menu

Test t en R : t.test() à un échantillon, deux échantillons et apparié

Réalise des tests t à un échantillon, à deux échantillons et appariés avec t.test(), et - la partie qui compte vraiment - lis chaque ligne de la sortie : t, df, p-valeur, intervalle de confiance.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

Ce que demande un test t

Chaque test t répond à la même question sous-jacente : cette différence de moyennes est-elle réelle, ou pourrait-ce n'être que du bruit ? Les échantillons fluctuent - mesure deux fois les temps de réaction de dix personnes et tu obtiendras deux moyennes différentes alors que rien n'a changé. Le test t compare la différence observée à la fluctuation qu'on attendrait du hasard, et rapporte à quel point tes données seraient surprenantes si la différence vraie était nulle.

Trois variantes, une fonction :

  • Un échantillon - la moyenne de ce groupe diffère-t-elle d'une valeur fixe ?
  • Deux échantillons - ces deux groupes indépendants ont-ils des moyennes différentes ?
  • Apparié - les mêmes sujets ont-ils changé entre deux mesures ?

Un échantillon : t.test(x, mu = ...)

Supposons qu'un processus soit censé durer 5,0 secondes en moyenne, et que tu chronomètres dix exécutions :

La moyenne d'échantillon est 5,61 - mais 0,61 au-dessus de la cible est-il significatif avec seulement dix exécutions, ou dans la fluctuation normale ? C'est exactement ce à quoi répond la sortie.

Lire la sortie ligne par ligne

C'est la section qui gagne sa place - la sortie de chaque variante de t.test() a la même forme, alors apprends à la lire une bonne fois. Exécute le bloc ci-dessus et fais correspondre chaque ligne :

  • t = 4.26 - la statistique de test : la différence observée (5,61 − 5 = 0,61) divisée par l'erreur type de la moyenne (environ 0,143). Elle dit que la moyenne d'échantillon se situe à un peu plus de quatre erreurs types de la valeur hypothétique. Un |t| plus grand = plus surprenant sous l'hypothèse nulle.
  • df = 9 - les degrés de liberté, ici n − 1. Un df faible signifie de petits échantillons, ce qui veut dire que le test exige un t plus grand avant d'être impressionné.
  • p-value ≈ 0.002 - si la moyenne vraie était réellement 5, la probabilité de tirer un échantillon dont la moyenne s'éloigne au moins autant de 5 (dans un sens ou dans l'autre) est d'environ 0,2 %. C'est tout le sens de la chose. Ce n'est pas la probabilité que la moyenne vraie soit 5, et une petite p-valeur ne prouve pas ton explication préférée - elle dit seulement « difficile à imputer au hasard ». Au seuil habituel de 0,05, tu rejettes ici l'hypothèse nulle.
  • alternative hypothesis - une reformulation de ce que « rejeter » signifierait. not equal to 5 confirme qu'il s'agissait d'un test bilatéral.
  • 95 percent confidence interval: 5.29 to 5.93 - la plage de moyennes vraies compatibles avec les données. Remarque que 5 est en dehors - c'est le même verdict que p < 0,05, énoncé dans les unités propres des données, et ça te dit aussi la taille plausible de l'effet, ce que la p-valeur ne fait jamais.
  • sample estimates - la moyenne observée, pour que le lecteur voie le fait brut mis à l'épreuve.

Si tu as besoin des éléments par programmation : result <- t.test(times, mu = 5), puis result$p.value, result$conf.int, result$estimate.

Deux échantillons : comparer des groupes indépendants

Pour deux groupes indépendants, l'interface formule se lit comme la question elle-même. ToothGrowth enregistre la croissance dentaire chez des cobayes recevant de la vitamine C sous forme de jus d'orange (OJ) ou d'acide ascorbique (VC) :

Lis-le comme « teste len ventilé par supp ». La sortie montre maintenant deux estimations d'échantillon (une moyenne par groupe, environ 20,7 contre 17,0), et l'intervalle de confiance porte sur la différence entre elles. Ici p ≈ 0,061 et l'intervalle va d'environ −0,17 à 7,57 : il traverse zéro, donc au seuil de 0,05 tu ne peux pas écarter « aucune différence » - même si un intervalle qui s'étire jusqu'à +7,6 t'avertit aussi de ne pas déclarer la différence inexistante. « Non significatif » signifie non prouvé, pas prouvé absent.

Welch est le comportement par défaut - et c'est une bonne chose

Regarde l'en-tête de la sortie : Welch Two Sample t-test, avec des df fractionnaires (environ 55,3). Le test t de Student classique suppose que les deux groupes ont la même variance ; la version de Welch abandonne cette hypothèse et ajuste les degrés de liberté pour compenser. Quand les variances sont réellement égales, Welch donne des réponses pour ainsi dire identiques ; quand elles ne le sont pas, le test de Student peut être gravement mal calibré alors que Welch reste honnête. Le comportement par défaut de R est donc le prudent - il y a rarement une raison de le remplacer.

Le rituel préalable du « vérifie d'abord l'égalité des variances, puis choisis le test » est un conseil dépassé ; utilise simplement Welch.

Apparié : avant et après

Quand les deux mesures viennent des mêmes sujets, les groupes ne sont pas indépendants - et les traiter comme indépendants gaspille la puissance du test. Les scores de huit personnes avant et après une formation :

paired = TRUE teste la moyenne des différences intra-individuelles (ici une moyenne de 2,75 points, p ≈ 0,001). Pourquoi l'appariement change tout : les gens diffèrent bien plus les uns des autres que la formation n'a changé qui que ce soit - une dispersion d'un sujet à l'autre de 65 à 80 noierait une amélioration de 2-3 points dans un test non apparié. La différenciation soustrait le niveau de base de chacun, ne laissant que le changement. La règle : si les données ont une structure naturelle « même unité mesurée deux fois », apparie-les. (Et n'utilise jamais paired = TRUE quand les groupes sont réellement indépendants - l'appariement serait une fiction.)

Tests unilatéraux : à manier avec précaution

Par défaut le test est bilatéral : il compte une différence dans n'importe quel sens comme une preuve. Si - avant d'avoir vu les données - ton hypothèse n'avait de sens que dans une direction, tu peux le dire :

La p-valeur est divisée par deux par rapport au test bilatéral, et c'est exactement pourquoi la tentation existe : passer à l'unilatéral après avoir jeté un œil aux données, c'est du p-hacking. N'utilise alternative = "greater" ou "less" qu'avec une direction réellement préenregistrée ; dans le doute, reste bilatéral.

Hypothèses, et la solution de repli

Le test t suppose que les observations sont indépendantes et que les moyennes d'échantillon sont approximativement distribuées normalement - ce qui tient quand les données elles-mêmes sont à peu près normales ou que les échantillons sont raisonnablement grands (le théorème central limite fait le gros du travail ; à partir de n ≈ 30 par groupe, une non-normalité modérée n'est plus un problème). Vérifie la forme avec un rapide histogramme ou une boîte à moustaches. L'indépendance, en revanche, aucun test ne peut la sauver - elle vient de la façon dont les données ont été collectées.

Pour de petits échantillons clairement asymétriques ou avec des valeurs aberrantes extrêmes, la solution de repli non paramétrique standard tient en une ligne : wilcox.test(len ~ supp, data = ToothGrowth), qui compare les distributions via les rangs plutôt que les moyennes.

Ce que tu retiens

  • t.test(x, mu = ) pour un échantillon, t.test(y ~ group, data = ) pour deux, paired = TRUE pour l'avant/après.
  • La p-valeur, c'est « à quel point ces données sont surprenantes si la différence vraie était nulle » - rien de plus ; l'intervalle de confiance te dit la taille plausible de l'effet en unités réelles.
  • Le comportement par défaut de R à deux échantillons est le test de Welch (df fractionnaires) - garde-le.
  • L'appariement élimine le bruit entre sujets ; utilise-le dès que les mêmes unités sont mesurées deux fois.
  • Alternatives unilatérales seulement avec une direction fixée à l'avance ; wilcox.test() est la solution de repli fondée sur les rangs.

Prochaine étape : comparer les moyennes de trois groupes ou plus d'un coup - l'ANOVA avec aov().

Questions fréquentes

Comment réaliser un test t en R ?

Avec t.test(). Un échantillon contre une valeur fixe : t.test(x, mu = 5). Deux groupes indépendants : t.test(value ~ group, data = df). Des mesures avant/après sur les mêmes sujets : t.test(after, before, paired = TRUE).

Comment interpréter la p-valeur d'un test t en R ?

C'est la probabilité d'observer une différence au moins aussi grande que la tienne si la différence vraie était nulle. Une petite p-valeur (conventionnellement sous 0,05) signifie que les données sont difficiles à expliquer par le hasard, donc tu rejettes l'hypothèse nulle. Ce n'est pas la probabilité que l'hypothèse nulle soit vraie, et elle ne dit rien de l'ampleur ou de l'importance de la différence - lis l'intervalle de confiance pour ça.

Pourquoi R rapporte-t-il un test t de Welch par défaut ?

Le t.test() à deux échantillons de R utilise par défaut la version de Welch, qui ne suppose pas que les deux groupes ont des variances égales - d'où des degrés de liberté fractionnaires. Welch se comporte presque identiquement au test de Student classique quand les variances sont égales et il est plus sûr quand elles ne le sont pas, donc le comportement par défaut est le bon choix. N'utilise var.equal = TRUE que si un cours exige explicitement le test classique à variance commune.

Quand faut-il utiliser un test t apparié en R ?

Quand les deux ensembles de mesures viennent par paires naturelles - le même sujet mesuré avant et après, le même objet évalué par deux méthodes. t.test(after, before, paired = TRUE) teste la moyenne des différences intra-paire, ce qui élimine la variation entre sujets et donne généralement bien plus de puissance que de traiter les groupes comme indépendants.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER