Ben Messaoud Haifa
04/12/2020
Le test de student (ou t-test) est utilisé pour comparer deux moyennes ou pour comparer une moyenne observée m à une valeur théorique mu. Il existe différents variants du test de student:
Le test de student pour échantillons unique (ou one-sample t-test en anglais), utilisé pour comparer une moyenne observée à une valeur théorique.
Le test de student non-apparié, utilisé pour comparer les moyennes de deux groupes d’échantillons indépendants
Le test de student apparié, utilisé pour comparer les moyennes de deux séries appariés.
# poids des femmes
x<- round(rnorm(10, mean=57, sd=15), 1)
# Poids des hommes
y <- round(rnorm(10, mean=75, sd=15), 1)
d<-as.data.frame(list(
group=c(rep("Femme", 10), rep("Homme", 10)),
poids=c(x, y)
))
head(d)## group poids
## 1 Femme 49.9
## 2 Femme 60.8
## 3 Femme 31.9
## 4 Femme 55.1
## 5 Femme 54.7
## 6 Femme 56.7
##
## Two Sample t-test
##
## data: x and y
## t = -4.2398, df = 18, p-value = 0.0004927
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -38.53971 -13.00029
## sample estimates:
## mean of x mean of y
## 54.62 80.39
## [1] 0.0004927124
## mean of x mean of y
## 54.62 80.39
## [1] -38.53971 -13.00029
## attr(,"conf.level")
## [1] 0.95
L’hypothèse nulle (H0) est : le fait de connaître l’appartenance d’un individu à une population (selon un critère) ne donne aucun indice sur la caractéristique qui le défini selon l’autre critère.
Par exemple : est-ce que le fait de connaître la couleur des yeux de quelqu’un me permet de supposer sur son sexe ?
Rèponse : non.
Par exemple : est-ce que le fait de connaître la taille de quelqu’un permet de supposer sur son sexe ? Réponse : oui, plus un individu est petit, plus il y a des chances que ce soit une femme.
Résultats La p-value donne la probabilité de validation de H0
Plus la p-value est petite, plus il y a un lien entre les critères (et donc pas d’indépendance)
# Créations des vecteurs correspondant à 2 catégories et pour chaque catégories 4 tranches salariales :
hommes = c(50,70,110,60)
femmes = c(80,75,100,30)
# Création d'une matrice des effectifs comparative :
tableau = matrix(c(hommes, femmes),2,4,byrow=T) # (2 : nombre de lignes et 4 nombres de colonnes (tranches salariales))
tableau## [,1] [,2] [,3] [,4]
## [1,] 50 70 110 60
## [2,] 80 75 100 30
# Réalisation du test khi-deux - les résultats sont sauvegardés dans "khi_test"
test = chisq.test(tableau)
test # affiche le résultat du test##
## Pearson's Chi-squared test
##
## data: tableau
## X-squared = 17.53, df = 3, p-value = 0.0005499
Le test de Shapiro-Wilk est un test permettant de savoir si une série de données suit une loi normale.
Hypothèse nulle : l’échantillon suit une loi normale. Par conséquent si la p-value du test est significative, l’échantillon ne suit pas une loi normale.
##
## Shapiro-Wilk normality test
##
## data: rnorm(100, mean = 5, sd = 3)
## W = 0.99144, p-value = 0.7795
L’exemple ci-dessus renvoie une p-value non significative. L’échantillon suit donc une loi normale.
Selon la terminologie ACP, nos données contiennent des:
Individus actifs (en bleu clair, lignes 1:23): individus qui sont utilisés lors de l’analyse en composantes principales.
Individus supplémentaires (en bleu foncé, lignes 24:27): les coordonnées de ces individus seront prédites en utilisant l’information et les paramètres de l’ACP obtenue avec les individus/variables actifs.
Variables actives (en rose, colonnes 1:10): variables utilisées pour l’ACP.
Variables supplémentaires: comme les individus supplémentaires, les coordonnées de ces variables seront également prédites. On distingue des:
Nous commençons par extraire les individus actifs et les variables actives pour l’ACP:
## X100m Long.jump Shot.put High.jump X400m X110m.hurdle
## SEBRLE 11.04 7.58 14.83 2.07 49.81 14.69
## CLAY 10.76 7.40 14.26 1.86 49.37 14.05
## BERNARD 11.02 7.23 14.25 1.92 48.93 14.99
## YURKOV 11.34 7.09 15.19 2.10 50.42 15.31
Dans l’analyse en composantes principales, les variables sont souvent normalisées. Ceci est particulièrement recommandé lorsque les variables sont mesurées dans différentes unités (par exemple: kilogrammes, kilomètres, centimètres, …); sinon, le résultat de l’ACP obtenue sera fortement affecté.
L’objectif est de rendre les variables comparables. Généralement, les variables sont normalisées de manière à ce qu’elles aient au final i) un écart type égal à un et ii) une moyenne égale à zéro.
Techniquement, l’approche consiste à transformer les données en soustrayant à chaque valeur une valeur de référence (la moyenne de la variable) et en la divisant par l’écart type. A l’issue de cette transformation les données obtenues sont dites données centrées-réduites. L’ACP appliquée à ces données transformées est appelée ACP normée.
La standardisation des données est une approche beaucoup utilisée dans le contexte de l’analyse des données d’expression de gènes avant les analyses de type PCA et de clustering.
Lors de la normalisation des variables, les données peuvent être transformées comme suit:
xi−mean(x)sd(x)
Où mean(x) est la moyenne des valeurs de x, et sd(x) est l’écart type (SD).
La fonction scale() peut être utilisée pour normaliser les données.
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 23 individuals, described by 10 variables
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$var" "results for the variables"
## 3 "$var$coord" "coord. for the variables"
## 4 "$var$cor" "correlations variables - dimensions"
## 5 "$var$cos2" "cos2 for the variables"
## 6 "$var$contrib" "contributions of the variables"
## 7 "$ind" "results for the individuals"
## 8 "$ind$coord" "coord. for the individuals"
## 9 "$ind$cos2" "cos2 for the individuals"
## 10 "$ind$contrib" "contributions of the individuals"
## 11 "$call" "summary statistics"
## 12 "$call$centre" "mean of the variables"
## 13 "$call$ecart.type" "standard error of the variables"
## 14 "$call$row.w" "weights for the individuals"
## 15 "$call$col.w" "weights for the variables"
## **Results for the Principal Component Analysis (PCA)**
## The analysis was performed on 23 individuals, described by 10 variables
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$var" "results for the variables"
## 3 "$var$coord" "coord. for the variables"
## 4 "$var$cor" "correlations variables - dimensions"
## 5 "$var$cos2" "cos2 for the variables"
## 6 "$var$contrib" "contributions of the variables"
## 7 "$ind" "results for the individuals"
## 8 "$ind$coord" "coord. for the individuals"
## 9 "$ind$cos2" "cos2 for the individuals"
## 10 "$ind$contrib" "contributions of the individuals"
## 11 "$call" "summary statistics"
## 12 "$call$centre" "mean of the variables"
## 13 "$call$ecart.type" "standard error of the variables"
## 14 "$call$row.w" "weights for the individuals"
## 15 "$call$col.w" "weights for the variables"
Comme décrit dans les sections précédentes, les valeurs propres (eigenvalues en anglais) mesurent la quantité de variance expliquée par chaque axe principal. Les valeurs propres sont grandes pour les premiers axes et petits pour les axes suivants. Autrement dit, les premiers axes correspondent aux directions portant la quantité maximale de variation contenue dans le jeu de données.
Nous examinons les valeurs propres pour déterminer le nombre de composantes principales à prendre en considération. Les valeurs propres et la proportion de variances (i.e. information) retenues par les composantes principales peuvent être extraites à l’aide de la fonction get_eigenvalue() [package factoextra].
## eigenvalue variance.percent cumulative.variance.percent
## Dim.1 4.1242133 41.242133 41.24213
## Dim.2 1.8385309 18.385309 59.62744
## Dim.3 1.2391403 12.391403 72.01885
## Dim.4 0.8194402 8.194402 80.21325
## Dim.5 0.7015528 7.015528 87.22878
## Dim.6 0.4228828 4.228828 91.45760
## Dim.7 0.3025817 3.025817 94.48342
## Dim.8 0.2744700 2.744700 97.22812
## Dim.9 0.1552169 1.552169 98.78029
## Dim.10 0.1219710 1.219710 100.00000
Cercle de corrélation
La corrélation entre une variable et une composante principale (PC) est utilisée comme coordonnées de la variable sur la composante principale. La représentation des variables diffère de celle des observations: les observations sont représentées par leurs projections, mais les variables sont représentées par leurs corrélations (Abdi and Williams 2010).
Graphique des individus
La fonction fviz_pca_ind() est utilisée pour produire le graphique des individus. Pour créer un graphique simple, tapez ceci:
Le test ANOVA (ou Analyse de variance) est utilisé pour comparer la moyenne de plusieurs groupes. Le terme ANOVA est un peu trompeur. Bien que le nom de la technique fasse référence aux variances, l’objectif principal de l’ANOVA est d’étudier les différences de moyennes.
Ce chapitre décrit les différents types d’ANOVA pour comparer des groupes indépendants, notamment:
ANOVA à un facteur : une extension du test t pour échantillons indépendants comparant les moyennes dans une situation où il y a plus de deux groupes. C’est le cas le plus simple du test ANOVA où les données sont organisées en plusieurs groupes en fonction d’une seule variable de groupement (aussi appelée facteur). D’autres synonymes sont : ANOVA à 1 facteur, ANOVA à un facteur et ANOVA inter-sujets.
Charger les packages réquis
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ tibble 3.0.4 ✓ dplyr 1.0.2
## ✓ tidyr 1.1.2 ✓ stringr 1.4.0
## ✓ readr 1.4.0 ✓ forcats 0.5.0
## ✓ purrr 0.3.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
##
## Attaching package: 'rstatix'
## The following object is masked from 'package:stats':
##
## filter
Ici, nous utiliserons le jeu de données intégré à R nommé PlantGrowth. Il contient le poids des plantes obtenues sous un contrôle et deux conditions de traitement différentes.
Charger et inspecter les données en utilisant la fonction sample_n_by() pour afficher une ligne aléatoire par groupes:
## # A tibble: 3 x 2
## weight group
## <dbl> <fct>
## 1 5.14 ctrl
## 2 3.83 trt1
## 3 5.37 trt2
Afficher les niveaux de la variable de groupement:
## [1] "ctrl" "trt1" "trt2"
Calculer quelques statistiques sommaires (nombre, moyenne et sd) de la variable weight (poids) organisée par groupes:
## # A tibble: 3 x 5
## group variable n mean sd
## <fct> <chr> <dbl> <dbl> <dbl>
## 1 ctrl weight 10 5.03 0.583
## 2 trt1 weight 10 4.66 0.794
## 3 trt2 weight 10 5.53 0.443
Pour visualiser nous allons faire un boxplot :
L’hypothèse de normalité peut être vérifiée en utilisant l’une des deux approches suivantes:
Analyse des résidus du modèle ANOVA pour vérifier la normalité pour tous les groupes ensemble. Cette approche est plus facile et très pratique lorsque vous avez plusieurs groupes ou s’il y a peu de points de données par groupe. Vérifier la normalité pour chaque groupe séparément. Cette approche peut être utilisée lorsque vous n’avez que quelques groupes et plusieurs points de données par groupe.
Vérifier l’hypothèse de normalité en analysant les résidus du modèle. Le graphique QQ plot dessine la corrélation entre une donnée définie et la distribution normale.
# Construire le modèle linéaire
model <- lm(weight ~ group, data = PlantGrowth)
# Créer un QQ plot des résidus
ggqqplot(residuals(model))Dans le QQ plot, comme tous les points se situent approximativement le long de la ligne de référence, nous pouvons supposer une normalité.
## # A tibble: 1 x 3
## variable statistic p.value
## <chr> <dbl> <dbl>
## 1 residuals(model) 0.966 0.438
La p-value n’est pas significative (p = 0,13), on peut donc supposer une normalité.
Vérifier l’hypothèse de normalité par groupe. Calcul du test Shapiro-Wilk pour chaque niveau de groupe. Si les données sont normalement distribuées, la p-value doit être supérieure à 0,05.
## # A tibble: 3 x 4
## group variable statistic p
## <fct> <chr> <dbl> <dbl>
## 1 ctrl weight 0.957 0.747
## 2 trt1 weight 0.930 0.452
## 3 trt2 weight 0.941 0.564
Le graphique residuals versus fits (résidus versus prédictions) peut être utilisé pour vérifier l’homogénéité des variances.
Dans le graphique ci-dessus, il n’y a pas de relations évidentes entre les résidus et les valeurs calculées (fitted) (la moyenne de chaque groupe), ce qui est bon. On peut donc supposer l’homogénéité des variances.
Il est également possible d’utiliser le test de Levene pour vérifier l’homogénéité des variances:
## # A tibble: 1 x 4
## df1 df2 statistic p
## <int> <int> <dbl> <dbl>
## 1 2 27 1.12 0.341
## Coefficient covariances computed by hccm()
## ANOVA Table (type II tests)
##
## Effect DFn DFd F p p<.05 ges
## 1 group 2 27 4.846 0.016 * 0.264
Dans le tableau ci-dessus, la colonne ges correspond l’eta-carré généralisé (taille de l’effet). Il mesure la proportion de la variabilité de la variable-réponse (ici weight pour poids des plantes) qui peut être expliquée par le prédicteur (ici group pour groupe de traitement). Une valeur de l’effet de 0,26 (26 %) signifie que 26 % de la variation du poids (weight) peut être attribuable aux conditions de traitement.
Une ANOVA, à un facteur, significative est généralement suivie de tests post-hoc de Tukey pour effectuer de multiples comparaisons par paires entre les groupes. Fonction R clé: tukey_hsd() [rstatix].
## # A tibble: 3 x 9
## term group1 group2 null.value estimate conf.low conf.high p.adj p.adj.signif
## * <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>
## 1 group ctrl trt1 0 -0.371 -1.06 0.320 0.391 ns
## 2 group ctrl trt2 0 0.494 -0.197 1.19 0.198 ns
## 3 group trt1 trt2 0 0.865 0.174 1.56 0.012 *
# Visualisation : Boxplots avec p-values
pwc <- pwc %>% add_xy_position(x = "group")
ggboxplot(PlantGrowth, x = "group", y = "weight") +
stat_pvalue_manual(pwc, hide.ns = TRUE) +
labs(
subtitle = get_test_label(res.aov, detailed = TRUE),
caption = get_pwc_label(pwc)
)
Comment faire une ACP