R'de bir tahmin aralığı nasıl oluşturulur
Doğrusal bir regresyon modeli iki şey için yararlı olabilir:
(1) Bir veya daha fazla yordayıcı değişken ile bir yanıt değişkeni arasındaki ilişkiyi ölçün.
(2) Gelecekteki değerleri tahmin etmek için modeli kullanın.
(2) ile ilgili olarak, gelecekteki değerleri tahmin etmek için bir regresyon modeli kullandığımızda, genellikle hem kesin bir değeri hem de bir dizi olası değer içeren bir aralığı tahmin etmek isteriz. Bu aralığa tahmin aralığı denir.
Örneğin, yordayıcı değişken olarak çalışılan saatleri ve yanıt değişkeni olarak sınav puanlarını kullanarak basit bir doğrusal regresyon modeli uyguladığımızı varsayalım. Bu modeli kullanarak 6 saat ders çalışan bir öğrencinin sınavdan 91 puan alacağını tahmin edebiliriz.
Ancak bu tahmin etrafında belirsizlik olduğundan, 6 saat çalışan bir öğrencinin 85 ile 97 arasında bir sınav puanı elde etme ihtimalinin %95 olduğunu belirten bir tahmin aralığı oluşturabiliriz. Bu değer aralığı %95 tahmin aralığı olarak bilinir ve bizim için genellikle tam tahmin edilen değeri bilmekten daha faydalıdır.
R’de bir tahmin aralığı nasıl oluşturulur
R’de bir tahmin aralığının nasıl oluşturulacağını göstermek için, birkaç farklı arabanın özellikleri hakkında bilgi içeren yerleşik mtcars veri kümesini kullanacağız:
#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
Öncelikle disp’i tahmin değişkeni ve mpg’yi yanıt değişkeni olarak kullanarak basit bir doğrusal regresyon modeli uygulayacağız.
#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
Daha sonra disp için üç yeni değere dayalı olarak mpg değerini tahmin etmek için uygun regresyon modelini kullanacağız.
#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
Bu değerleri yorumlamanın yolu şu şekildedir:
- EPA’sı 150 olan yeni bir arabanın mpg’sinin 23,41759 olmasını bekliyoruz.
- EPA’sı 200 olan yeni bir arabanın mpg’sinin 21,35683 olmasını bekliyoruz.
- EPA’sı 250 olan yeni bir arabanın mpg’sinin 19,29607 olmasını bekliyoruz.
Daha sonra, bu tahmin edilen değerler etrafında tahmin aralıkları oluşturmak için uygun regresyon modelini kullanacağız:
#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
Bu değerleri yorumlamanın yolu şu şekildedir:
- EPA’sı 150 olan bir araba için %95 mpg tahmin aralığı 16,62968 ile 30,20549 arasındadır.
- EPA’sı 200 olan bir araba için %95 mpg tahmin aralığı 14,60704 ile 28,10662 arasındadır.
- EPA’sı 250 olan bir araba için %95 mpg tahmin aralığı 12,55021 ile 26,04194 arasındadır.
Varsayılan olarak R %95’lik bir tahmin aralığı kullanır. Ancak bunu seviye komutunu kullanarak istediğimiz gibi değiştirebiliriz. Örneğin, aşağıdaki kod %99 tahmin aralıklarının nasıl oluşturulacağını gösterir:
#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
%99 tahmin aralıklarının %95 tahmin aralıklarından daha geniş olduğunu unutmayın. Bu mantıklıdır çünkü aralık ne kadar geniş olursa tahmin edilen değeri içerme olasılığı da o kadar artar.
R’de bir tahmin aralığı nasıl görselleştirilir
Aşağıdaki kod, aşağıdaki işlevlere sahip bir grafiğin nasıl oluşturulacağını gösterir:
- Kullanılabilirlik ve mpg için veri noktalarının dağılım grafiği
- Takılan regresyon çizgisi için mavi bir çizgi
- Gri güven bantları
- Kırmızı tahmin bantları
#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
Tahmin aralığına karşı güven aralığı ne zaman kullanılmalı?
Tahmin aralığı, tek bir değer etrafındaki belirsizliği yakalar. Bir güven aralığı, tahmin edilen ortalama değerler etrafındaki belirsizliği yakalar. Dolayısıyla aynı değer için tahmin aralığı her zaman güven aralığından daha geniş olacaktır.
Belirli bireysel tahminlerle ilgilendiğinizde bir tahmin aralığı kullanmalısınız, çünkü bir güven aralığı çok dar bir değer aralığı üretecek ve bu da aralığın gerçek değeri içermeme olasılığının artmasına neden olacaktır.