Document complémentaire au module 1 du cours SDD II 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.

# Dialecte SciViews::R avec la section dédiée à la modélisation
SciViews::R("model", lang = "fr")

# Lecture du jeu de données d'exemple
trees <- read("trees", package = "datasets")

# Matrice de corrélation entre variables numériques du jeu de données
(trees_corr <- correlation(trees)) |>
  tabularise()

Matrice de coefficients de corrélation de Pearson r

diameter

height

volume

diameter

1.000

0.519

0.967

height

0.519

1.000

0.597

volume

0.967

0.597

1.000

# Graphique de la matrice de corrélation
plot(trees_corr, type = "lower")

# Matrice de nuages de points pour visualiser les associations entre variables
GGally::ggscatmat(trees, 1:3)

# Graphique en nuage de points de la relation volume ~ diamètre
chart(data = trees, volume ~ diameter) +
  geom_point()

# Régression linéaire
trees_lm <- lm(data = trees, volume ~ diameter)

# Graphique de nos observations et de la droite obtenue avec la fonction lm()
# accompagnée d'une enveloppe de confiance à 95%
chart(trees_lm)

# Résumé condensé sous forme textuelle de notre modèle
summary_(trees_lm)
## 
## Call:
## lm(formula = volume ~ diameter, data = trees)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.231211 -0.087021  0.003533  0.100594  0.271725 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.04748    0.09553  -10.96 7.85e-12 ***
## diameter     5.65154    0.27649   20.44  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1206 on 29 degrees of freedom
## Multiple R-squared:  0.9351, Adjusted R-squared:  0.9329 
## F-statistic: 417.8 on 1 and 29 DF,  p-value: < 2.2e-16
# Dispersion des résidus résumée par les cinq nombres
fivenum(residuals(trees_lm))
##           20            7           12            9           31 
## -0.231210947 -0.087020695  0.003532709  0.100594122  0.271724973
# Estimation des paramètres de notre modèle
coef(trees_lm)
## (Intercept)    diameter 
##   -1.047478    5.651535
# Résumé du modèle formaté à l'aide de tabularise()
summary_(trees_lm) |>
  tabularise(warn = FALSE)

Volume de bois  [m3]=α+β(Diameˋtre aˋ 1,4m  [m])+ϵ\operatorname{Volume\ de\ bois\ \ [m^{3}]} = \alpha + \beta_{}(\operatorname{Diamètre\ à\ 1,4m\ \ [m]}) + \epsilon

Terme

Valeur estimée

Ecart type

Valeur de t

Valeur de p

α\alpha

-1.05

0.0955

-11.0

7.85·10-12

***

β\beta_{}

5.65

0.2765

20.4

< 2·10-16

***

0 <= '***' < 0.001 < '**' < 0.01 < '*' < 0.05

Etendue des résidus : [-0.2312, 0.2717]
Ecart type des résidus : 0.1206 pour 29 degrés de liberté
R2 multiple : 0.9351 - R2 ajusté : 0.9329
Statistique F : 417.8 sur 1 et 29 ddl - valeur de p : < 2.22e-16

# Graphique des résidus en fonction des valeurs prédites pour Y
chart$resfitted(trees_lm)

# Graphique quantile-quantile des résidus
chart$qqplot(trees_lm)

# Graphique des résidus servant à vérifier l'homoscédasticité
chart$scalelocation(trees_lm)

# Graphique de la distance de Cook des résidus
chart$cooksd(trees_lm)

# Graphique de l'effet de levier des résidus
chart$resleverage(trees_lm)

# Graphique de l'effet de levier versus distance de Cook
chart$cookleverage(trees_lm)

# Figure composite avec les 4 graphiques d'analyse des résidus principaux
chart$residuals(trees_lm)

# Nouveau jeu de données pouvant servir à des prédictions
new_trees <- dtx(diameter = seq(0.1, 0.7, length.out = 8))

# Nouvelles prédictions à l'aide de notre modèle
new_trees <- add_predictions(new_trees, trees_lm)
new_trees
## # A data.trame: [8 × 2]
##   diameter     pred
##      <dbl>    <dbl>
## 1    0.1   -0.482  
## 2    0.186  0.00209
## 3    0.271  0.487  
## 4    0.357  0.971  
## 5    0.443  1.46   
## 6    0.529  1.94   
## 7    0.614  2.42   
## 8    0.7    2.91
# Ajout des prédictions au jeu de données initial
trees <- add_predictions(trees, trees_lm)

# Graphique avec les prédictions
chart(data = trees, volume ~ diameter) +
  geom_point() +
  geom_line(f_aes(pred ~ diameter))

# Données de paramétrisation du modèle
(trees_tidy <- tidy(trees_lm))
## # A tibble: 2 × 5
##   term        estimate std.error statistic  p.value
##   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
## 1 (Intercept)    -1.05    0.0955     -11.0 7.85e-12
## 2 diameter        5.65    0.276       20.4 9.09e-19
# Idem, mais formatage du tableau avec tabularise()
tabularise$tidy(trees_lm, header = FALSE)

Terme

Valeur estimée

Ecart type

Valeur de t

Valeur de p

Ordonnée à l’origine

-1.05

0.0955

-11.0

7.85·10-12

***

Diamètre à 1,4m [m]

5.65

0.2765

20.4

< 2·10-16

***

0 <= '***' < 0.001 < '**' < 0.01 < '*' < 0.05

# Métriques mesurant la qualité d'ajustement de notre modèle
(trees_glance <- glance(trees_lm))
## # A tibble: 1 × 12
##   r.squared adj.r.squared sigma statistic  p.value    df logLik   AIC   BIC deviance df.residual  nobs
##       <dbl>         <dbl> <dbl>     <dbl>    <dbl> <dbl>  <dbl> <dbl> <dbl>    <dbl>       <int> <int>
## 1     0.935         0.933 0.121      418. 9.09e-19     1   22.6 -39.2 -34.9    0.422          29    31
# Idem avec formatage tabularise()
tabularise$glance(trees_lm, header = FALSE)

R2

R2 ajusté

RSE

Valeur de t

Valeur de p

Ddl modèle

Log-vraisemblance

AIC

BIC

Déviance

Ddl résidus

N

0.935

0.933

0.121

418

< 2·10-16

1

22.6

-39.2

-34.9

0.422

29

31