Dans le test t pour échantillons appariés, il s'agit de comparer les moyennes de deux échantillons appariés. Le cas typique d'échantillons appariés est celui où 2 mesures ont été effectuées sur les mêmes sujets. Dans d'autres cas, chaque sujet d'un des deux échantillons a un lien bien défini avec un autre sujet de l'autre échantillon (jumeaux, animaux provenant d'un même élevage,...) de sorte qu'on puisse considérer que l'échantillon A forme un ensemble équilvalent à celui de l'échantillon B (sujets ayant les mêmes caractéristiques dans les 2 échantillons).
Les hypothèses à tester sont donc:
L'exemple choisi est celui ou deux techniques échographiques différentes sont choisies pour estimer la surface d'un muscle chez des porcs Piétrain vivants. Les deux techniques ont été testées sur 5 porcs, et ont fourni les résultats suivants:
Porc | Mesure I | Mesure II |
1 | 12.3 | 12.6 |
2 | 14.1 | 14.2 |
3 | 10.0 | 10.5 |
4 | 16.2 | 16.1 |
5 | 14.2 | 14.5 |
On peut tester l'hypothèse nulle selon laquelle les deux méthodes donnent les mêmes résultats en moyenne par un test de t pour données pairées (les mesures sur une même ligne du tableau correspondent au même animal). Encore une fois, pour illustrer, nous ferons les calculs explicitement et avec la fonction t.test pour montrer l'équivalence des résultats et pour démontrer la facilité d'utilisation des fonctionnalités statistiques de R.
Pour rappel, voici la formule du test t pour échantillons appariés:
\[ t = \frac{\bar{d}-\delta}{\sqrt{\frac{S^2_d}{n_d}}}\]
Le code est le suivant:
surf1<-c(12.3,14.1,10.0,16.2,14.2)
surf2<-c(12.6,14.2,10.5,16.1,14.5)
d<-surf1-surf2
dmoy<-mean(d)
dvar<-var(d)
nd<-5
t<-dmoy/sqrt(dvar/nd)
t
## [1] -2.157277
2*pt(t,nd-1)
## [1] 0.09718519
On obtient une valeur de t égale à -2.16. La probabilité d'obtenir cette valeur si l'H0 est vraie (c'est-à-dire si les moyennes dans les populations sont égales) est de 0.097. Etant donné que cette probabilité est supérieure à 0.05, on peut accepter l'H0 et conclure que la surface du muscle ne diffèrent pas en fonction de la techniques utilisées. Cette fois, on a utiliser un test bilatéral. On n'avait pas d'a priori sur le sens de la différence entre les deux méthodes. Notre hypothèse alternative était donc de voir si il y avait une différence entre les deux méthodes. C'est pourquoi dans la dernière commande (le calcul de la probabilité), il y a le facteur 2. On regarde la probabilité d'avoir une valeur de t aussi faible que -2.16 ET la probabilité d'avoir une valeur de t aussi élevée que 2.16.
On utilise de nouveau la fonction t.test(<arguments>) mais en spécifiant dans les arguments que les échantillons sont appariés via paired=TRUE.
t.test(surf1,surf2,paired=TRUE)
##
## Paired t-test
##
## data: surf1 and surf2
## t = -2.1573, df = 4, p-value = 0.09719
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.50314296 0.06314296
## sample estimates:
## mean of the differences
## -0.22
Comme attendu, on obtient exactement le même résultat:
Signalons qu'il existe une autre syntaxe de la fonction t.test. Cette syntaxe est surtout utile lorsque les données à analyser sont dans un format dans lequel chaque ligne correspond à une observation, avec une colonne qui donne les valeurs à comparer et une autre qui donne le groupe auquel la valeur correspondante appartient. Ce format est très souvent utilisé lorsqu'on travaille avec des fichiers de données externes, et nous allons l'utiliser pour ce cas de figure. Supposons donc que les données du test des deux échantillons de surfaces données plus haut proviennent d'un fichier externe. Ce fichier se présenterait par exemple de la manière suivante:
porc<-c(rep(1:5,2))
surface<-c(surf1,surf2)
methode<-c(rep(1,5),rep(2,5))
d<-data.frame(porc,surface,methode)
d
## porc surface methode
## 1 1 12.3 1
## 2 2 14.1 1
## 3 3 10.0 1
## 4 4 16.2 1
## 5 5 14.2 1
## 6 1 12.6 2
## 7 2 14.2 2
## 8 3 10.5 2
## 9 4 16.1 2
## 10 5 14.5 2
Après avoir lu ce fichier, on dispose donc des 10 données dans la deuxième colonne, et de leur groupe via la troisième colonne. Une variable telle que celle créée pour représenter les "valeurs" de la troisième colonne est appelée un facteur. On pourrait évidemment retravailler ces deux variables pour se ramener au cas décrit plus haut, mais on peut utiliser directement la syntaxe alternative de la commande t.test, qui prend la forme suivante: t.test(valeur ~ facteur, <autres arguments>). L'écriture valeur ~ facteur est un raccourci pour dire que la valeur à gauche du ~ est la variable dépendante, et à droite figure(nt) la(les) variable(s) ou facteur(s) indépendant(s). Dans le cas simple qui nous occupe ici, on peut donc écrire:
t.test(d$surface~d$methode,paired=TRUE)
##
## Paired t-test
##
## data: surface by methode
## t = -2.1573, df = 4, p-value = 0.09719
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.50314296 0.06314296
## sample estimates:
## mean of the differences
## -0.22
De nouveau, on obtient exactement le même résultat que précédemment.