Een voorspellingsinterval maken in r


Een lineair regressiemodel kan voor twee dingen nuttig zijn:

(1) Kwantificeer de relatie tussen een of meer voorspellende variabelen en een responsvariabele.

(2) Gebruik het model om toekomstige waarden te voorspellen.

Wat betreft (2) willen we, wanneer we een regressiemodel gebruiken om toekomstige waarden te voorspellen, vaak zowel een exacte waarde voorspellen als een interval dat een reeks waarschijnlijke waarden bevat. Dit interval wordt voorspellingsinterval genoemd.

Stel bijvoorbeeld dat we een eenvoudig lineair regressiemodel passen met bestudeerde uren als voorspellende variabele en examenscores als responsvariabele. Met dit model zouden we kunnen voorspellen dat een student die 6 uur studeert een 91 scoort op het examen.

Omdat er echter onzekerheid bestaat rond deze voorspelling, kunnen we een voorspellingsinterval creëren dat aangeeft dat er een kans van 95% is dat een student die 6 uur studeert een examenscore tussen 85 en 97 behaalt. Dit bereik van waarden staat bekend als het 95%-voorspellingsinterval en is voor ons vaak nuttiger dan alleen het kennen van de exacte voorspelde waarde.

Een voorspellingsinterval maken in R

Om te illustreren hoe we een voorspellingsinterval in R kunnen creëren, zullen we de ingebouwde mtcars- dataset gebruiken, die informatie bevat over de kenmerken van verschillende auto’s:

 #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

Eerst passen we een eenvoudig lineair regressiemodel aan, waarbij disp als voorspellende variabele en mpg als responsvariabele worden gebruikt.

 #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

Vervolgens zullen we het gepaste regressiemodel gebruiken om de waarde van mpg te voorspellen op basis van drie nieuwe waarden voor disp .

 #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 

De manier om deze waarden te interpreteren is als volgt:

  • Voor een nieuwe auto met een EPA van 150 verwachten we dat deze een mpg van 23,41759 heeft.
  • Voor een nieuwe auto met een EPA van 200 verwachten we dat deze een mpg van 21,35683 heeft.
  • Voor een nieuwe auto met een EPA van 250 verwachten we dat deze een mpg van 19,29607 heeft.

Vervolgens zullen we het gepaste regressiemodel gebruiken om voorspellingsintervallen rond deze voorspelde waarden te creëren:

 #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

De manier om deze waarden te interpreteren is als volgt:

  • Het voorspellingsinterval van 95% mpg voor een auto met een EPA van 150 ligt tussen 16,62968 en 30,20549 .
  • Het voorspellingsinterval van 95% mpg voor een auto met een EPA van 200 ligt tussen 14,60704 en 28,10662 .
  • Het voorspellingsinterval van 95% mpg voor een auto met een EPA van 250 ligt tussen 12,55021 en 26,04194 .

Standaard gebruikt R een voorspellingsinterval van 95%. We kunnen dit echter naar wens wijzigen met behulp van het level- commando. De volgende code laat bijvoorbeeld zien hoe u 99%-voorspellingsintervallen kunt maken:

 #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

Houd er rekening mee dat 99%-voorspellingsintervallen breder zijn dan 95%-voorspellingsintervallen. Dit is logisch, want hoe breder het interval, hoe waarschijnlijker het is dat het de voorspelde waarde bevat.

Hoe een voorspellingsinterval in R te visualiseren

De volgende code laat zien hoe u een diagram maakt met de volgende functionaliteit:

  • Een spreidingsdiagram van gegevenspunten voor beschikbaarheid en mpg
  • Een blauwe lijn voor de aangepaste regressielijn
  • Grijze vertrouwensbanden
  • Rode voorspellingsbanden
 #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

Wanneer moet u een betrouwbaarheidsinterval gebruiken versus een voorspellingsinterval?

Een voorspellingsinterval legt de onzekerheid rond een enkele waarde vast. Een betrouwbaarheidsinterval geeft de onzekerheid rond de voorspelde gemiddelde waarden weer. Een voorspellingsinterval zal dus altijd breder zijn dan een betrouwbaarheidsinterval voor dezelfde waarde.

U moet een voorspellingsinterval gebruiken als u geïnteresseerd bent in specifieke individuele voorspellingen, omdat een betrouwbaarheidsinterval een te smal bereik aan waarden zal opleveren, wat resulteert in een grotere kans dat het interval niet de werkelijke waarde zal bevatten.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert