Prédire avec R : prédictions de modèle et intervalles

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.

Date de publication

23 juin 2026

Modifié

7 juillet 2026

AstucePoints clés
  • Utilisez predict(model, newdata) pour estimer la valeur prédite à partir de nouvelles valeurs de prédicteur à l’aide d’un modèle ajusté.
  • Un intervalle de confiance (interval = "confidence") correspond à l’incertitude autour de la valeur moyenne pour ces prédicteurs — étroit.
  • Un intervalle de prédiction (interval = "prediction") correspond à l’incertitude autour d’une seule nouvelle observationplus large, car il inclut aussi la dispersion individuelle.
  • Passez un data.frame dont les noms de colonnes correspondent aux prédicteurs du modèle.
  • Tracez les deux sous forme de bandes autour de la droite ajustée pour visualiser l’incertitude.

Introduction

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.

Construire un modèle

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 :

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  

L’équation est dist = -17.58 + 3.93 × speed — chaque mph supplémentaire ajoute ~3.9 ft de distance d’arrêt.

Prédire pour de nouvelles données

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() :

data("cars", package = "datasets")
model <- lm(dist ~ speed, data = cars)

new.speeds <- data.frame(speed = c(12, 19, 24))
predict(model, newdata = new.speeds)
       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.

Intervalle de confiance — incertitude de la moyenne

interval = "confidence" donne l’intervalle pour la valeur moyenne à chaque valeur de prédicteur — « où se situe la distance d’arrêt moyenne » :

data("cars", package = "datasets")
model <- lm(dist ~ speed, data = cars)
new.speeds <- data.frame(speed = c(12, 19, 24))

predict(model, newdata = new.speeds, interval = "confidence")
       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.

Intervalle de prédiction — incertitude d’un seul cas nouveau

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 :

data("cars", package = "datasets")
model <- lm(dist ~ speed, data = cars)
new.speeds <- data.frame(speed = c(12, 19, 24))

predict(model, newdata = new.speeds, interval = "prediction")
       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.)

Note

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.

Visualiser les deux bandes

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")

A scatter plot of stopping distance versus speed with the fitted regression line, a narrow grey confidence band hugging the line, and a wider band marking the prediction interval that contains most of the points.

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.

Rapporter

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.

Essayez en direct

Prédisez la distance d’arrêt à une vitesse de votre choix, avec les deux intervalles. Le bac à sable démarre au premier Run.

🟢 Avec un agent IA

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 →

Problèmes courants

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.

Questions fréquentes

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.

Testez vos connaissances

  1. Exécutez-le. Dans la cellule interactive, prédisez la distance d’arrêt à 30 mph avec les deux intervalles. De combien l’intervalle de prédiction est-il plus large que l’intervalle de confiance ?
  2. Conceptuel. Vous voulez dire à un seul conducteur sur quelle distance sa voiture précise mettra à s’arrêter à 30 mph. Quel intervalle citez-vous, et pourquoi ?

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.

Conclusion

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.

Leçons connexes

Cette page vous a-t-elle été utile ?

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.

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

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.

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
“Prédire avec R : prédictions de modèle et intervalles.” 2026. June 23. https://www.datanovia.com/learn/biostatistics/regression/predict-in-r.