R-squared & précision d’une régression en R : R², R² ajusté, RMSE, AIC, BIC

Ce que signifie vraiment le R², comment le calculer, R² vs R² ajusté, et quand RMSE, MAE, AIC, BIC et le Cp de Mallows comptent

Un guide pratique pour interpréter la précision d’un modèle de régression en R. Comprenez ce que signifie le R-squared (le coefficient de détermination) et comment le calculer, la différence entre le R² et le R² ajusté, et comment lire RMSE, RSE, MAE, AIC, BIC et le Cp de Mallows. Calculés de deux façons — base R / broom::glance et le metric set yardstick de tidymodels — sur les données swiss intégrées, puis utilisés pour comparer deux modèles et choisir le meilleur.

Date de publication

25 juin 2026

Modifié

7 juillet 2026

AstucePoints clés à retenir
  • Le R² (le coefficient de détermination) est la part de la variation de la variable cible que votre modèle explique — de 0 (pas mieux que la moyenne) à 1 (parfait). Plus c’est élevé, mieux c’est ; il répond à la question « quelle proportion de ce qui se passe ai-je capturée ? »
  • Calculez-le avec summary(model)$r.squared, ou comme la corrélation au carré entre les valeurs observées et prédites : cor(observed, predicted)^2.
  • Le R² augmente toujours quand vous ajoutez des prédicteurs — même inutiles. Le R² ajusté pénalise les variables superflues : c’est donc l’indicateur honnête pour comparer des modèles ayant un nombre différent de prédicteurs.
  • RMSE et MAE rapportent l’erreur de prédiction typique dans les unités mêmes de la variable cible (le RMSE pénalise davantage les grosses erreurs) ; le RSE (sigma) est le RMSE ajusté pour le nombre de prédicteurs. Plus c’est bas, mieux c’est.
  • AIC, BIC et le Cp de Mallows estiment l’erreur de prédiction avec une pénalité pour la complexité — ce sont les indicateurs à utiliser pour la sélection de modèle. Le modèle ayant l’AIC/BIC le plus bas l’emporte.
  • Obtenez-les tous d’un coup avec broom::glance() (base/lm) ou yardstick (tidymodels). Lisez les chiffres — ne vous contentez pas de les afficher.
Obtenez le livre — Machine Learning Essentials (PDF)

Introduction

Vous ajustez un modèle de régression et R affiche un mur de chiffres — R-squared, Adjusted R-squared, un Residual standard error, et si vous le demandez, un AIC et un BIC. Lequel vous dit si le modèle est bon ? Et lorsque vous avez deux modèles candidats, quel chiffre désigne le vainqueur ?

Cette leçon répond précisément à ces questions. Nous commencerons par l’indicateur que tout le monde recherche et se rappelle à moitié — le R-squared — pour cerner ce qu’il signifie, comment le calculer, et la différence cruciale entre le R² et le R² ajusté. Nous ajouterons ensuite les indicateurs d’erreur (RMSE, RSE, MAE) et les critères de sélection de modèle (AIC, BIC, Cp de Mallows), nous interpréterons chacun en langage clair en précisant quand y recourir, et nous les utiliserons pour comparer deux modèles réels et choisir le meilleur.

Nous calculons chaque indicateur de deux façons — la voie base-R / broom::glance() que la plupart des gens connaissent déjà, et la voie tidymodels yardstick employée dans tout ce pilier — afin que vous sachiez lire l’une ou l’autre des sorties que vous rencontrerez sur le terrain.

NoteUne mise en garde d’emblée : ce sont des indicateurs in-sample

Chaque indicateur présenté ici est calculé sur les mêmes données que celles ayant servi à ajuster le modèle (données d’entraînement). Ils vous disent à quel point le modèle s’ajuste — pas à quel point il prédit de nouvelles données. Pour une estimation honnête de l’erreur de prédiction, vous rééchantillonnez : voir la validation croisée et le rééchantillonnage bootstrap. Les indicateurs d’ajustement ci-dessous restent essentiels — c’est ainsi que vous comparez et sélectionnez les modèles — mais lisez-les comme une « qualité d’ajustement », non comme une « précision future ».

Les données

Nous utiliserons les données swiss intégrées à R — 47 provinces francophones de Suisse (~1888), avec une mesure standardisée de fécondité et cinq indicateurs socio-économiques. L’objectif : prédire Fertility à partir des prédicteurs. C’est le jeu de données pédagogique classique pour la sélection de modèle, et il se trouve dans datasets, donc rien à installer.

data("swiss")

# 47 provinces: fertility (outcome) + 5 socio-economic predictors
head(swiss, 3)
             Fertility Agriculture Examination Education Catholic
Courtelary        80.2        17.0          15        12     9.96
Delemont          83.1        45.1           6         9    84.84
Franches-Mnt      92.5        39.7           5         5    93.40
             Infant.Mortality
Courtelary               22.2
Delemont                 22.2
Franches-Mnt             20.2

Construire deux modèles de régression à comparer

Tout l’intérêt des indicateurs de précision réside dans la comparaison — un indicateur est surtout utile lorsqu’il départage un modèle d’un autre. Nous construisons donc deux modèles : un complet avec tous les prédicteurs, et un plus simple qui retire Examination (qui recoupe largement Education). Nous demanderons ensuite aux indicateurs lequel garder.

data("swiss")

model1 <- lm(Fertility ~ ., data = swiss)            # all predictors
model2 <- lm(Fertility ~ . - Examination, data = swiss)  # drop Examination

Fertility ~ . signifie « régresser Fertility sur tout le reste » ; . - Examination conserve tout sauf Examination. Deux modèles, une même variable cible — évaluons-les maintenant.

Le R-squared : quelle part de variation le modèle explique-t-il ?

Le R² (R-squared), le coefficient de détermination, est la proportion de la variation de la variable cible que votre modèle explique. Il va de 0 (le modèle ne fait pas mieux que de simplement prédire la moyenne de la variable cible) à 1 (le modèle prédit chaque point parfaitement). Un R² de 0.70 se lit « le modèle rend compte de 70 % de la variabilité de la fécondité ».

Il existe deux façons équivalentes de l’envisager, et toutes deux méritent d’être connues car ce sont elles qui vous permettent de le calculer à la main :

  1. Un moins la part inexpliquée : \(R^2 = 1 - SS_{res}/SS_{tot}\) — l’erreur résiduelle de votre modèle divisée par l’erreur obtenue en se contentant de deviner la moyenne (plus de détails dans la section mathématique optionnelle).
  2. La corrélation au carré entre la variable cible observée \(y\) et les prédictions du modèle \(\hat{y}\) : \(R^2 = r_{y\hat{y}}^2\), où \(r_{y\hat{y}}\) est leur corrélation de Pearson. En régression multiple, c’est le modèle mental le plus clair.

Extrayons le R² directement de summary() et confirmons qu’il est égal à la corrélation au carré :

data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)

# Two ways to get R-squared for model1
r2_summary <- summary(model1)$r.squared           # straight from lm
predicted  <- predict(model1, swiss)
r2_manual  <- cor(swiss$Fertility, predicted)^2   # squared correlation

c(from_summary = r2_summary, squared_correlation = r2_manual)
       from_summary squared_correlation 
           0.706735            0.706735 

Les deux donnent R² ≈ 0.71 — le modèle explique environ 71 % de la variation de la fécondité provinciale. C’est solide pour des données de sciences sociales. Les deux voies concordent exactement, et c’est tout le propos : le R² est la corrélation au carré entre ce que vous avez observé et ce que le modèle a prédit.

Astuce0.71 est-il un « bon » R² ?

Cela dépend entièrement du domaine. En physique ou en ingénierie, un R² inférieur à 0.99 pourrait décevoir ; en sciences sociales, en psychologie ou en économie, 0.30–0.50 est souvent respectable car le comportement humain est bruité. Il n’existe pas de seuil universel — évaluez le R² par rapport aux modèles habituels de votre problème, et lisez-le toujours en parallèle d’un indicateur d’erreur (RMSE/MAE) afin de connaître l’ampleur des erreurs, et pas seulement la part de variance.

Visualisez-le : prédit vs réel, avec le R² sur le graphique

L’image la plus claire du R² est un nuage de points prédit vs réel. Des points serrés contre la ligne à 45 degrés signalent des prédictions précises ; un nuage compact correspond à un R² élevé. Nous annotons la valeur directement sur le graphique avec ggpubr :

library(ggpubr)
data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)

plot_df <- data.frame(
  actual    = swiss$Fertility,
  predicted = predict(model1, swiss)
)

ggscatter(
  plot_df, x = "actual", y = "predicted",
  color = "#3a86d4", size = 2.5, alpha = 0.8,
  xlab = "Actual fertility", ylab = "Predicted fertility"
) +
  geom_abline(linetype = "dashed", color = "gray50") +   # perfect-prediction line
  stat_cor(aes(label = after_stat(rr.label)), label.x = 45) +  # adds the R² label
  coord_equal() +
  theme_minimal()

Scatter plot of predicted versus actual Swiss fertility scores, points scattered moderately around a dashed 45-degree reference line, with the R-squared value (0.71) annotated in the corner.

Les points se dispersent modérément autour de la diagonale en pointillés — cohérent avec un R² ≈ 0.71. stat_cor() avec le rr.label affiche le R² directement sur la figure, la même valeur que celle calculée plus haut.

Le R² ajusté : le R-squared, honnêtement pénalisé

Voici le piège qui rend le R² brut dangereux pour choisir un modèle : le R² ne peut qu’augmenter (ou rester stable) lorsque vous ajoutez un prédicteur — même totalement inutile et aléatoire. Ainsi, « le modèle ayant le R² le plus élevé » est une terrible règle de sélection ; elle récompense toujours le plus gros modèle.

Le R² ajusté corrige cela. C’est le R² assorti d’une pénalité pour le nombre de prédicteurs rapporté à la taille d’échantillon, de sorte qu’il n’augmente que lorsqu’une nouvelle variable améliore l’ajustement plus que le hasard ne le prédirait. Utilisez le R² ajusté — non le R² brut — chaque fois que vous comparez des modèles ayant un nombre différent de prédicteurs.

data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)              # 5 predictors
model2 <- lm(Fertility ~ . - Examination, data = swiss) # 4 predictors

c(
  model1_R2     = summary(model1)$r.squared,
  model1_adjR2  = summary(model1)$adj.r.squared,
  model2_R2     = summary(model2)$r.squared,
  model2_adjR2  = summary(model2)$adj.r.squared
)
   model1_R2 model1_adjR2    model2_R2 model2_adjR2 
   0.7067350    0.6709710    0.6993476    0.6707140 

Lisez ceci attentivement — c’est toute la leçon résumée en quatre chiffres :

  • Le R² brut chute de 0.707 (model1) à 0.699 (model2) lorsque nous retirons Examination. Selon la règle du R² brut, model1 « l’emporte ».
  • Mais le R² ajusté est essentiellement identique (0.671 contre 0.671). La variable Examination n’apportait presque rien une fois pris en compte le coût d’un prédicteur supplémentaire.

Les deux modèles expliquent donc la variable cible aussi bien l’un que l’autre — et puisque model2 est plus simple (une variable de moins), c’est le meilleur modèle. Toutes choses égales par ailleurs, le modèle le plus simple l’emporte. C’est une conclusion que le R² brut aurait masquée et que le R² ajusté rend évidente.

Indicateurs d’erreur : RMSE, RSE et MAE — l’ampleur de vos erreurs

Le R² est sans unité (« part de variance »). Souvent, vous voulez aussi l’erreur dans les unités mêmes de la variable cible« en moyenne, de combien une prédiction se trompe-t-elle ? ». Trois indicateurs y répondent :

  • RMSE (root mean squared error) — la racine carrée de l’erreur quadratique moyenne. Comme il élève au carré avant de moyenner, il pénalise davantage les grosses erreurs que les petites. Surveillez le RMSE lorsque les grandes erreurs sont particulièrement coûteuses. RMSE = sqrt(mean((observed - predicted)^2)).
  • RSE (erreur standard résiduelle, le sigma de R) — essentiellement le RMSE ajusté pour le nombre de prédicteurs (il divise par les degrés de liberté résiduels, et non par n). En pratique, il est très proche du RMSE ; c’est la valeur que R étiquette « Residual standard error » dans summary().
  • MAE (mean absolute error) — l’erreur absolue moyenne, qui pondère chaque erreur de façon identique. C’est l’indicateur le plus directement interprétable (« on se trompe de tant en moyenne ») et moins sensible aux valeurs aberrantes que le RMSE. MAE = mean(abs(observed - predicted)).

On a toujours MAE ≤ RMSE ; un grand écart entre les deux signale quelques erreurs importantes. Calculons les trois à la main pour model1 :

data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)

observed  <- swiss$Fertility
predicted <- predict(model1, swiss)
residuals <- observed - predicted

c(
  RSE_sigma = sigma(model1),                       # residual standard error, from lm
  RMSE      = sqrt(mean(residuals^2)),             # root mean squared error
  MAE       = mean(abs(residuals))                 # mean absolute error
)
RSE_sigma      RMSE       MAE 
 7.165369  6.692395  5.321380 

Ainsi, une prédiction typique se trompe d’environ 5.3 (MAE) à 6.7 (RMSE) points de fécondité, le RSE (sigma ≈ 7.17) étant un peu plus grand car il corrige pour les degrés de liberté du modèle. L’écart entre le MAE et le RMSE vous indique qu’une poignée de provinces sont prédites nettement moins bien que les autres.

Une astuce utile en une ligne : divisez le RSE par la moyenne de la variable cible pour obtenir un taux d’erreur de prédiction :

data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)

sigma(model1) / mean(swiss$Fertility)
[1] 0.1021544

C’est environ 10 % — l’erreur typique du modèle représente à peu près un dixième du score de fécondité moyen. Une manière sans échelle de dire « quelle est l’ampleur des erreurs, par rapport à ce que l’on prédit ».

Les mêmes indicateurs façon tidymodels : yardstick

Dans tout ce pilier, nous évaluons les modèles avec yardstick (le package d’indicateurs de tidymodels). Il fonctionne sur un data frame composé de colonnes truth + estimate et fournit les mêmes chiffres — pratique lorsque votre modèle est issu d’un workflow() (voir Construire des modèles avec tidymodels). Regroupez plusieurs indicateurs dans un metric_set() et évaluez-les en un seul appel :

library(yardstick)
data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)

scored <- data.frame(
  truth    = swiss$Fertility,
  estimate = predict(model1, swiss)
)

multi_metric <- metric_set(rsq, rmse, mae)
multi_metric(scored, truth = truth, estimate = estimate)
# A tibble: 3 × 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rsq     standard       0.707
2 rmse    standard       6.69 
3 mae     standard       5.32 

Le R² (rsq = 0.707), le RMSE (6.69) et le MAE (5.32) correspondent exactement aux chiffres calculés à la main — mêmes indicateurs, interface plus soignée. Dans un véritable pipeline tidymodels, vous fourniriez ici predict(fit, new_data = test_data) plutôt que des prédictions in-sample, afin d’évaluer sur des données mises de côté.

Noteyardstick::rsq vs rsq_trad

yardstick::rsq() est la forme corrélation au carré du R² (elle correspond à summary(lm)$r.squared sur les données d’entraînement). Il existe aussi rsq_trad(), la forme « un moins le ratio de SS » — identique in-sample, mais sur des données de test, rsq_trad() peut devenir négatif (un modèle pire que la moyenne), ce qui est un signal d’alerte utile. Utilisez rsq_trad() lorsque vous évaluez sur de nouvelles données.

AIC, BIC et Cp de Mallows : les critères de sélection de modèle

Le R², le R² ajusté, le RMSE et le MAE décrivent tous l’ajustement. Mais les outils de référence pour choisir entre des modèles sont les critères d’information — l’AIC, le BIC et le Cp de Mallows. Chacun estime l’erreur de prédiction du modèle et ajoute une pénalité pour la complexité, de sorte qu’un modèle ne « gagne » un prédicteur supplémentaire que s’il améliore suffisamment l’ajustement pour le justifier. Pour tous, plus c’est bas, mieux c’est.

  • AIC (Akaike Information Criterion) — pénalise les paramètres ajoutés ; l’outil de prédilection pour comparer des modèles ajustés sur les mêmes données. L’AICc est une correction pour petits échantillons (utilisez-la quand n est petit par rapport au nombre de paramètres).
  • BIC (Bayesian Information Criterion) — comme l’AIC mais avec une pénalité de complexité plus forte (il met à l’échelle la pénalité par log(n)), de sorte qu’il favorise plus agressivement les modèles plus simples. Lorsque l’AIC et le BIC divergent, le BIC retient le modèle le plus épuré.
  • Cp de Mallows — un proche cousin de l’AIC utilisé en sélection du meilleur sous-ensemble ; un bon modèle a un Cp proche du nombre de paramètres.

Calculez directement l’AIC et le BIC :

data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)
model2 <- lm(Fertility ~ . - Examination, data = swiss)

c(
  AIC_model1 = AIC(model1), AIC_model2 = AIC(model2),
  BIC_model1 = BIC(model1), BIC_model2 = BIC(model2)
)
AIC_model1 AIC_model2 BIC_model1 BIC_model2 
  326.0716   325.2408   339.0226   336.3417 

L’AIC (325.2 < 326.1) comme le BIC (336.3 < 339.0) sont plus bas pour model2 — le modèle le plus simple. Les critères d’information rejoignent le R² ajusté : retirer Examination donne un modèle qui s’ajuste tout aussi bien avec moins de complexité, si bien que model2 est préféré.

Mettre le tout ensemble : comparer les deux modèles dans un seul tableau

En pratique, vous ne calculez pas ces indicateurs un par un — vous les récupérez tous avec broom::glance(), qui renvoie un résumé soigné d’une ligne par modèle (R², R² ajusté, sigma = RSE, AIC, BIC, et la p-value du F-test global). Empilez les deux lignes et la comparaison est immédiate :

library(broom)
data("swiss")
model1 <- lm(Fertility ~ ., data = swiss)
model2 <- lm(Fertility ~ . - Examination, data = swiss)

cols <- c("adj.r.squared", "sigma", "AIC", "BIC", "p.value")
rbind(
  cbind(model = "model1", glance(model1)[cols]),
  cbind(model = "model2", glance(model2)[cols])
)
   model adj.r.squared    sigma      AIC      BIC      p.value
1 model1      0.670971 7.165369 326.0716 339.0226 5.593799e-10
2 model2      0.670714 7.168166 325.2408 336.3417 1.717431e-10

Lisez le tableau de haut en bas — c’est ainsi que vous choisissez un modèle :

  1. Le R² ajusté est identique (0.67 pour les deux) : les deux modèles expliquent la fécondité aussi bien l’un que l’autre.
  2. Le RSE (sigma) est le même (≈ 7.17) : même erreur typique.
  3. L’AIC et le BIC sont tous deux plus bas pour model2 : en comparaison de modèles, l’AIC/BIC le plus bas l’emporte → model2.
  4. La p-value du F-statistic est plus petite pour model2 (globalement plus significatif), cohérent avec la même conclusion.

Le verdict : model2 est aussi précis que model1 mais plus simple, c’est donc le meilleur modèle. Tous les critères qui tiennent compte de la complexité (R² ajusté, AIC, BIC, le F-test) pointent dans la même direction — ce qui est précisément pourquoi vous ne sélectionnez jamais sur le seul R² brut.

AstuceConclusion prête à coller

« Les deux modèles ont un R² ajusté égal (0.67) et une erreur standard résiduelle égale (7.17), mais model2 — qui retire Examination — a un AIC plus bas (325 contre 326) et un BIC plus bas (336 contre 339) : il est donc préféré, car il explique la fécondité tout aussi bien avec un prédicteur de moins. »

Pour \(n\) observations avec la variable cible \(y_i\), la prédiction \(\hat{y}_i\) et la moyenne de la variable cible \(\bar{y}\) :

\[ RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}, \qquad MAE = \frac{1}{n}\sum_{i=1}^{n}\lvert y_i - \hat{y}_i \rvert . \]

Le R² compare la somme des carrés résiduels \(SS_{res}\) de votre modèle à la somme totale des carrés \(SS_{tot}\) (l’erreur de la prédiction de la moyenne) :

\[ R^2 = 1 - \frac{SS_{res}}{SS_{tot}} = 1 - \frac{\sum_i (y_i - \hat{y}_i)^2}{\sum_i (y_i - \bar{y})^2}. \]

Le R² ajusté réduit le R² d’un facteur qui dépend du nombre de prédicteurs \(p\) et de la taille d’échantillon \(n\), de sorte qu’ajouter un prédicteur qui n’aide pas le fait baisser :

\[ R^2_{adj} = 1 - (1 - R^2)\,\frac{n - 1}{n - p - 1}. \]

À mesure que \(p\) croît, la fraction \(\frac{n-1}{n-p-1}\) croît, gonflant le terme \((1 - R^2)\) et tirant le R² ajusté vers le bas — c’est la pénalité qui le rend honnête pour la comparaison de modèles. L’AIC et le BIC suivent le même esprit : \(-2\log(\hat{L})\) — où \(\hat{L}\) est la vraisemblance maximisée du modèle — plus une pénalité de \(2p\) (AIC) ou \(p\log n\) (BIC).

🟢 Avec un agent IA

Vous ne savez pas à quel indicateur vous fier sur votre propre modèle ? Demandez à Prova « évalue mon modèle de régression et dis-moi s’il faut garder ce prédicteur supplémentaire » — elle répond avec du code R que vous pouvez exécuter sur vos données, calcule le R², le R² ajusté, le RMSE, l’AIC et le BIC, et vous aide à les lire pour choisir le meilleur modèle. The runtime is the judge. Demandez à Prova →

Problèmes courants

  • « Mon R² a augmenté quand j’ai ajouté une variable, donc le plus gros modèle est meilleur. » Le R² brut augmente toujours avec plus de prédicteurs — il ne peut pas vous dire si la variable a aidé. Comparez plutôt sur le R² ajusté, l’AIC ou le BIC, qui pénalisent la complexité.
  • Un excellent R² mais des erreurs énormes (ou l’inverse). Le R² concerne la part de variance, pas la taille des erreurs — un modèle peut expliquer 90 % d’une variable cible très dispersée tout en se trompant beaucoup en valeur absolue. Rapportez toujours le R² et un indicateur d’erreur (RMSE ou MAE) ensemble.
  • Comparer l’AIC entre des modèles ajustés sur des données ou des variables cibles différentes. L’AIC/BIC ne sont comparables qu’entre des modèles ajustés sur les mêmes observations et la même réponse. Réajuster après avoir supprimé des lignes contenant des valeurs manquantes modifie discrètement les données — réajustez tous les candidats sur le jeu de données identique.
  • Prendre les indicateurs in-sample pour la précision de prédiction. Chaque indicateur présenté ici est calculé sur les données d’entraînement, ce qui flatte le modèle. Pour une erreur de prédiction honnête, estimez-la par validation croisée ou bootstrap.

Questions fréquentes

Le R-squared est la proportion de variation de votre variable cible que le modèle explique, comprise entre 0 et 1. Récupérez-le avec summary(model)$r.squared. Un R² de 0.71 signifie que le modèle rend compte d’environ 71 % de la variabilité de la variable cible ; le reste demeure inexpliqué. Plus c’est élevé, mieux c’est, mais ce qui est « bon » dépend du domaine — 0.3–0.5 est respectable en sciences sociales, tandis que les modèles des sciences physiques attendent souvent 0.95 et plus.

Il n’y a pas de seuil universel — cela dépend entièrement de votre domaine. Dans des champs bruités (psychologie, économie, sciences sociales), un R² de 0.30–0.50 peut être réellement utile ; dans des mesures physiques étroitement contrôlées, vous pourriez attendre 0.95 ou plus. Évaluez le R² par rapport aux modèles habituels de votre problème, et lisez-le toujours à côté d’un indicateur d’erreur (RMSE/MAE) afin de savoir aussi quelle est l’ampleur des erreurs.

Le brut ne diminue jamais lorsque vous ajoutez un prédicteur — même inutile — il favorise donc toujours les plus gros modèles. Le R² ajusté ajoute une pénalité pour le nombre de prédicteurs rapporté à la taille d’échantillon, de sorte qu’il n’augmente que lorsqu’une nouvelle variable améliore l’ajustement au-delà du hasard. Utilisez le R² ajusté (et non le R² brut) chaque fois que vous comparez des modèles ayant un nombre différent de prédicteurs.

Tous deux mesurent l’erreur de prédiction dans les unités mêmes de la variable cible, donc plus c’est bas, mieux c’est. Le RMSE élève les erreurs au carré avant de moyenner : il pénalise davantage les grosses erreurs — utilisez-le quand les grandes erreurs sont particulièrement coûteuses. Le MAE moyenne les erreurs absolues, en pondérant chaque erreur de façon identique : il est donc moins sensible aux valeurs aberrantes et le plus directement interprétable. On a toujours MAE ≤ RMSE ; un grand écart entre les deux signale quelques erreurs importantes.

Tous deux estiment l’erreur de prédiction avec une pénalité de complexité, et pour les deux plus c’est bas, mieux c’est. L’AIC est le choix polyvalent ; le BIC pénalise plus fortement les prédicteurs supplémentaires (sa pénalité s’échelonne avec log(n)), si bien qu’il favorise les modèles plus simples et tend à retenir les plus épurés sur les grands échantillons. Lorsque l’AIC et le BIC divergent, le BIC choisit le plus petit modèle. Calculez-les avec AIC(model) et BIC(model), ou obtenez les deux plus le R² avec broom::glance(model).

Testez vos connaissances

À l’aide du jeu de données Boston (MASS), ajustez deux modèles prédisant medv (valeur médiane des logements) : un modèle complet avec tous les prédicteurs, et un modèle réduit retirant age et indus. Utilisez broom::glance() pour comparer leur R² ajusté, AIC et BIC, et décidez quel modèle vous garderiez.

La structure est identique à celle de la leçon : construisez lm(medv ~ ., data = Boston) et lm(medv ~ . - age - indus, data = Boston), puis appliquez glance() aux deux et examinez adj.r.squared, AIC et BIC. Rappel : un AIC/BIC plus bas et un R² ajusté similaire ou supérieur favorisent le modèle.

library(MASS)
library(broom)
data("Boston", package = "MASS")

m_full <- lm(medv ~ ., data = Boston)
m_red  <- lm(medv ~ . - age - indus, data = Boston)

cols <- c("adj.r.squared", "sigma", "AIC", "BIC")
rbind(
  cbind(model = "full",    glance(m_full)[cols]),
  cbind(model = "reduced", glance(m_red)[cols])
)

Le modèle réduit a essentiellement le même R² ajusté mais un AIC et un BIC plus basage et indus n’apportent rien une fois les autres prédicteurs présents, si bien que le modèle réduit (plus simple) est préféré. Même logique que pour swiss : lorsque les indicateurs sensibles à la complexité s’égalisent ou favorisent le plus petit modèle, gardez le plus petit modèle.

Vérification rapide. Vous comparez deux modèles et constatez que le modèle A a un R² brut plus élevé que le modèle B, mais que le modèle B a un AIC plus bas et un R² ajusté plus élevé. Quel modèle devriez-vous préférer, et pourquoi ?

Préférez le modèle B. Un R² brut plus élevé pour le modèle A signifie simplement qu’il a plus de prédicteurs — le R² brut augmente toujours avec les variables ajoutées et ne dit rien sur leur utilité. Le R² ajusté plus élevé et l’AIC plus bas du modèle B tiennent tous deux compte de la complexité et favorisent tous deux B, ce qui signifie qu’il explique la variable cible aussi bien ou mieux sans le bagage supplémentaire. Sélectionnez toujours sur des indicateurs sensibles à la complexité (R² ajusté, AIC, BIC), jamais sur le R² brut.

Conclusion

Vous disposez désormais de la boîte à outils complète pour juger la précision d’une régression en R. Le vous indique la part de variation expliquée ; le R² ajusté rend cette mesure honnête pour la comparaison de modèles en pénalisant les prédicteurs superflus ; le RMSE, le RSE et le MAE rapportent l’ampleur des erreurs dans les unités de la variable cible ; et l’AIC, le BIC et le Cp de Mallows sont les critères pénalisés par la complexité qui décident quel modèle garder — le plus bas l’emporte. La leçon récurrente de la comparaison swiss : ne sélectionnez jamais sur le seul R² brut, et lorsqu’un modèle plus simple s’égalise sur les indicateurs sensibles à la complexité, gardez-le.

N’oubliez pas que ce sont des indicateurs in-sample (d’entraînement) — ils mesurent l’ajustement, pas la précision future. Pour estimer la performance du modèle sur des données qu’il n’a pas vues, rééchantillonnez avec la validation croisée ou le rééchantillonnage bootstrap.

Leçons connexes

Vous préférez un livre ? Machine Learning Essentials est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.

Obtenir le livre (PDF) →Les leçons restent gratuites en ligne.
Cette page vous a-t-elle été utile ?

Prouvez que vous savez le faire. Maîtrisez toute la série Validation de modèles en R — suivez votre parcours, construisez des projets et obtenez un certificat.

Commencer gratuitement →

Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.

dès 15 $/mois facturé annuellement

Passer à Pro →

✓ Vous êtes Pro — continuez. The runtime is the judge.

Recevez les nouvelles leçons R & Python par e-mail

Pratique, reproductible, sans spam. Désinscription à tout moment.

Double opt-in. Nous ne partageons jamais votre e-mail.

Partager cette pageXLinkedInRedditHN
Note

Cette leçon est reproductible : chaque indicateur et chaque figure ont été produits par le code montré — copiez n’importe quel bloc et exécutez-le pour les reproduire. The runtime is the judge.

Pour aller plus loin

  • James, G., Witten, D., Hastie, T., & Tibshirani, R. An Introduction to Statistical Learning — le traitement canonique de la précision et de la sélection de modèle (R² ajusté, AIC/BIC/Cp). Gratuit en ligne.
  • Kuhn, M., & Silge, J. Tidy Modeling with R — le chapitre sur les indicateurs yardstick et l’approche par rééchantillonnage pour des estimations honnêtes de performance. Gratuit en ligne (CC BY-NC-SA).

Réutilisation

Citation

BibTeX
@online{2026,
  author = {},
  title = {R-squared \& précision d’une régression en R : R², R² ajusté,
    RMSE, AIC, BIC},
  date = {2026-06-25},
  url = {https://www.datanovia.com/learn/machine-learning/model-validation/regression-model-accuracy-metrics},
  langid = {fr}
}
Veuillez citer ce travail comme suit :
“R-squared & précision d’une régression en R : R², R² ajusté, RMSE, AIC, BIC.” 2026. June 25. https://www.datanovia.com/learn/machine-learning/model-validation/regression-model-accuracy-metrics.