R'de varyans enflasyon faktörü (vif) nasıl hesaplanır?
Regresyon analizinde çoklu doğrusallık, iki veya daha fazla yordayıcı değişkenin regresyon modelinde benzersiz veya bağımsız bilgi sağlamayacak şekilde birbiriyle yüksek düzeyde korelasyona sahip olması durumunda ortaya çıkar.
Değişkenler arasındaki korelasyon derecesi yeterince yüksekse, bu durum regresyon modelinin yerleştirilmesinde ve yorumlanmasında sorunlara neden olabilir.
Çoklu doğrusallığı tespit etmenin en yaygın yolu, bir regresyon modelinde yordayıcı değişkenler arasındaki korelasyonu ve korelasyonun gücünü ölçen varyans enflasyon faktörünü (VIF) kullanmaktır.
VIF değeri 1’den başlar ve üst sınırı yoktur. VIF’leri yorumlamanın genel kuralı şudur:
- 1 değeri, belirli bir yordayıcı değişken ile modeldeki diğer yordayıcı değişkenler arasında bir korelasyon olmadığını gösterir.
- 1 ile 5 arasındaki bir değer, belirli bir yordayıcı değişken ile modeldeki diğer yordayıcı değişkenler arasında orta düzeyde bir korelasyon olduğunu gösterir, ancak bu genellikle özel dikkat gerektirecek kadar ciddi değildir.
- 5’ten büyük bir değer, belirli bir yordayıcı değişken ile modeldeki diğer yordayıcı değişkenler arasında potansiyel olarak ciddi bir korelasyon olduğunu gösterir. Bu durumda regresyon sonuçlarındaki katsayı tahminleri ve p değerleri muhtemelen güvenilmez olacaktır.
Yüksek VIF değerlerinin güvenle göz ardı edilebileceği bazı durumların bulunduğunu unutmayın.
R’de VIF nasıl hesaplanır
R’deki bir regresyon modeli için VIF’nin nasıl hesaplanacağını göstermek için yerleşik mtcars veri kümesini 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
İlk olarak, yanıt değişkeni olarak mpg’yi ve tahmin değişkenleri olarak disp , hp , wt ve drat’ı kullanarak bir regresyon modeli uygulayacağız:
#fit the regression model model <- lm(mpg ~ disp + hp + wt + drat, data = mtcars) #view the output of the regression model summary(model) #Call: #lm(formula = mpg ~ disp + hp + wt + drat, data = mtcars) # #Residuals: # Min 1Q Median 3Q Max #-3.5077 -1.9052 -0.5057 0.9821 5.6883 # #Coefficients: #Estimate Std. Error t value Pr(>|t|) #(Intercept) 29.148738 6.293588 4.631 8.2e-05 *** #available 0.003815 0.010805 0.353 0.72675 #hp -0.034784 0.011597 -2.999 0.00576 ** #wt -3.479668 1.078371 -3.227 0.00327 ** #drat 1.768049 1.319779 1.340 0.19153 #--- #Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 # #Residual standard error: 2.602 on 27 degrees of freedom #Multiple R-squared: 0.8376, Adjusted R-squared: 0.8136 #F-statistic: 34.82 on 4 and 27 DF, p-value: 2.704e-10
Sonuçtan modelin R kare değerinin 0,8376 olduğunu görüyoruz. Ayrıca genel F istatistiğinin 34,82 ve karşılık gelen p değerinin 2,704e-10 olduğunu da görebiliriz, bu da genel regresyon modelinin anlamlı olduğunu gösterir. Ayrıca, yordayıcı değişkenler hp ve wt 0,05 anlamlılık düzeyinde istatistiksel olarak anlamlıdır, halbuki disp ve drat anlamlı değildir.
Daha sonra, modeldeki her tahmin değişkeninin VIF’sini hesaplamak için kütüphanenin vive() fonksiyonunu kullanacağız:
#load the car library library(car) #calculate the VIF for each predictor variable in the model lively(model) # disp hp wt drat #8.209402 2.894373 5.096601 2.279547
Disp ve wt için VIF’lerin 5’ten büyük olduğunu görebiliriz, bu da potansiyel olarak endişe vericidir.
VIF değerlerini görüntüleme
Her öngörücü değişkenin VIF değerlerini görselleştirmek için basit bir yatay çubuk grafik oluşturabilir ve 5’e dikey bir çizgi ekleyebiliriz, böylece hangi VIF değerlerinin 5’i aştığını açıkça görebiliriz:
#create vector of VIF values vive_values <- vive(model) #create horizontal bar chart to display each VIF value barplot(vif_values, main = "VIF Values", horiz = TRUE, col = "steelblue") #add vertical line at 5 abline(v = 5, lwd = 3, lty = 2)
Bu tür grafiğin çok sayıda öngörücü değişken içeren bir model için en yararlı olacağını unutmayın, böylece tüm VIF değerlerini aynı anda kolayca görüntüleyebiliriz. Ancak bu örnekte kullanışlı bir grafiktir.
Hangi VIF değerinin modele dahil edilemeyecek kadar yüksek olduğunu düşündüğünüze bağlı olarak, belirli yordayıcı değişkenleri kaldırmayı seçebilir ve ilgili R-kare değerinin veya modelin standart hatasının etkilenip etkilenmediğini görebilirsiniz.
Tahmin edici değişkenler arasındaki korelasyonların görselleştirilmesi
Bir yordayıcı değişkenin neden yüksek bir VIF değerine sahip olabileceğini daha iyi anlamak için, her bir değişken çifti arasındaki doğrusal korelasyon katsayılarını görüntüleyen bir korelasyon matrisi oluşturabiliriz:
#define the variables we want to include in the correlation matrix data <- mtcars[, c("disp", "hp", "wt", "drat")] #create correlation matrix cor(data) # disp hp wt drat #available 1.0000000 0.7909486 0.8879799 -0.7102139 #hp 0.7909486 1.0000000 0.6587479 -0.4487591 #wt 0.8879799 0.6587479 1.0000000 -0.7124406 #drat -0.7102139 -0.4487591 -0.7124406 1.0000000
Disp değişkeninin, modeldeki tüm yordayıcı değişkenler arasında en yüksek VIF değeri olan 8’den büyük bir VIF değerine sahip olduğunu hatırlayın. Korelasyon matrisinden disp’nin diğer üç yordayıcı değişkenle yüksek düzeyde ilişkili olduğunu görebiliriz, bu da VIF değerinin neden bu kadar yüksek olduğunu açıklar.
Bu durumda VIF değerinin yüksek olması ve 0,05 anlamlılık düzeyinde istatistiksel olarak anlamlı olmaması nedeniyle disp’i modelden çıkarmak isteyebilirsiniz.
Korelasyon matrisi ve VIF’nin size benzer bilgiler sağlayacağını unutmayın: her ikisi de size bir değişkenin bir regresyon modelinde bir veya daha fazla değişkenle yüksek düzeyde korelasyona sahip olduğunu söyler.
Daha fazla okuma:
Regresyonda Çoklu Bağlantı ve VIF Kılavuzu
İyi bir R-kare değeri nedir?