data("cars", package = "datasets")
model <- lm(dist ~ speed, data = cars)
model
Call:
lm(formula = dist ~ speed, data = cars)
Coefficients:
(Intercept) speed
-17.579 3.932
Servez-vous d’un modèle ajusté pour prédire de nouvelles valeurs avec predict() — et rapportez la bonne incertitude : un intervalle de confiance pour la moyenne, un intervalle de prédiction pour un seul cas nouveau
Prédisez des valeurs à partir d’une régression ajustée avec predict() en R. Faites des prédictions ponctuelles pour de nouvelles données, puis affichez correctement l’incertitude — un intervalle de confiance pour la réponse moyenne face à un intervalle de prédiction (plus large) pour une nouvelle observation individuelle, et visualisez les deux sous forme de bandes.
23 juin 2026
7 juillet 2026
predict(model, newdata) pour estimer la valeur prédite à partir de nouvelles valeurs de prédicteur à l’aide d’un modèle ajusté.interval = "confidence") correspond à l’incertitude autour de la valeur moyenne pour ces prédicteurs — étroit.interval = "prediction") correspond à l’incertitude autour d’une seule nouvelle observation — plus large, car il inclut aussi la dispersion individuelle.data.frame dont les noms de colonnes correspondent aux prédicteurs du modèle.L’objectif d’une régression ajustée est de prédire — estimer la valeur pour des valeurs de prédicteur que vous n’avez pas vues. La fonction predict() de R fait cela, et, tout aussi important, vous indique à quel point la prédiction est incertaine, en deux sens différents qu’il ne faut pas confondre.
Le scénario : à partir d’un modèle de distance d’arrêt d’une voiture en fonction de la vitesse, prédire la distance d’arrêt à de nouvelles vitesses — et rapporter le bon intervalle selon que l’on s’intéresse à la voiture moyenne ou à une voiture précise.
Nous utilisons le jeu de données intégré cars — vitesse (mph) et distance d’arrêt (ft) pour 50 voitures — et ajustons une régression linéaire simple :
Call:
lm(formula = dist ~ speed, data = cars)
Coefficients:
(Intercept) speed
-17.579 3.932
L’équation est dist = -17.58 + 3.93 × speed — chaque mph supplémentaire ajoute ~3.9 ft de distance d’arrêt.
Construisez un data.frame de nouvelles valeurs de prédicteur (le nom de colonne doit correspondre au prédicteur du modèle, speed), puis appelez predict() :
1 2 3
29.60981 57.13667 76.79872
Une voiture à 19 mph est prédite avoir besoin de ~57 ft pour s’arrêter. Ce sont des prédictions ponctuelles — la meilleure estimation unique, sans incertitude associée pour l’instant.
interval = "confidence" donne l’intervalle pour la valeur moyenne à chaque valeur de prédicteur — « où se situe la distance d’arrêt moyenne » :
fit lwr upr
1 29.60981 24.39514 34.82448
2 57.13667 51.82913 62.44421
3 76.79872 68.38765 85.20978
À 19 mph, la distance d’arrêt moyenne est de ~57 ft, IC à 95 % [51.8, 62.4] — une bande étroite, car les moyennes sont estimées avec précision.
interval = "prediction" donne l’intervalle pour une seule nouvelle observation individuelle — « où se situe la distance d’arrêt d’une seule voiture ». Il est plus large, car il ajoute la dispersion des voitures individuelles autour de la moyenne :
fit lwr upr
1 29.60981 -1.749529 60.96915
2 57.13667 25.761756 88.51159
3 76.79872 44.752478 108.84495
À 19 mph, la distance d’arrêt d’une seule voiture a un intervalle de prédiction à 95 % de [25.8, 88.5] — bien plus large que l’intervalle de confiance, car les voitures individuelles varient beaucoup autour de la moyenne. (Les intervalles de prédiction supposent que les résidus sont approximativement normaux à variance constante — vérifiez les diagnostics avant de leur faire confiance.)
Confiance vs prédiction — la seule chose à bien comprendre. Intervalle de confiance = incertitude de la réponse moyenne (étroit). Intervalle de prédiction = incertitude d’une seule observation future (large). Même estimation ponctuelle, question différente, largeur très différente.
Tracez la droite ajustée avec les deux bandes — la bande de confiance étroite épouse la droite, la bande de prédiction large capture la plupart des points individuels :
library(ggpubr)
data("cars", package = "datasets")
model <- lm(dist ~ speed, data = cars)
# prediction interval for every observed speed
pred <- predict(model, interval = "prediction")
plot.df <- cbind(cars, pred) # adds fit / lwr / upr columns
ggscatter(plot.df, x = "speed", y = "dist", color = "grey40",
xlab = "Speed (mph)", ylab = "Stopping distance (ft)") +
geom_ribbon(aes(ymin = lwr, ymax = upr), alpha = 0.15, fill = "#3a86d4") +
geom_smooth(aes(y = dist), method = "lm", color = "#3a86d4", fill = "grey60")
La bande intérieure (grise) est l’intervalle de confiance pour la moyenne ; la bande extérieure (bleue) est l’intervalle de prédiction pour les voitures individuelles.
La distance d’arrêt a été prédite à partir de la vitesse (
dist = -17.6 + 3.93 × speed). À 19 mph, la distance d’arrêt moyenne prédite était de 57 ft (IC à 95 % 51.8–62.4), tandis que l’intervalle de prédiction à 95 % pour une seule voiture était bien plus large, 25.8–88.5 ft.
Les deux intervalles sont centrés sur la même valeur ajustée \(\hat{y}_0 = \hat\beta_0 + \hat\beta_1 x_0\). L’intervalle de confiance utilise l’erreur standard de la réponse moyenne, \(\text{SE}_{\text{conf}} = s\sqrt{\tfrac{1}{n} + \tfrac{(x_0-\bar x)^2}{\sum (x_i-\bar x)^2}}\). L’intervalle de prédiction ajoute la variance résiduelle individuelle, \(\text{SE}_{\text{pred}} = s\sqrt{1 + \tfrac{1}{n} + \tfrac{(x_0-\bar x)^2}{\sum (x_i-\bar x)^2}}\) — le 1 supplémentaire sous la racine est la dispersion d’un seul point nouveau, ce qui explique pourquoi les intervalles de prédiction sont toujours plus larges.
Prédisez la distance d’arrêt à une vitesse de votre choix, avec les deux intervalles. Le bac à sable démarre au premier Run.
Demandez à Prova « prédis de nouvelles valeurs à partir de mon modèle et montre les intervalles de confiance et de prédiction » — elle répond avec du code que vous pouvez exécuter sur votre propre modèle ajusté et explique quel intervalle rapporter. The runtime is the judge. Ask Prova →
Les noms de colonnes de votre newdata ne correspondent pas au modèle. predict() a besoin d’un data.frame dont les colonnes sont nommées exactement comme les prédicteurs du modèle (speed, et non Speed ou x). Une discordance prédit silencieusement sur les données d’entraînement ou produit une erreur.
Vous avez rapporté un intervalle de confiance alors que vous vouliez un intervalle de prédiction. Si vous prédisez une seule nouvelle valeur (un patient, une voiture), utilisez interval = "prediction" — l’intervalle de confiance sous-estime l’incertitude pour un individu.
Vous avez prédit bien en dehors de la plage d’entraînement. predict() extrapolera volontiers, mais le modèle n’a aucune preuve là-bas — les prédictions (et les intervalles) au-delà de la plage de prédicteurs observée ne sont pas fiables.
Ajustez le modèle avec lm(), construisez un data.frame de nouvelles valeurs de prédicteur avec les mêmes noms de colonnes que les prédicteurs du modèle, puis appelez predict(model, newdata = new). Ajoutez interval = "confidence" ou "prediction" pour obtenir l’incertitude autour de la prédiction.
Un intervalle de confiance estime l’incertitude de la valeur moyenne à des valeurs de prédicteur données (étroit). Un intervalle de prédiction estime où se situera une seule nouvelle observation (plus large) — il ajoute la dispersion individuelle autour de la moyenne. Même centre, largeur différente ; choisissez selon que vous vous intéressez à la moyenne ou à un nouveau cas.
Parce qu’il prend en compte deux sources d’incertitude : l’incertitude liée à l’estimation de la moyenne (que l’intervalle de confiance possède aussi) plus la variation naturelle des observations individuelles autour de cette moyenne. Cette variance supplémentaire rend toujours l’intervalle de prédiction plus large.
Remplissez le blanc avec "confidence", puis "prediction", et comparez les largeurs. Pour la question 2, demandez-vous si le conducteur s’intéresse à la voiture moyenne ou à sa voiture.
L’intervalle de prédiction est bien plus large (il inclut la dispersion entre voitures individuelles). Pour la question 2 : citez l’intervalle de prédiction — le conducteur pose une question sur une voiture précise, une seule nouvelle observation, donc l’intervalle de confiance (qui ne décrit que la voiture moyenne) sous-estimerait gravement l’incertitude réelle.
Vous savez maintenant prédire avec R à l’aide de predict() : faire des prédictions ponctuelles pour de nouvelles données, et rapporter la bonne incertitude — un intervalle de confiance pour la réponse moyenne, un intervalle de prédiction pour une seule nouvelle observation — et visualiser les deux sous forme de bandes. Distinguer clairement les deux intervalles fait la différence entre une prédiction honnête et une prédiction trop confiante.
Prouvez que vous savez le faire. Maîtrisez toute la série Régression en R — suivez votre parcours, construisez des projets et obtenez un certificat.
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
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
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.
Chaque résultat de cette page a été produit par le code montré, exécuté au moment du build contre un environnement R figé — modifiez n’importe quel bloc et faites Run pour le reproduire vous-même.
@online{2026,
author = {},
title = {Prédire avec R : prédictions de modèle et intervalles},
date = {2026-06-23},
url = {https://www.datanovia.com/learn/biostatistics/regression/predict-in-r},
langid = {fr}
}