Comment créer un intervalle de prédiction dans R



Un modèle de régression linéaire peut être utile pour deux choses :

(1) Quantifier la relation entre une ou plusieurs variables prédictives et une variable de réponse.

(2) Utiliser le modèle pour prédire les valeurs futures.

En ce qui concerne (2) , lorsque nous utilisons un modèle de régression pour prédire des valeurs futures, nous souhaitons souvent prédire à la fois une valeur exacte ainsi qu’un intervalle contenant une plage de valeurs probables. Cet intervalle est appelé intervalle de prédiction .

Par exemple, supposons que nous ajustions un modèle de régression linéaire simple en utilisant les heures étudiées comme variable prédictive et les résultats à l’examen comme variable de réponse. En utilisant ce modèle, nous pourrions prédire qu’un étudiant qui étudie pendant 6 heures obtiendra une note de 91 à l’examen.

Cependant, comme il existe une incertitude autour de cette prédiction, nous pourrions créer un intervalle de prédiction indiquant qu’il y a 95 % de chances qu’un étudiant qui étudie pendant 6 heures obtienne une note à l’examen comprise entre 85 et 97 . Cette plage de valeurs est connue sous le nom d’intervalle de prédiction de 95 % et elle nous est souvent plus utile que la simple connaissance de la valeur prédite exacte.

Comment créer un intervalle de prédiction dans R

Pour illustrer comment créer un intervalle de prédiction dans R, nous utiliserons l’ensemble de données mtcars intégré, qui contient des informations sur les caractéristiques de plusieurs voitures différentes :

#view first six rows of mtcars
head(mtcars)

#                   mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
#Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1

Tout d’abord, nous ajusterons un modèle de régression linéaire simple en utilisant disp comme variable prédictive et mpg comme variable de réponse.

#fit simple linear regression model
model <- lm(mpg ~ disp, data = mtcars)

#view summary of fitted model
summary(model)

#Call:
#lm(formula = mpg ~ disp, data = mtcars)
#
#Residuals:
#    Min      1Q  Median      3Q     Max 
#-4.8922 -2.2022 -0.9631  1.6272  7.2305 
#
#Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
#(Intercept) 29.599855   1.229720  24.070  < 2e-16 ***
#disp        -0.041215   0.004712  -8.747 9.38e-10 ***
#---
#Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#
#Residual standard error: 3.251 on 30 degrees of freedom
#Multiple R-squared:  0.7183,	Adjusted R-squared:  0.709 
#F-statistic: 76.51 on 1 and 30 DF,  p-value: 9.38e-10

Ensuite, nous utiliserons le modèle de régression ajusté pour prédire la valeur de mpg en fonction de trois nouvelles valeurs pour disp .

#create data frame with three new values for disp
new_disp <- data.frame(disp= c(150, 200, 250))

#use the fitted model to predict the value for mpg based on the three new values
#for disp
predict(model, newdata = new_disp)

#       1        2        3 
#23.41759 21.35683 19.29607 

La manière d’interpréter ces valeurs est la suivante :

  • Pour une voiture neuve avec un disp de 150, nous prévoyons qu’elle aura un mpg de 23,41759 .
  • Pour une voiture neuve avec un disp de 200, nous prévoyons qu’elle aura un mpg de 21,35683 .
  • Pour une voiture neuve avec un disp de 250, nous prévoyons qu’elle aura un mpg de 19,29607 .

Ensuite, nous utiliserons le modèle de régression ajusté pour créer des intervalles de prédiction autour de ces valeurs prédites :

#create prediction intervals around the predicted values
predict(model, newdata = new_disp, interval = "predict")

#       fit      lwr      upr
#1 23.41759 16.62968 30.20549
#2 21.35683 14.60704 28.10662
#3 19.29607 12.55021 26.04194

La manière d’interpréter ces valeurs est la suivante :

  • L’intervalle de prédiction de 95 % du mpg pour une voiture avec un disp de 150 est compris entre 16,62968 et 30,20549 .
  • L’intervalle de prédiction de 95 % du mpg pour une voiture avec un disp de 200 est compris entre 14,60704 et 28,10662 .
  • L’intervalle de prédiction de 95 % du mpg pour une voiture avec un disp de 250 est compris entre 12,55021 et 26,04194 .

Par défaut, R utilise un intervalle de prédiction de 95 %. Cependant, nous pouvons changer cela comme nous le souhaitons en utilisant la commande level . Par exemple, le code suivant illustre comment créer des intervalles de prédiction de 99 % :

#create 99% prediction intervals around the predicted values
predict(model, newdata = new_disp, interval = "predict", level = 0.99)

#       fit      lwr      upr
#1 23.41759 14.27742 32.55775
#2 21.35683 12.26799 30.44567
#3 19.29607 10.21252 28.37963

Notez que les intervalles de prédiction de 99 % sont plus larges que les intervalles de prédiction de 95 %. Cela est logique car plus l’intervalle est large, plus il est probable qu’il contienne la valeur prédite.

Comment visualiser un intervalle de prédiction dans R

Le code suivant illustre comment créer un graphique avec les fonctionnalités suivantes :

  • Un nuage de points des points de données pour disp et mpg
  • Une ligne bleue pour la droite de régression ajustée
  • Bandes de confiance grises
  • Bandes de prédiction rouges
#define dataset
data <- mtcars[ , c("mpg", "disp")]

#create simple linear regression model
model <- lm(mpg ~ disp, data = mtcars)

#use model to create prediction intervals
predictions <- predict(model, interval = "predict")

#create dataset that contains original data along with prediction intervals
all_data <- cbind(data, predictions)

#load ggplot2 library
library(ggplot2)

#create plot
ggplot(all_data, aes(x = disp, y = mpg)) + #define x and y axis variables
  geom_point() + #add scatterplot points
  stat_smooth(method = lm) + #confidence bands
  geom_line(aes(y = lwr), col = "coral2", linetype = "dashed") + #lwr pred interval
  geom_line(aes(y = upr), col = "coral2", linetype = "dashed") #upr pred interval

Quand utiliser un intervalle de confiance par rapport à un intervalle de prédiction

Un intervalle de prédiction capture l’incertitude autour d’une valeur unique. Un intervalle de confiance capture l’incertitude autour des valeurs moyennes prédites. Ainsi, un intervalle de prédiction sera toujours plus large qu’un intervalle de confiance pour une même valeur.

Vous devez utiliser un intervalle de prédiction lorsque vous êtes intéressé par des prédictions individuelles spécifiques, car un intervalle de confiance produira une plage de valeurs trop étroite, ce qui entraînera une plus grande probabilité que l’intervalle ne contienne pas la vraie valeur.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *