R'de çoklu doğrusal regresyon nasıl gerçekleştirilir
Bu kılavuz, R’de çoklu doğrusal regresyonun nasıl gerçekleştirileceğine ilişkin bir örneği gösterir; örneğin:
- Modeli yerleştirmeden önce verileri inceleyin
- Model ayarı
- Model varsayımlarının kontrol edilmesi
- Model çıktısının yorumlanması
- Modelin uyum iyiliğinin değerlendirilmesi
- Tahminlerde bulunmak için modeli kullanın
Hadi gidelim!
Tesis
Bu örnek için, 32 farklı arabanın çeşitli nitelikleri hakkında bilgi içeren yerleşik R veri kümesi mtcars’ı kullanacağız:
#view first six lines 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
Bu örnekte, yanıt değişkeni olarak mpg’yi ve tahmin değişkenleri olarak disp , hp ve drat’ı kullanan çoklu doğrusal regresyon modeli oluşturacağız.
#create new data frame that contains only the variables we would like to use to data <- mtcars[, c("mpg", "disp", "hp", "drat")] #view first six rows of new data frame head(data) # mpg disp hp drat #Mazda RX4 21.0 160 110 3.90 #Mazda RX4 Wag 21.0 160 110 3.90 #Datsun 710 22.8 108 93 3.85 #Hornet 4 Drive 21.4 258 110 3.08 #Hornet Sportabout 18.7 360 175 3.15 #Valiant 18.1 225 105 2.76
Veri İncelemesi
Modeli yerleştirmeden önce, daha iyi anlamak için verilere bakabiliriz ve ayrıca çoklu doğrusal regresyonun bu verilere uyacak iyi bir model olup olamayacağını görsel olarak değerlendirebiliriz.
Özellikle, yordayıcı değişkenlerin yanıt değişkeniyle doğrusal bir ilişkiye sahip olup olmadığını kontrol etmemiz gerekir; bu, çoklu doğrusal regresyon modelinin uygun olabileceğini gösterir.
Bunu yapmak için, her olası değişken çiftinin dağılım grafiğini oluşturmak amacıyla çiftler() işlevini kullanabiliriz:
pairs(data, pch = 18, col = "steelblue")
Bu çift grafiğinden aşağıdakileri görebiliriz:
- mpg ve kullanılabilirlik arasında güçlü bir negatif doğrusal korelasyon var gibi görünüyor
- mpg ve hp’nin güçlü bir pozitif doğrusal korelasyona sahip olduğu görülüyor
- mpg ve drat’ın mütevazı bir negatif doğrusal korelasyona sahip olduğu görülüyor
Her değişken çifti için gerçek doğrusal korelasyon katsayılarını içeren benzer bir grafik oluşturmak için GGally kütüphanesindeki ggpairs() fonksiyonunu da kullanabileceğimizi unutmayın:
#install and load the GGally library install.packages("GGally") library(GGally) #generate the pairs plot ggpairs(data)
Tahmin değişkenlerinin her birinin, mpg yanıt değişkeniyle dikkate değer bir doğrusal korelasyona sahip olduğu görülüyor, bu nedenle doğrusal regresyon modelini verilere uydurmaya devam edeceğiz.
Model ayarı
R’ye çoklu doğrusal regresyon modeli yerleştirmek için temel sözdizimi şöyledir:
lm(response_variable ~ predictor_variable1 + predictor_variable2 + ..., data = data)
Verilerimizi kullanarak aşağıdaki kodu kullanarak modeli sığdırabiliriz:
model <- lm(mpg ~ disp + hp + drat, data = data)
Model varsayımlarının kontrol edilmesi
Model sonuçlarını doğrulamaya başlamadan önce, ilk olarak model varsayımlarının karşılandığını doğrulamamız gerekir. Yani aşağıdakileri kontrol etmemiz gerekiyor:
1. Model artıklarının dağılımı yaklaşık olarak normal olmalıdır.
Artıkların basit bir histogramını oluşturarak bu varsayımın karşılanıp karşılanmadığını kontrol edebiliriz:
hist(residuals(model), col = "steelblue")
Dağılım biraz sağa çarpık olsa da büyük endişe yaratacak kadar anormal değil.
2. Artıkların varyansı tüm gözlemler için tutarlı olmalıdır.
Bu tercih edilen koşul, eş varyanslılık olarak bilinir. Bu varsayımın ihlali değişen varyans olarak bilinir.
Bu varsayımın karşılanıp karşılanmadığını kontrol etmek için düzeltilmiş/artık değer grafiği oluşturabiliriz:
#create fitted value vs residual plot plot(fitted(model), residuals(model)) #add horizontal line at 0 abline(h = 0, lty = 2)
İdeal olarak, artıkların her uygun değerde eşit şekilde dağılmasını isteriz. Grafikten, daha büyük uyum değerleri için dağılımın biraz daha büyük olma eğiliminde olduğunu görebiliriz, ancak bu eğilim, çok fazla endişe yaratacak kadar aşırı değildir.
Model çıktısının yorumlanması
Model varsayımlarının yeterince karşılandığını doğruladıktan sonra, özet() işlevini kullanarak model çıktısını inceleyebiliriz:
summary(model) #Call: #lm(formula = mpg ~ disp + hp + drat, data = data) # #Residuals: # Min 1Q Median 3Q Max #-5.1225 -1.8454 -0.4456 1.1342 6.4958 # #Coefficients: #Estimate Std. Error t value Pr(>|t|) #(Intercept) 19.344293 6.370882 3.036 0.00513 ** #disp -0.019232 0.009371 -2.052 0.04960 * #hp -0.031229 0.013345 -2.340 0.02663 * #drat 2.714975 1.487366 1.825 0.07863 . #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 3.008 on 28 degrees of freedom #Multiple R-squared: 0.775, Adjusted R-squared: 0.7509 #F-statistic: 32.15 on 3 and 28 DF, p-value: 3.28e-09
Sonuçtan şunları görebiliriz:
- Modelin genel F istatistiği 32,15 ve buna karşılık gelen p değeri 3,28e-09’dur . Bu durum genel modelin istatistiksel olarak anlamlı olduğunu göstermektedir. Başka bir deyişle regresyon modeli bir bütün olarak faydalıdır.
- disp istatistiksel olarak 0,10 anlamlılık seviyesinde anlamlıdır. Özellikle, model sonuçlarından elde edilen katsayı, beygir gücü ve yakıt tüketiminin sabit kaldığı varsayılarak, kullanılabilirlikteki bir birimlik artışın mpg cinsinden ortalama -0,019 birimlik bir düşüşle ilişkili olduğunu göstermektedir. .
- hp istatistiksel olarak 0,10 anlamlılık düzeyinde anlamlıdır. Özellikle, model sonuçlarından elde edilen katsayı, disp ve drat’ın sabit kaldığı varsayılarak, beygir gücündeki bir birimlik artışın mpg cinsinden ortalama -0,031 birimlik bir azalmayla ilişkili olduğunu göstermektedir.
- drat istatistiksel olarak 0,10 anlamlılık düzeyinde anlamlıdır. Özellikle, model sonuçlarından elde edilen katsayı, akış hızı ve beygir gücünün sabit kaldığı varsayıldığında, benzin tüketimindeki bir birimlik artışın ortalama 2.715 mpg’lik bir artışla ilişkili olduğunu göstermektedir.
Modelin uyum iyiliğinin değerlendirilmesi
Regresyon modelinin verilere ne kadar iyi uyduğunu değerlendirmek için birkaç farklı ölçüme bakabiliriz:
1. Çoklu R-kareler
Bu, yordayıcı değişkenler ile yanıt değişkeni arasındaki doğrusal ilişkinin gücünü ölçer. 1’in R-kare katı mükemmel bir doğrusal ilişkiyi belirtirken, 0’ın R-kare katı doğrusal bir ilişki olmadığını gösterir.
Çoklu R, aynı zamanda, yordayıcı değişkenler tarafından açıklanabilen yanıt değişkenindeki varyansın oranı olan R karenin kareköküdür. Bu örnekte R-kare katı 0,775’tir . Yani R kare 0,775 2 = 0,601’dir . Bu, mpg’deki varyansın %60,1’inin model yordayıcıları tarafından açıklanabileceğini göstermektedir.
İlgili: İyi bir R-kare değeri nedir?
2. Artık standart hata
Bu, gözlemlenen değerler ile regresyon çizgisi arasındaki ortalama mesafeyi ölçer. Bu örnekte gözlemlenen değerler regresyon doğrusundan ortalama 3.008 birim sapmaktadır .
İlgili: Regresyonun Standart Hatasını Anlamak
Tahminlerde bulunmak için modeli kullanın
Model sonuçlarından, uygun çoklu doğrusal regresyon denkleminin şöyle olduğunu biliyoruz:
şapka mpg = -19,343 – 0,019*disp – 0,031*hp + 2,715*süreklilik
Bu denklemi yeni gözlemler için mpg’nin ne olacağına dair tahminlerde bulunmak için kullanabiliriz. Örneğin aşağıdaki özelliklere sahip bir arabanın tahmini mpg değerini bulabiliriz:
- ekran = 220
- kanal = 150
- sür = 3
#define the coefficients from the model output intercept <- coef(summary(model))["(Intercept)", "Estimate"] disp <- coef(summary(model))["disp", "Estimate"] hp <- coef(summary(model))["hp", "Estimate"] drat <- coef(summary(model))["drat", "Estimate"] #use the model coefficients to predict the value for mpg intercept + disp*220 + hp*150 + drat*3 #[1] 18.57373
Disp = 220, hp = 150 ve drat = 3 olan bir araba için model, arabanın 18,57373 mpg alacağını tahmin ediyor.
Bu eğitimde kullanılan R kodunun tamamını burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde R’ye diğer regresyon modellerinin nasıl sığdırılacağı açıklanmaktadır:
R’de ikinci dereceden regresyon nasıl gerçekleştirilir?
R’de polinom regresyonu nasıl gerçekleştirilir
R’de üstel regresyon nasıl gerçekleştirilir