knitr::opts_chunk$set( collapse = TRUE, comment = "#>", echo = TRUE ) library(tidyr) library(ggplot2) data("fruits", package = "minidebuter")
Décision / Verité | Non rejet de $H_0$| Rejet $H_0$ -----------------:|:--------------------------:|:--------------------: $H_0$ | Confiance | Erreur de 1ère esp. $H_1$ | Erreur de 2ème esp. | Puissance
Keewee ou Koowoo ?
data.frame(i = 0:10, p = dbinom(0:10, 10, 0.5), col = rep(c("A", "B"), c(9, 2))) %>% ggplot(aes(i, p, fill = col)) + geom_col(show.legend = FALSE) + theme_minimal() + scale_x_continuous(breaks = 0:10) + labs(x = "", y = "")
Une variable suivant une loi du khi-deux à $k$ degrés de liberté ($\chi^2(k)$) est la somme des carrés de $k$ variable normales indépendantes :
[ \sum_{i = 1}^k Z_i^2 \sim \chi^2(k) ]
Remarques :
Une variable obtenue en divisant un variable normale par la racine carrée d'une variable du khi-deux (indépendante de la première) elle-même normalisée par son dégré de liberté $d$ suit une loi de Student à $d$ degrés de liberté :
[ \frac{Z}{\sqrt{\displaystyle \frac{1}{d} X}} \sim T(d) ]
En pratique : [ \frac{\text{moyenne}}{\displaystyle \frac{1}{\sqrt{\text{taille}} } \text{ écart-type}} \sim T(\text{taille} - 1) ]
Le ratio de deux variables indépendantes du khi-deux à $d_1$ et $d_2$ degrés de liberté est une variable aléatoire de Fisher à $d_1$ et $d_2$ degrés de liberté :
[ \displaystyle \frac{X^2_1}{X^2_2} \sim F(d_1, d_2) ]
En pratique : des ratios de variance !
qplot(fruits$Energie) energiequal <- cut(fruits$Energie, c(0, 250, 2000))
qplot(fruits$Eau) eauqual <- cut(fruits$Eau, c(0, 85, 100))
Une table de contingence, ou table de comptage, est un tableau croisé (de comptage) entre deux variables qualitatives ou plus.
(tab <- table(energiequal, eauqual))
On peut aussi calculer les proportions
prop.table(tab)
Proportions conditionnellement aux lignes :
prop.table(tab, margin = 1)
Proportions conditionnellement aux colonnes :
prop.table(tab, margin = 2)
Avec la fonction prop.test
:
prop.test(table(energiequal, eauqual))
Attention, le test des proportions a besoin de données de comptage, pour lui : [ \frac{2}{4} \neq \frac{50}{100} ]
prop.test
{.smaller}x
pour les "succès", n
pour le nombre total,p
Un des exemples de la fonction (cf. ?prop.test
) :
smokers <- c( 83, 90, 129, 70 ) patients <- c( 86, 93, 136, 82 ) prop.test(smokers, patients)
Avec la fonction chisq.test
:
chisq.test(energiequal, eauqual)
chisq.test
{.smaller}Un des exemples de la fonction (cf. ?chisq.test
) :
M <- as.table(rbind(c(762, 327, 468), c(484, 239, 477))) dimnames(M) <- list(gender = c("F", "M"), party = c("Democrat","Independent", "Republican")) (Xsq <- chisq.test(M)) # Prints test summary Xsq$expected # expected counts under the null
Elle compare les fréquences observées aux fréquences attendues. Les fréquences attendues sont calculées à partir des fréquences marginales sous hypothèse d'indépendance.
[ X^2 = \displaystyle \sum \frac{\left(n_{ij} - \displaystyle \frac{n_{i\cdot} n_{\cdot j}}{n} \right)^2}{\displaystyle \frac{n_{i\cdot} n_{\cdot j}}{n}}, ] avec $n_{ij}$ l'effectif observé, $n_{i\cdot}$ l'effectif marginal ligne, $n_{\cdot j}$ l'effectif marginal colonne et $n$ l'effectif total.
Rappel : quand $A$ et $B$ son indépendants, $P(A\cap B) = P(A)P(B)$.
Avec la fonction fisher.test
:
fisher.test(energiequal, eauqual)
fisher.test
{.smaller}Un des exemples de la fonction (cf. ?fisher.test
) :
Convictions <- matrix( c(2, 10, 15, 3), nrow = 2, dimnames = list( c("Dizygotic", "Monozygotic"), c("Convicted", "Not convicted"))) fisher.test(Convictions, alternative = "less")
Avec la fonction t.test
:
t.test(fruits$VitamineC ~ eauqual)
Les formules permettent à l'utilisateur de décrire un modèle : [ Y = X_1 + X_2 + X_3 + X_2X_3 + X_3X_4 ] deviendra
y ~ x1 + x2 * x3 + x3:x4
Repérez le tilde sur votre clavier, il est très important en R !
Exemple :
y ~ x + age + sex + SCL:disease
t.test
{.smaller}paired = TRUE
pour des données appariées,Un des exemples de la fonction (cf. ?t.test
) :
t.test(extra ~ group, data = sleep)
L'équivalent non-paramétrique du test de Student est le test de Wilcoxon-Mann-Whitney :
wilcox.test(fruits$VitamineC ~ eauqual)
L'objet retourné est une liste qui contient (en général) les deux éléments les plus intéressants : statistic
et p.value
.
Exemple de récupération de la P-value :
res.ttest <- t.test(fruits$VitamineC ~ eauqual) pval <- res.ttest$p.value
Faire une ANOVA en R n'est pas une mince affaire !
summary(aov(VitamineC ~ groupe, data = fruits))
Et récupérer la P-value est ridiculement difficile :
res <- summary(aov(VitamineC ~ groupe, data = fruits)) res[[1]]$`Pr(>F)`[1]
Et la syntaxe est différente pour l'équivalent non-paramétrique : le test de Kruskal-Wallis :
kruskal.test(fruits$VitamineC, fruits$groupe)
Récupérer la p-valeur s'effectue de la même façon que pour un test de Student.
Avec la fonction cor.test
. Exemple :
cor.test(fruits$Eau, fruits$Energie)
cor.test
{.smaller}x
et y
de même longueur,Un des exemples de la fonction (cf. ?cor.test
) :
x <- c(44.4, 45.9, 41.9, 53.3, 44.7, 44.1, 50.7, 45.2, 60.1) y <- c( 2.6, 3.1, 2.5, 5.0, 3.6, 4.0, 5.2, 2.8, 3.8) cor.test(x, y, method = "kendall", alternative = "greater")
Avec la fonction lm
. Exemple :
res.lm <- lm(Energie ~Proteines + Sucres + Fibres + Eau, data = fruits) summary(res.lm)
Les packages
FactomineR
factoextra
Les références :
Les packages
lme4
lmerTest
multcomp
Une référence (parmi d'autres) : Mixed Models with R
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.