Python'da vif nasıl hesaplanır


Regresyon analizinde çoklu bağlantı, iki veya daha fazla açıklayı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 bir yolu, bir regresyon modelinde açıklayıcı değişkenler arasındaki korelasyonu ve korelasyonun gücünü ölçen, varyans enflasyon faktörü (VIF) olarak bilinen bir ölçüm kullanmaktır.

Bu eğitimde Python’da VIF’nin nasıl hesaplanacağı açıklanmaktadır.

Örnek: Python’da VIF’yi hesaplama

Bu örnek için 10 basketbolcunun özelliklerini açıklayan bir veri seti kullanacağız:

 import numpy as np
import pandas as pd

#create dataset
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view dataset
df

	rating points assists rebounds
0 90 25 5 11
1 85 20 7 8
2 82 14 7 10
3 88 16 8 6
4 94 27 5 6
5 90 20 7 9
6 76 12 6 6
7 75 15 9 10
8 87 14 9 10
9 86 19 5 7

Yanıt değişkeni olarak puanlamayı ve açıklayıcı değişkenler olarak sayılar, asistler ve ribaundları kullanarak çoklu doğrusal regresyon modelini uydurmak istediğimizi varsayalım.

Modeldeki her açıklayıcı değişkenin VIF’sini hesaplamak için statsmodels kütüphanesindeki variance_inflation_factor() fonksiyonunu kullanabiliriz:

 from patsy import damatrices
from statsmodels.stats.outliers_influence import variance_inflation_factor

#find design matrix for linear regression model using 'rating' as response variable 
y, X = dmatrices('rating ~ points+assists+rebounds', data=df, return_type='dataframe')

#calculate VIF for each explanatory variable
vivid = pd.DataFrame()
vive['VIF'] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
vivid['variable'] = X.columns

#view VIF for each explanatory variable 
lively

	       Variable VIF
0 101.258171 Intercept
1 1.763977 points
2 1.959104 assists
3 1.175030 rebounds

Açıklayıcı değişkenlerin her biri için VIF değerlerini gözlemleyebiliriz:

  • puan: 1.76
  • asist: 1.96
  • ribaund: 1.18

Not: Bu değer konuyla ilgili olmadığından şablondaki “Kesişme” için VIF’yi dikkate almayın.

VIF değerleri nasıl yorumlanı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 açıklayıcı değişken ile modeldeki diğer herhangi bir açıklayıcı değişken arasında bir korelasyon olmadığını gösterir.
  • 1 ile 5 arasındaki bir değer, belirli bir açıklayıcı değişken ile modeldeki diğer açıklayıcı değişkenler arasında orta düzeyde bir korelasyon olduğunu gösterir, ancak bu genellikle özel dikkat gerektirecek kadar şiddetli değildir.
  • 5’ten büyük bir değer, belirli bir açıklayıcı değişken ile modeldeki diğer açıklayı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.

Regresyon modelimizde açıklayıcı değişkenlerin VIF değerlerinin her biri 1’e kapalı olduğundan örneğimizde çoklu doğrusallık sorun teşkil etmemektedir.

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir