```{r include=FALSE, echo=FALSE, eval=TRUE}
library(knitr)
library(diagram) ## For flowcharts


options(width=300)
knitr::opts_chunk$set(
  fig.width = 7, fig.height = 5, 
  fig.align = "center", 
  fig.path = "figures/sampling-estimation_",
  size = "tiny", 
  echo = FALSE, eval=TRUE, 
  warning = FALSE, message = FALSE, 
  results = TRUE, comment = "")
# knitr::asis_output("\\footnotesize")

dir.main <- "~/stat1"
dir.slides <- file.path(dir.main, "slides")
setwd(dir.slides)
```


## Contents

We provide here a brief summary (suppsedly reminder) of one ot the most popular applications of statistics: the **mean comparison test**. 

This test is used in a wide number of contexts. We will apply it here to two data types. 


1. **Artificial data** generated by drawing samples from two normally distributed populations, having either equal ($H_0$) or different ($H_1$) means depending on the cases. The interest of this experiment is that we conrol all the parameters (we know whether there is or not a difference betwen population means). 

2. **Trabscriptome data obtained from microarrays**. We will test if a given gene presents a significant difference between two sets of biological samples (e.g. patients suffering from different cancer types). 

    **Note:** microarray technologies have been widely replaced by next-generation sequencing (NGS) and RNA-seq has been used to study transcriptome. However, differential analysis with RNA-seq requires more advanced concepts, which will be treated in other courses.

## L'hypothèse à tester

**General principle:** 

- We observe a difference between *sample* means, and we would like to know whether it results from sampling fluctuations or from an actual difference between the two populations. 
- We define two hypotheses: the ***null hypothesis*** ($H_0$) states that the two populations means are equal, whereas the ***alternative*** hypothesis ($H_1$) states that they differ.
- We evaluate the probability for a random sampling to return, under $H_0$, a difference at least as important as the one observed.  
- If this probability is very weak, we ***reject*** the null hypothesis ($RH_0$), else we (temporarily) ***accept*** it.

## Test bilatéral (*two-tailed test*)

Dans le **test bilatéral** (***two-tailed test***), on désire détecter une éventuelle différence indépendamment de son signe ($\mu_1 > \mu_2$ ou $\mu_2 > \mu_2$). 

$$H_0: \mu_1 = \mu_2 \\
H_1: \mu_1 \neq \mu_2$$


## Test unilatéral (*one-tailed test*)

Dans le **test unilatéral** (***one-tailed test***), on s'intéresse spécifiquement à des différences allant dans une direction donnée. L'hypothèse nulle recouvre donc d'une part l'égalité, et d'autre part les différeences de signe opposé à celui qui nous intéresse. 

Différences positives (*right-tailed test*): 

$$H_0: \mu_1 \le \mu_2 \\
H_1: \mu_1 > \mu_2$$

Différences négatives (*left-tailed test*):

$$H_0: \mu_1 \ge \mu_2 \\
H_1: \mu_1 < \mu_2$$

## Hypothèses de travail
- Il existe différentes méthodes pour tester l'égalité entre deux moyennes. 

- Le choix de la méthode dépend de la nature des données. 

- Avant de réaliser le test il est crucial de se poser quelques questions afin de choisir la méthode appropriée. 

- Il s'agit de **vérifier les hypothèses de travail**, c'est-à-dire des hypothèses *a priori*, sur lesquelles reposera l'approche envisagée. On peut les qualifier de *conditions d'applicabilité* du test. 

## Hypothèse de normalité

**Les populations dont les échantillons sont tirés suivent-elles des distributions normales?** 


- Si oui on peut réaliser des tests paramétriques (ils reposent sur une hypothèse de normalité). Dans le cas contraire il faut recourir à des tests non-paramétriques.

    **Pourquoi?** Les tables de probabilités de risques des tests paramétriques ont été établies sur base de modèles mathématiques reposant sur l'hypothèse de normalité.

- En cas de non-normalité, **les échantillons sont-ils de grande taille?** Si oui on peut se rabattre sur les méthodes paramétriques 

    **Pourquoi?** En vertu du **théorème central limite**, les moyennes d'échantillon tendent vers une normale même si les populations-mères ne sont pas normales. 


## Hypothèse d'homoscédasticité (égalité des variances)

Pour les tests paramétriques, **les populations ont-elles (vraisemblablement) la même variance? ** 


- Si oui on peut appliquer le test de Student. 

- Dans le cas contraire, test de Welch. 

    **Pourquoi?** La distribution de probabilité de Student a été calculée sur base d'une hypothèse d'**homoscédasticité** (égalité des variances). Le test de Welch effectue une correction en cas d'**hétéroscédasticité** (inégalité des variances), en modifiant le nombre de degrés de liberté en fonction des différences entre variances. 

    
## Logigramme du choix d'un test de comparaison de moyenne

```{r mean_compa_flowchart, fig.width=7, fig.height=6}
# creates an empty plot
openplotmat(main="Choice of a mean comparison test")

# create the coordinates
pos <- coordinates(c(1, 2, 2, 3))
pos[2,1] <- (pos[6,1] + pos[7, 1])/2
pos[4,1] <- (pos[6,1] + pos[7, 1])/2
pos[3,1] <- pos[8,1]
pos[5,1] <- pos[8,1]
pos.labels <- c("normality ?", 
               "Parametric", "Large samples ?", 
               "Equal var ?", "Non-parametric",
               "Student", "Welch", "Wilcoxon\nMann-Whitney")
nb.nodes <- nrow(pos)
question.nodes <- c(1, 3, 4)
  
fromto <- matrix(ncol = 2, byrow = TRUE,
                 data = c(1, 2, # 1
                          1, 3, # 2
                          3, 2, # 3
                          2, 4, # 4
                          4, 6, # 5
                          4, 7, # 6
                          3, 5, # 7
                          5, 8  # 8
                          ))
yes.arrows <- c(1,3,5)
no.arrows <- c(2,6,7)


nb.arrows     <- nrow(fromto)
arrpos <- matrix(ncol = 2, nrow = nb.arrows)
for (i in 1:nb.arrows) {
  if (i %in% yes.arrows) {
    arrow.color <- "#00BB00"
  } else if (i %in% no.arrows) {
    arrow.color <- "red"
  } else {
    arrow.color <- "black"
  }
 arrpos[i, ] <- straightarrow (
   from = pos[fromto[i, 1], ],
   to = pos[fromto[i, 2], ],
   lwd = 2, arr.pos = 0.5,
   arr.length = 0.25, lcol = arrow.color)
  if (i %in% yes.arrows) {
    text(arrpos[i, 1] + 0.02, arrpos[i, 2] - 0.03, "yes", col = "#00BB00")
  } else if (i %in% no.arrows) {
    text(arrpos[i, 1] + 0.02, arrpos[i, 2] - 0.03, "no", col = "red")
  }
}

for (i in 1:nb.nodes) {
  if (i %in% question.nodes) {
    ## Draw diamons for choices
    textdiamond(
      mid = pos[i,], radx = 0.2, rady = 0.05, 
      lab = pos.labels[i], cex = 1, 
      lcol="orange", lwd=2)
    
  } else {
    ## Draw ellipses for operations 
    textellipse(
      mid = pos[i,], radx=0.15, rady=0.05,
      lab=pos.labels[i])
  }
}
# text(arrpos[2, 1] + 0.05, arrpos[2, 2], "no", col = "red")
# text(arrpos[4, 1] - 0.05, arrpos[4, 2], "yes", col = "#00BB00")
# text(arrpos[5, 1] + 0.05, arrpos[5, 2], "no", col = "red")
# text(arrpos[4, 1] - 0.05, arrpos[4, 2], "yes", col = "#00BB00")
# text(arrpos[5, 1] + 0.05, arrpos[5, 2], "no", col = "red")


```


## Test de Student

Hypothèses de travail: **normalité** (ou bien grands échantillons), **homoscédasticité**. 

Statistique: 

$$t_{S} = \frac{\hat{\delta}}{\hat{\sigma}_\delta} =  \frac{\bar{x}_{2} - \bar{x}_{1}}{\sqrt{\frac{n_1 s_{1}^2 + n_2 s_{2}^2}{n_1+n_2-2} \left(\frac{1}{n_1}+ \frac{1}{n_2}\right)}}$$

Estimation du risque de faux-positif (***P-value***): probabilité d'obtenir, ***sous hypothèse nulle*** une statistique au moins aussi extrême que celle observée. Ce qu'on appellera "extrême" (la ou les queues de distribution à considérer) dépendra du sens du test. 

## Décision

- si la P-value est plus faible qu'un seuil fixé ($\alpha$), on rejette l'hypothèse nulle ($RH_0$) et le test est déclaré positif. 
- si la P-value est supérieure au seuil fixé ($\alpha$), on accepte l'hypothèse nulle ($AH_0$) et le test est déclaré négatif. 


| Sens du test   | Critère de décision |
|----------------------------|--------------------------------------|
| Unilatéral à droite | $RH_0 \quad \text{if} \quad t_S > t_{1-\alpha}^{n_1 + n_2 -2}$ |
| Unilatéral à gauche | $RH_0 \quad \text{if} \quad t_S < t_{alpha}^{n_1 + n_2 -2} = - t_{1-\alpha}^{n_1 + n_2 -2}$ |
| Bilatéral | $RH_0 \quad \text{if} \quad \lvert t_S \rvert > t_{1-\frac{\alpha}{2}}^{n_1 + n_2 -2}$ |

Pour le test bilatéral, on partage le risque de façon symétrique entre les deux queues en associant $\frac{\alpha}{2}$ à chacune.


## Exercice

Un chercheur a analysé, à l’aide de biopuces, le niveau d’expression d'un gène d'intérêt à partir d’échantillons sanguins prélevés chez 50 patients ($n_p=50$) et chez 50 sujets témoins ($n_c=50$). Il obtient 

-	pour les patients, une moyenne $m_p= 21$
-	pour les contrôles, une moyenne $m_c= 10$
-	des écarts-types d'échantillons sont identiques pour les 2 groupes $s_p = s_c = s = 15$

Afin de tester si la différence observée entre les moyennes est significative, le chercheur décide d’effectuer un test de Student.

a.	Le choix du test de Student vous semble-t-il approprié ? Justifiez le choix du chercheur. Quelles auraient été les alternatives envisageables ?

b.	Sachant qu’a priori on ne sait pas dans quel sens la maladie pourrait affecter le niveau d’expression du gène, préconisez-vous un test uni- ou bilatéral ?

c.	Formulez l’hypothèse nulle et expliquez-la en une phrase.

d.	Sur base de la formule ci-dessous, calculez la statistique $t$ de Student.

e.	Indiquez, en vous basant sur les tables fournies, la p-valeur correspondante. 

f.	Interprétez la p-valeur, et aidez le chercheur à tirer les conclusions de son étude.


## Exercice

Un groupe de chercheurs a détecté l’association entre la résistance à la bilharziose et un taux élevé d’IgE spécifiques. D’autres chercheurs ont cherché à répliquer ce résultat dans une population indépendante exposée à la bilharziose. Les résultats obtenus sont indiqués ci-dessous.

-	Pour les sujets résistants ($n_r=32$), la moyenne $m_r=10$.
-	Pour les sujets susceptibles ($n_s=32$), la moyenne $m_s=7$.
-	Les écarts-types des deux groupes sont égaux : $s_r = s_s = s = 2.8$.

a. Quelle méthode préconisez-vous pour tester l'égalité des moyennes (justifiez)? Quelles sont les hypothèses de travail de ce test?

b. En partant du principe que ces conditions sont remplies dans le cas présent, formulez l’hypothèse nulle et calculez le score t de Student (formule ci-dessous). Enfin, estimez P valeur à partir de la table fournie. 

c. A l'issue du test, quelle décision prenez-vous? Justifiez votre réponse.







