Document complémentaire au module 7 du cours SDD I de 2025-2026. Distribué sous licence CC BY-NC-SA 4.0.
Veuillez vous référer au cours en ligne pour les explications et les interprétations de cette analyse.
Installer un environnement R adéquat pour reproduire cette analyse.
# Table de la distribution binomiale avec size = 6 et p = 0.75
(binom_table <- dtx(succès = 0:6,
probabilité = dbinom(0:6, size = 6, prob = 0.75)))## # A data.trame: [7 × 2]
## succès probabilité
## <int> <dbl>
## 1 0 0.000244
## 2 1 0.00439
## 3 2 0.0330
## 4 3 0.132
## 5 4 0.297
## 6 5 0.356
## 7 6 0.178
# Graphique de la distribution binomiale avec size = 6 et p = 0.75
bi <- dist_binomial(size = 6, prob = 0.75)
chart(bi) +
ylab("Densité de probabilité")# Graphique de la distribution binomiale avec size = 6 et p = 0.5
chart(dist_binomial(size = 6, prob = 0.5)) +
ylab("Densité de probabilité")## <distribution[1]>
## [1] Pois(3)
## [1] 2
## [1] 2
# Distribution log-normale avec mu = 0 et sigma = 0.5
chart(dist_lognormal(mu = 0, sigma = 0.5), xlim = c(0, 4)) +
ylab("Densité de probabilité")# Calculs sur la distribution log-normale avec mu = 1 et sigma = 0.5
lN1 <- dist_lognormal(mu = 1, sigma = 0.5) # Arguments mu =, sigma =
lN1 # Attention: lN(mu, variance) 0.5^2 = 0.25## <distribution[1]>
## [1] lN(1, 0.25)
## [1] 6.186855
## [1] 6.186855
## Un **quantile** divise des données quantitatives en deux sous-groupes de telle manière que le groupe contenant les observations plus petites que ce quantile représente un effectif équivalent à la fraction considérée. Donc, un quantile 10% correspondra à la valeur qui sépare le jeu de données en 10% des observations les plus petites et 90% des observations les plus grandes.
# Lecture et remaniement des données zooplancton -> eggs
read("zooplankton", package = "data.io") %>.%
sfilter(., class == "Egg_elongated") %>.%
smutate(., log_area = log10(area)) %>.%
sselect(., area, log_area) ->
eggs
summary(eggs)## area log_area
## Min. :0.4121 Min. :-0.3850
## 1st Qu.:0.4714 1st Qu.:-0.3266
## Median :0.4950 Median :-0.3054
## Mean :0.5100 Mean :-0.2950
## 3rd Qu.:0.5347 3rd Qu.:-0.2719
## Max. :0.6718 Max. :-0.1728
# Histogramme du log de la surface des œufs
chart(data = eggs, ~ log_area) +
geom_histogram(bins = 12)# Graphique quantile-quantile du log de la surface des œufs
car::qqPlot(eggs[["log_area"]], distribution = "norm",
envelope = 0.95, col = "Black", ylab = "log(area [mm^2])")## [1] 11 30
# Données concernant les bec-croisés
crossbill <- dtx(cb = c(rep("left", 1895), rep("right", 1752)))
tabularise$headtail(crossbill)cb |
|---|
left |
left |
left |
left |
left |
... |
right |
right |
right |
right |
right |
Premières et dernières 5 lignes d'un total de 3647 |
## Cross
## left right
## 1895 1752
# Version formatée avec tabularise du tableau de contingence de crossbill
tabularise(crossbill_tab)Cross | Count | Percent |
|---|---|---|
left | 1Â 895 | 52.0% |
right | 1Â 752 | 48.0% |
Total | 3Â 647 | 100.0% |
# Test Chi^2 univarié sur le tableau de contingence de crossbill
chisq.test(crossbill_tab, p = c(left = 1/2, right = 1/2), rescale.p = FALSE)##
## Chi-squared test for given probabilities
##
## data: crossbill_tab
## X-squared = 5.6071, df = 1, p-value = 0.01789
# Test Chi^2 univarié de crossbill formaté avec tabularise
chisq.test(crossbill_tab, p = c(left = 1/2, right = 1/2), rescale.p = FALSE) |>
tabularise()
| Ddl | Valeur de p | |
|---|---|---|---|
5.61 | 1 | 0.0179 | * |
0 <= '***' < 0.001 < '**' < 0.01 < '*' < 0.05 | |||
# Distribution Chi^2 avec ddl = 3
chi2 <- dist_chisq(3)
chart(chi2) +
ylab("Densité de probabilité")## [1] 3.841459
# P-value du test (aire à droite du quantile observé ave ddl = 1)
pchisq(5.61, df = 1, lower.tail = FALSE)## [1] 0.01785826
# Test Chi^2 sur crossbill : proportions équivalentes, échantillon 10x plus petit
(crossbill_tab2 <- as.table(c(left = 190, right = 175)))## left right
## 190 175
##
## Chi-squared test for given probabilities
##
## data: crossbill_tab2
## X-squared = 0.61644, df = 1, p-value = 0.4324
# Jeu de données timolol
timolol <- dtx(
traitement = c(
rep("timolol", 160), rep("placebo", 147)),
patient = c(
rep("sain", 44), rep("malade", 116),
rep("sain", 19), rep("malade", 128))
)
tabularise$headtail(timolol)traitement | patient |
|---|---|
timolol | sain |
timolol | sain |
timolol | sain |
timolol | sain |
timolol | sain |
... | ... |
placebo | malade |
placebo | malade |
placebo | malade |
placebo | malade |
placebo | malade |
Premières et dernières 5 lignes d'un total de 307 | |
# Table de contingence à deux entrées pout timolol
(timolol_table <- table(Traitement = timolol$traitement, Résultat = timolol$patient))## Résultat
## Traitement malade sain
## placebo 128 19
## timolol 116 44
# Formatage du tableau de contingence à deux entrées de timolol avec tabularise
(tabularise(timolol_table))Traitement | Résultat | |||
|---|---|---|---|---|
malade | sain | Total | ||
placebo | Count | 128 (41.7%) | 19 (6.2%) | 147 (47.9%) |
Mar. pct (1) | 52.5% ; 87.1% | 30.2% ; 12.9% | ||
timolol | Count | 116 (37.8%) | 44 (14.3%) | 160 (52.1%) |
Mar. pct | 47.5% ; 72.5% | 69.8% ; 27.5% | ||
Total | Count | 244 (79.5%) | 63 (20.5%) | 307 (100.0%) |
(1) Columns and rows percentages | ||||
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: timolol_table
## X-squared = 9.1046, df = 1, p-value = 0.00255
## Expected frequencies:
## Résultat
## Traitement malade sain
## placebo 116.8339 30.16612
## timolol 127.1661 32.83388
| Ddl | Valeur de p | |
|---|---|---|---|
9.1 | 1 | 0.00255 | ** |
0 <= '***' < 0.001 < '**' < 0.01 < '*' < 0.05 | |||
# Préparation de R et lecture des données crabs du package MASS
SciViews::R("infer", lang = "fr")
crabs <- read("crabs", package = "MASS")
# Table de contingence espèces - sexes pour crabs
table(Espèce = crabs$species, Sexe = crabs$sex)## Sexe
## Espèce F M
## B 50 50
## O 50 50
# Table de contingence formaté avec tabularise
table(Espèce = crabs$species, Sexe = crabs$sex) |>
tabularise()Espèce | Sexe | |||
|---|---|---|---|---|
F | M | Total | ||
B | Count | 50 (25.0%) | 50 (25.0%) | 100 (50.0%) |
Mar. pct (1) | 50.0% ; 50.0% | 50.0% ; 50.0% | ||
O | Count | 50 (25.0%) | 50 (25.0%) | 100 (50.0%) |
Mar. pct | 50.0% ; 50.0% | 50.0% ; 50.0% | ||
Total | Count | 100 (50.0%) | 100 (50.0%) | 200 (100.0%) |
(1) Columns and rows percentages | ||||
# Graphe en violon de front
chart(data = crabs, front ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75), trim = FALSE)# Graphe en violon de rear
chart(data = crabs, rear ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75))# Graphe en violon de length
chart(data = crabs, length ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75))# Graphe en violon de width
chart(data = crabs, width ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75))# Graphe en violon de depth
chart(data = crabs, depth ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75))# Graphique en nuage de points de rear en fonction de length
chart(data = crabs, rear ~ length %shape=% species %col=% sex) +
geom_point()# Graphique en nuage de points de front en fonction de width
chart(data = crabs, front ~ width %shape=% species %col=% sex) +
geom_point()# Calcul et graphique de la métrique (ratio) rear / length
crabs %>.%
smutate(., rear_length = rear / length) %>.%
chart(data = ., rear_length ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) +
ylab("Ratio largeur arrière/longueur")# Calcul et graphique de rear_length2
crabs %>.%
mutate(., rear_length2 = rear / (0.3 * length + 2.4)) %>.%
chart(data = ., rear_length2 ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) +
ylab("Ratio largeur arrière/(0.3*longueur + 2.4)")# Calcul et graphique de front_width
crabs %>.%
mutate(., front_width = front / (0.43 * width)) %>.%
chart(data = ., front_width ~ species %fill=% sex) +
geom_violin(draw_quantiles = c(0.25, 0.5, 0.75)) +
ylab("Ratio lobe frontal/(0.43*largeur)")