So erstellen sie ein vorhersageintervall in r
Ein lineares Regressionsmodell kann aus zwei Gründen nützlich sein:
(1) Quantifizieren Sie die Beziehung zwischen einer oder mehreren Prädiktorvariablen und einer Antwortvariablen.
(2) Verwenden Sie das Modell, um zukünftige Werte vorherzusagen.
Was (2) betrifft: Wenn wir ein Regressionsmodell zur Vorhersage zukünftiger Werte verwenden, möchten wir häufig sowohl einen genauen Wert als auch ein Intervall vorhersagen, das einen Bereich wahrscheinlicher Werte enthält. Dieses Intervall wird als Vorhersageintervall bezeichnet.
Angenommen, wir passen ein einfaches lineares Regressionsmodell an und verwenden dabei die untersuchten Stunden als Prädiktorvariable und die Prüfungsergebnisse als Antwortvariable. Mithilfe dieses Modells könnten wir vorhersagen, dass ein Student, der 6 Stunden lang lernt, bei der Prüfung eine Punktzahl von 91 erreichen wird.
Da diese Vorhersage jedoch mit Unsicherheiten behaftet ist, könnten wir ein Vorhersageintervall erstellen, das angibt, dass eine 95-prozentige Chance besteht, dass ein Student, der 6 Stunden lang lernt, eine Prüfungspunktzahl zwischen 85 und 97 erreicht. Dieser Wertebereich wird als 95 %-Vorhersageintervall bezeichnet und ist für uns oft nützlicher als nur die Kenntnis des genauen vorhergesagten Werts.
So erstellen Sie ein Vorhersageintervall in R
Um zu veranschaulichen, wie ein Vorhersageintervall in R erstellt wird, verwenden wir den integrierten mtcars- Datensatz, der Informationen über die Eigenschaften mehrerer verschiedener Autos enthält:
#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
Zunächst passen wir ein einfaches lineares Regressionsmodell an, wobei wir disp als Prädiktorvariable und mpg als Antwortvariable verwenden.
#fit simple linear regression model model <- lm(mpg ~ disp, data = mtcars) #view summary of fitted model summary(model) #Call: #lm(formula = mpg ~ availability, 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 *** #--- #Significant. 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
Als nächstes verwenden wir das angepasste Regressionsmodell, um den Wert von mpg basierend auf drei neuen Werten für disp vorherzusagen.
#create data frame with three new values for avail 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 avail predict(model, newdata = new_disp) #1 2 3 #23.41759 21.35683 19.29607
Die Interpretation dieser Werte ist wie folgt:
- Für ein neues Auto mit einem EPA von 150 erwarten wir einen Kraftstoffverbrauch von 23,41759 mpg .
- Für ein neues Auto mit einem EPA von 200 erwarten wir einen Kraftstoffverbrauch von 21,35683 mpg .
- Für ein neues Auto mit einem EPA von 250 erwarten wir einen Kraftstoffverbrauch von 19,29607 mpg .
Als Nächstes verwenden wir das angepasste Regressionsmodell, um Vorhersageintervalle um diese vorhergesagten Werte herum zu erstellen:
#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
Die Interpretation dieser Werte ist wie folgt:
- Das 95 % -MPG- Vorhersageintervall für ein Auto mit einem EPA von 150 liegt zwischen 16,62968 und 30,20549 .
- Das 95 % -MPG- Vorhersageintervall für ein Auto mit einem EPA von 200 liegt zwischen 14,60704 und 28,10662 .
- Das 95 % -MPG- Vorhersageintervall für ein Auto mit einem EPA von 250 liegt zwischen 12,55021 und 26,04194 .
Standardmäßig verwendet R ein Vorhersageintervall von 95 %. Wir können dies jedoch mit dem Level -Befehl nach Belieben ändern. Der folgende Code zeigt beispielsweise, wie 99 %-Vorhersageintervalle erstellt werden:
#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
Beachten Sie, dass 99 %-Vorhersageintervalle breiter sind als 95 %-Vorhersageintervalle. Dies ist sinnvoll, denn je breiter das Intervall ist, desto wahrscheinlicher ist es, dass es den vorhergesagten Wert enthält.
So visualisieren Sie ein Vorhersageintervall in R
Der folgende Code zeigt, wie Sie ein Diagramm mit der folgenden Funktionalität erstellen:
- Ein Streudiagramm von Datenpunkten für Verfügbarkeit und MPG
- Eine blaue Linie für die angepasste Regressionslinie
- Graue Vertrauensbänder
- Rote Vorhersagebänder
#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) #createplot 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
Wann sollte ein Konfidenzintervall im Vergleich zu einem Vorhersageintervall verwendet werden?
Ein Vorhersageintervall erfasst die Unsicherheit um einen einzelnen Wert. Ein Konfidenzintervall erfasst die Unsicherheit um die vorhergesagten Mittelwerte. Daher ist ein Vorhersageintervall immer breiter als ein Konfidenzintervall für denselben Wert.
Sie sollten ein Vorhersageintervall verwenden, wenn Sie an bestimmten individuellen Vorhersagen interessiert sind, da ein Konfidenzintervall einen zu engen Wertebereich ergibt, was zu einer größeren Wahrscheinlichkeit führt, dass das Intervall nicht den wahren Wert enthält.