Jak utworzyć przedział przewidywania w r


Model regresji liniowej może być przydatny w dwóch przypadkach:

(1) Określ ilościowo związek pomiędzy jedną lub większą liczbą zmiennych predykcyjnych a zmienną odpowiedzi.

(2) Użyj modelu do przewidywania przyszłych wartości.

Jeśli chodzi o (2) , gdy używamy modelu regresji do przewidywania przyszłych wartości, często chcemy przewidzieć zarówno dokładną wartość , jak i przedział zawierający zakres prawdopodobnych wartości. Przedział ten nazywany jest przedziałem przewidywania .

Załóżmy na przykład, że dopasowujemy prosty model regresji liniowej, wykorzystując przestudiowane godziny jako zmienną predykcyjną i wyniki egzaminów jako zmienną odpowiedzi. Korzystając z tego modelu, możemy przewidzieć, że student, który uczy się przez 6 godzin, uzyska na egzaminie 91 punktów .

Ponieważ jednak nie ma pewności co do tej prognozy, moglibyśmy stworzyć przedział przewidywań wskazujący, że istnieje 95% szans, że student uczący się przez 6 godzin uzyska wynik egzaminu pomiędzy 85 a 97 . Ten zakres wartości znany jest jako 95% przedział przewidywania i często jest dla nas bardziej przydatny niż sama znajomość dokładnej przewidywanej wartości.

Jak utworzyć przedział przewidywania w R

Aby zilustrować sposób tworzenia przedziału predykcji w R, skorzystamy z wbudowanego zbioru danych mtcars , który zawiera informacje o charakterystyce kilku różnych samochodów:

 #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

Najpierw dopasujemy prosty model regresji liniowej, wykorzystując disp jako zmienną predykcyjną i mpg jako zmienną odpowiedzi.

 #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

Następnie użyjemy dopasowanego modelu regresji do przewidzenia wartości mpg na podstawie trzech nowych wartości 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 

Sposób interpretacji tych wartości jest następujący:

  • W przypadku nowego samochodu z EPA wynoszącym 150 oczekujemy, że będzie on miał mpg na poziomie 23,41759 .
  • W przypadku nowego samochodu z EPA wynoszącym 200 oczekujemy, że będzie on miał mpg na poziomie 21,35683 .
  • W przypadku nowego samochodu z EPA wynoszącym 250 oczekujemy, że będzie on miał 19,29607 mpg .

Następnie użyjemy dopasowanego modelu regresji, aby utworzyć przedziały predykcji wokół tych przewidywanych wartości:

 #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

Sposób interpretacji tych wartości jest następujący:

  • Przedział przewidywań wynoszący 95% mpg dla samochodu z EPA wynoszącym 150 wynosi od 16,62968 do 30,20549 .
  • Przedział przewidywania 95% mpg dla samochodu z EPA 200 wynosi od 14,60704 do 28,10662 .
  • Przedział przewidywań wynoszący 95% mpg dla samochodu z EPA wynoszącym 250 wynosi od 12,55021 do 26,04194 .

Domyślnie R używa 95% przedziału przewidywania. Możemy to jednak zmienić według własnego uznania za pomocą polecenia poziom . Na przykład poniższy kod demonstruje, jak utworzyć 99% przedziały przewidywania:

 #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

Należy pamiętać, że 99% przedziały przewidywania są szersze niż 95% przedziały przewidywania. Ma to sens, ponieważ im szerszy przedział, tym większe prawdopodobieństwo, że będzie zawierał przewidywaną wartość.

Jak zwizualizować przedział predykcji w R

Poniższy kod demonstruje, jak utworzyć wykres z następującą funkcjonalnością:

  • Wykres punktowy punktów danych dotyczących dostępności i mpg
  • Niebieska linia dopasowanej linii regresji
  • Szare opaski pewności siebie
  • Czerwone pasma przewidywań
 #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

Kiedy stosować przedział ufności a kiedy przedział przewidywania

Przedział przewidywania rejestruje niepewność wokół pojedynczej wartości. Przedział ufności rejestruje niepewność wokół przewidywanych wartości średnich. Zatem przedział przewidywania będzie zawsze szerszy niż przedział ufności dla tej samej wartości.

Powinieneś używać przedziału predykcji, jeśli interesują Cię konkretne indywidualne prognozy, ponieważ przedział ufności da zbyt wąski zakres wartości, co spowoduje większe prawdopodobieństwo, że przedział nie będzie zawierał wartości prawdziwej.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *