Cara menguji multikolinearitas dengan python


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

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

Cara paling sederhana untuk mendeteksi multikolinearitas dalam model regresi adalah dengan menghitung metrik yang dikenal sebagai faktor inflasi varians, sering disingkat VIF .

VIF mengukur kekuatan korelasi antar variabel prediktor dalam suatu model. Dibutuhkan nilai antara 1 dan positif tak terhingga.

Kami menggunakan aturan praktis berikut untuk menafsirkan nilai VIF:

  • VIF = 1: Tidak ada korelasi antara variabel prediktor tertentu dan variabel prediktor lainnya dalam model.
  • VIF antara 1 dan 5: Terdapat korelasi moderat antara variabel prediktor tertentu dan variabel prediktor lain dalam model.
  • VIF > 5 : Terdapat korelasi yang kuat antara variabel prediktor tertentu dan variabel prediktor lain dalam model.

Contoh berikut menunjukkan cara mendeteksi multikolinearitas pada model regresi dengan Python dengan menghitung nilai VIF untuk setiap variabel prediktor dalam model.

Contoh: uji multikolinearitas dengan Python

Misalkan kita memiliki pandas DataFrame berikut yang berisi informasi tentang berbagai pemain bola basket:

 import pandas as pd

#createDataFrame
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 DataFrame
print (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

Katakanlah kita ingin menyesuaikan model regresi linier berganda dengan menggunakan scoring sebagai variabel respon dan points , assists , dan rebounds sebagai variabel prediktor.

Untuk menghitung VIF setiap variabel prediktor 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 regression model using 'rating' as response variable 
y ,

#create DataFrame to hold VIF values
vive_df = pd. DataFrame ()
vive_df[' variable '] = X.columns 

#calculate VIF for each predictor variable 
vive_df[' VIF '] = [variance_inflation_factor(X. values , i) for i in range(X. shape [1])]

#view VIF for each predictor variable 
print (viv_df)

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

Kita dapat melihat nilai VIF dari masing-masing variabel prediktor:

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

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

Karena masing-masing nilai VIF variabel prediktor model mendekati 1, maka multikolinearitas tidak menjadi masalah dalam model.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan tugas umum lainnya dengan Python:

Cara melakukan regresi linier sederhana dengan Python
Cara melakukan regresi linier berganda dengan Python
Cara Membuat Plot Sisa dengan Python

Tambahkan komentar

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