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.