Si vous n’avez jamais utilisé de tutoriel “learnr”, familiarisez-vous d’abord avec son interface ici.
Conformément au RGPD (Règlement Général sur la Protection des Données), nous sommes tenus de vous informer de ce que vos résultats seront collecté afin de suivre votre progression. Les données seront enregistrées au nom de l’utilisateur apparaissant en haut de cette page. Corrigez si nécessaire ! En utilisant ce tutoriel, vous marquez expressément votre accord pour que ces données puissent être collectées par vos enseignants et utilisées pour vous aider et vous évaluer. Après avoir été anonymisées, ces données pourront également servir à des études globales dans un cadre scientifique et/ou éducatif uniquement.
Découvrir la distribution t de Student
Comprendre le principe de la distribution d’un échantillon
Appréhender l’intervalle de confiance, savoir le calculer et l’utiliser
Comprendre les différentes variantes du test t de Student et être capable de l’utiliser pour résoudre des questions pratiques en biologie
Un échantillon représentatif d’une population peut être décrit par plusieurs descripteurs statistiques comme la moyenne, l’écart-type ou encore le coefficient de variation.
Un premier descripteur est donc la moyenne de l’échantillon qui est calculé via l’équation suivante :
\[\bar{x}=\sum_{i=1}^n{\frac{x_i}{n}}\]
En partant de la série de nombre ci-dessous, réalisez les calculs suivants :
set.seed(42)
(var <- sample(x = 1:20, size = 5))
[1] 19 18 6 15 11
Il existe dans R la fonction mean()
qui permet de calculer la moyenne. Calculez la moyenne via cette fonction sur la série de nombre proposée ci-dessus (nom de la variable : var
).
set.seed(42)
var <- sample(x = 1:20, size = 5)
set.seed(42)
var <- sample(x = 1:20, size = 5)
# calculer la moyenne
set.seed(42)
var <- sample(x = 1:20, size = 5)
# Caculez la moyenne
mean(var)
#TODO
Un second descripteur d’un échantillon est l’écart-type qui est calculé via l’équation suivante :
\[s = \sqrt {s^2}\]
L’écart-type est la racine carré de la variance qui est également un descripteur statistique de l’échantillon.
La variance de l’échantillon qui est calculée via l’équation suivante :
\[s^2 = \sum\limits_{i=1}^n \frac{(y_i - \bar y)^2}{n-1}\]
Il existe dans R la fonction sd()
qui permet de calculer l’écart-type d’un échantillon. Calculez l’écart-type via cette fonction sur la série de nombre proposée ci-dessus (nom de la variable : var
).
set.seed(42)
var <- sample(x = 1:20, size = 5)
# Caculez l'écart-type
set.seed(42)
var <- sample(x = 1:20, size = 5)
# Caculez l'écart-type
sd(var)
#TODO
On retrouve très souvent l’écart-type associé à la moyenne dans la descritpion statistique d’un échantillon : 13.8 \(\pm\) 5.357
Un quatrième descripteur est le coefficient de variation de l’échantillon qui est calculé via
\[cv \ (\%) = \frac{s}{\bar y} \times 100\]
En partant du jeu de données portant sur la croissance des dents de cochons d’Inde, calculez la moyenne et l’écart-type de la variable len
# Importation du jeu de données ToothGrowth
(tooth_growth <- read("ToothGrowth", package = "datasets"))
# Importation du jeu de données ToothGrowth
tooth_growth <- read("ToothGrowth", package = "datasets")
mean(tooth_growth$len)
#TODO
sd(tooth_growth$len)
#TODO
En partant du jeu de données sur la croissance des dents de cochons d’inde, calculez la moyenne et l’écart-type de la variable len
en fonction du supplément administré au individus (soit OJ, soit VC).
[1] "summarise" "mean" "tooth_growth" "group_by()"
[5] "supp" "len" "%>.%" "sd"
tooth_growth %>.%
group_by(., supp) %>.%
summarise(., mean = mean(len), sd = sd(len))
#TODO
La distrubution de student qui nous renseigne sur la distribution d’un échantillon se note de la manière suivante :
\[\mu_x \sim t(\mu, \frac{\sigma}{\sqrt{n}}, n-1)\]
La moyenne de l’échantillon suit une distribution t de Student avec pour moyenne, la moyenne de la population, pour écart type, l’écart type de la population divisé par la racine carrée de n, et comme degrés de liberté n moins un.
\[y \sim t(50, 5.5, 20)\]
Le snippet est .itdens et renvoit les instructions suivantes :
# Student's t distribution (density probability) with parameters:
.mu <- 0; .s <- 1; .df <- DEGREES_OF_FREEDOM # .mu, .s (sigma) and .df
.col <- 1; .add <- FALSE # Plot parameters
.x <- seq(-4.5*.s+.mu, 4.5*.s+.mu, l = 1000) # Quantiles
.d <- function (x) dt((x-.mu)/.s, df = .df)/.s # Distribution function
.q <- function (p) qt(p, df = .df) * .s + .mu # Quantile for lower-tail prob
.label <- bquote(t(.(.mu), .(.s), .(.df))) # Parameters
curve(.d(x), xlim = range(.x), xaxs = "i", n = 1000, col = .col,
add = .add, xlab = "Quantiles", ylab = "Probability density") # Curve
abline(h = 0, col = "gray") # Baseline
# Student's t distribution (density probability) with parameters:
.mu <- 50; .s <- 5.5; .df <- 20 # .mu, .s (sigma) and .df
.col <- 1; .add <- FALSE # Plot parameters
.x <- seq(-4.5*.s+.mu, 4.5*.s+.mu, l = 1000) # Quantiles
.d <- function (x) dt((x-.mu)/.s, df = .df)/.s # Distribution function
.q <- function (p) qt(p, df = .df) * .s + .mu # Quantile for lower-tail prob
.label <- bquote(t(.(.mu), .(.s), .(.df))) # Parameters
curve(.d(x), xlim = range(.x), xaxs = "i", n = 1000, col = .col,
add = .add, xlab = "Quantiles", ylab = "Probability density") # Curve
abline(h = 0, col = "gray") # Baseline
#TODO
Le snippet est .itproba et renvoit les instructions suivantes :
.mu <- 0; .s <- 1; pt((QUANTILES - .mu)/.s, df = DEGREES_OF_FREEDOM, lower.tail = TRUE)
.mu <- 50; .s <- 5.5; pt((60 - .mu)/.s, df = 20, lower.tail = FALSE)
#TODO
Le snippet est .itquant et renvoit les instructions suivantes :
.mu <- 0; .s <- 1; .mu + .s * qt(PROBABILITIES, df = DEGREES_OF_FREEDOM, lower.tail = TRUE)
.mu <- 50; .s <- 5.5; .mu + .s * qt(0.025, df = 20, lower.tail = TRUE)
#TODO
Le snippet est .itquant et renvoit les instructions suivantes :
.mu <- 0; .s <- 1; .mu + .s * qt(PROBABILITIES, df = DEGREES_OF_FREEDOM, lower.tail = TRUE)
.mu <- 50; .s <- 5.5; .mu + .s * qt(0.025, df = 20, lower.tail = FALSE)
#TODO
Vous pouvez observez via les résultats obtenues d’aire de 0.025% à droite et à gauche que la distrubution de student est symétrique.
L’intervalle de confiance est calculé par l’équation suivante
\[\mathrm{IC}(1 - \alpha) \simeq \bar{x} \pm t_{\alpha/2}^{n-1} \cdot \frac{s_x}{\sqrt{n}}\]
Prennons un exemple concret, calculez l’IC à 95% donc \(IC(0.95)\) pour un échantillon dont la moyenne est de 10, l’écart-type est de 0.3 et ou le nombre d’observation est de 25. nous avons donc :
\[\bar{x} = 10\]
\[s_x = 0.3\]
\[n = 25\]
\[\alpha = 0.05\]
\[\mathrm{IC}(0.95) \simeq 10 \pm t_{\alpha/2}^{n-1} \cdot \frac{0.3}{\sqrt{25}}\]
Table de student
Nous obtenons donc une valeur de 2.064
\[\mathrm{IC}(0.95) \simeq 10 \pm 2.064 \cdot \frac{0.3}{\sqrt{25}}\]
(upper <- 10 + 2.064*(0.3/sqrt(25)))
[1] 10.12384
(lower <- 10 + 2.064*(0.3/sqrt(25)))
[1] 10.12384
En partant du jeu de données sur la croissance des dents de cochons d’Indes, vous pouvez représenter graphiquement l’intervalle de confiance comme le montre l’exemple ci-dessous.
Le snippet pour representer l’IC est .cberrbar et renvoit les instructions suivantes :
chart(data = DF, YNUM ~ XFACTOR) +
geom_jitter(alpha = 0.4, width = 0.2) +
stat_summary(geom = "point", fun.y = "mean") +
stat_summary(geom = "errorbar", width = 0.1,
fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95))
Reproduisez le graphique ci-dessus
chart(data = tooth_growth, len ~ supp) +
geom_jitter(alpha = 0.4, width = 0.2) +
stat_summary(geom = "point", fun.y = "mean") +
stat_summary(geom = "errorbar", width = 0.1,
fun.data = "mean_cl_normal", fun.args = list(conf.int = 0.95))
#TODO
Déterminez si la croissance des dents de cochons d’inde est similaire au seuil \(\alpha\) de 0.05% lors de l’utilisation du supplément jus d’orange (OJ) par rapport au supplément vitamine C (VC).
# Importation du jeu de données ToothGrowth
(tooth_growth <- read("ToothGrowth", package = "datasets"))
Le snippet pour réaliser un test de student d’indépendance est .hmtestindep et renvoit les instructions suivantes :
t.test(data = DF, YNUM ~ XFACTOR,
alternative = "two.sided", conf.level = 0.95, var.equal = TRUE)
t.test(data = tooth_growth, len ~ supp,
alternative = "two.sided", conf.level = 0.95, var.equal = TRUE)
#TODO
Bravo! Vous venez de terminer votre séance d’exercices dans un tutoriel “learnr”.
Laissez nous vos impressions sur cet outil pédagogique ou expérimentez encore dans la zone ci-dessous. Rappelez-vous que pour placer un commentaire dans une zone de code R, vous devez utilisez un dièse (#
) devant vos phrases.
# Ajout de commentaires
# ...
# Not yet...