Cara membuat interval prediksi di r


Model regresi linier dapat berguna untuk dua hal:

(1) Mengukur hubungan antara satu atau lebih variabel prediktor dan variabel respon.

(2) Gunakan model untuk memprediksi nilai masa depan.

Mengenai (2) , ketika kita menggunakan model regresi untuk memprediksi nilai di masa depan, kita sering kali ingin memprediksi baik nilai eksak maupun interval yang berisi rentang nilai yang mungkin. Interval ini disebut interval prediksi .

Misalnya, kita menyesuaikan model regresi linier sederhana dengan menggunakan jam belajar sebagai variabel prediktor dan nilai ujian sebagai variabel respons. Dengan menggunakan model ini, kita dapat memperkirakan bahwa seorang siswa yang belajar selama 6 jam akan mendapat nilai 91 pada ujiannya.

Namun, karena terdapat ketidakpastian mengenai prediksi ini, kita dapat membuat interval prediksi yang menunjukkan bahwa terdapat kemungkinan 95% siswa yang belajar selama 6 jam akan memperoleh nilai ujian antara 85 dan 97 . Rentang nilai ini dikenal sebagai interval prediksi 95% dan seringkali lebih berguna bagi kita daripada sekadar mengetahui nilai prediksi secara pasti.

Cara membuat interval prediksi di R

Untuk mengilustrasikan cara membuat interval prediksi di R, kita akan menggunakan kumpulan data mtcars bawaan, yang berisi informasi tentang karakteristik beberapa mobil berbeda:

 #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

Pertama, kita akan membuat model regresi linier sederhana dengan menggunakan disp sebagai variabel prediktor dan mpg sebagai variabel respon.

 #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

Selanjutnya kita akan menggunakan model regresi yang dilengkapi untuk memprediksi nilai mpg berdasarkan tiga nilai baru untuk 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 

Cara memaknai nilai-nilai tersebut adalah sebagai berikut:

  • Untuk mobil baru dengan EPA 150, kami perkirakan memiliki mpg 23.41759 .
  • Untuk mobil baru dengan EPA 200, kami perkirakan memiliki mpg 21.35683 .
  • Untuk mobil baru dengan EPA 250, kami perkirakan memiliki mpg 19.29607 .

Selanjutnya, kita akan menggunakan model regresi yang sesuai untuk membuat interval prediksi di sekitar nilai prediksi berikut:

 #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

Cara memaknai nilai-nilai tersebut adalah sebagai berikut:

  • Interval prediksi 95% mpg untuk mobil dengan EPA 150 adalah antara 16.62968 dan 30.20549 .
  • Interval prediksi 95% mpg untuk mobil dengan EPA 200 adalah antara 14.60704 dan 28.10662 .
  • Interval prediksi 95% mpg untuk mobil dengan EPA 250 adalah antara 12.55021 dan 26.04194 .

Secara default, R menggunakan interval prediksi 95%. Namun, kita dapat mengubahnya sesuai keinginan menggunakan perintah level . Misalnya, kode berikut menunjukkan cara membuat interval prediksi 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

Perhatikan bahwa interval prediksi 99% lebih lebar dari interval prediksi 95%. Hal ini masuk akal karena semakin lebar intervalnya, semakin besar kemungkinannya mengandung nilai prediksi.

Cara memvisualisasikan interval prediksi di R

Kode berikut menunjukkan cara membuat bagan dengan fungsi berikut:

  • Plot sebar titik data untuk ketersediaan dan mpg
  • Garis biru untuk garis regresi yang dipasang
  • Pita kepercayaan diri berwarna abu-abu
  • Pita prediksi berwarna merah
 #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

Kapan menggunakan interval kepercayaan versus interval prediksi

Interval prediksi menangkap ketidakpastian di sekitar suatu nilai. Interval kepercayaan menangkap ketidakpastian di sekitar nilai rata-rata yang diprediksi. Dengan demikian, interval prediksi akan selalu lebih lebar dari interval kepercayaan untuk nilai yang sama.

Anda harus menggunakan interval prediksi bila Anda tertarik pada prediksi individu tertentu, karena interval kepercayaan akan menghasilkan rentang nilai yang terlalu sempit, sehingga menghasilkan kemungkinan lebih besar bahwa interval tersebut tidak berisi nilai sebenarnya.

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *