Cara menghitung vif dengan python


Multikolinearitas dalam analisis regresi terjadi ketika dua atau lebih variabel penjelas berkorelasi tinggi satu sama lain, sehingga tidak memberikan informasi yang unik atau independen dalam model regresi.

Jika tingkat korelasi antar variabel cukup tinggi, hal ini dapat menimbulkan masalah saat menyesuaikan dan menafsirkan model regresi.

Salah satu cara untuk mendeteksi multikolinearitas adalah dengan menggunakan metrik yang dikenal sebagai variance inflasi faktor (VIF) , yang mengukur korelasi dan kekuatan korelasi antar variabel penjelas dalam model regresi .

Tutorial ini menjelaskan cara menghitung VIF dengan Python.

Contoh: Hitung VIF dengan Python

Untuk contoh ini, kita akan menggunakan kumpulan data yang mendeskripsikan atribut 10 pemain bola basket:

 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

Misalkan kita ingin menyesuaikan model regresi linier berganda dengan menggunakan scoring sebagai variabel respon dan poin, assist, dan rebound sebagai variabel penjelas.

Untuk menghitung VIF setiap variabel penjelas dalam model, kita dapat menggunakan fungsi variance_inflation_factor() dari pustaka statsmodels:

 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

Nilai VIF untuk masing-masing variabel penjelas dapat kita amati:

  • poin: 1,76
  • membantu: 1,96
  • rebound: 1.18

Catatan: Abaikan VIF untuk “Intercept” di template karena nilai ini tidak relevan.

Bagaimana menafsirkan nilai VIF

Nilai VIF dimulai dari 1 dan tidak memiliki batas atas. Aturan umum untuk menafsirkan VIF adalah:

  • Nilai 1 menunjukkan bahwa tidak ada korelasi antara variabel penjelas tertentu dan variabel penjelas lainnya dalam model.
  • Nilai antara 1 dan 5 menunjukkan korelasi sedang antara variabel penjelas tertentu dan variabel penjelas lainnya dalam model, namun seringkali tidak cukup parah sehingga memerlukan perhatian khusus.
  • Nilai yang lebih besar dari 5 menunjukkan kemungkinan adanya korelasi yang parah antara variabel penjelas tertentu dan variabel penjelas lainnya dalam model. Dalam hal ini, estimasi koefisien dan nilai p pada hasil regresi kemungkinan besar tidak dapat diandalkan.

Karena masing-masing nilai VIF dari variabel penjelas dalam model regresi kita mendekati 1, multikolinearitas tidak menjadi masalah dalam contoh kita.

Tambahkan komentar

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