Multikolineariti merujuk kepada tahap saling korelasi yang tinggi antara pembolehubah bebas dalam model regresi. Ini boleh membawa kepada pekali yang tidak tepat dalam model, menjadikannya sukar untuk menilai kesan pembolehubah bebas yang berbeza ke atas pembolehubah bersandar. Dalam kes ini, adalah perlu untuk mengenal pasti dan menangani multikolineariti model regresi dan menggabungkan prosedur yang berbeza dan outputnya, yang akan kami jelaskan langkah demi langkah.
Kesan multikolineariti
Mengendalikan multikolineariti
Langkah 1 − Import perpustakaan yang diperlukan
Langkah 2 - Muatkan data ke dalam Bingkai Data panda
Langkah 3 - Buat matriks korelasi menggunakan peramal
Langkah 4 − Buat peta haba bagi matriks korelasi untuk menggambarkan korelasi
Langkah 5 - Kira faktor inflasi varians untuk setiap peramal keluaran
Langkah 6 − Tentukan peramal
Langkah 7 - Peramal harus dialih keluar
Langkah 8 - Jalankan semula model regresi
Langkah 9 - Semak semula.
Gunakan fungsi corr() pakej panda untuk menentukan matriks korelasi pembolehubah bebas. Gunakan perpustakaan seaborn untuk menjana peta haba untuk memaparkan matriks korelasi. Gunakan fungsi varians_inflation_factor() bagi pakej model statistik untuk menentukan faktor inflasi varians (VIF) bagi setiap pembolehubah bebas. VIF yang lebih besar daripada 5 atau 10 menunjukkan multikolineariti tinggi.
Terjemahan bahasa Cina bagiDalam kod ini, setelah data dimuatkan ke dalam Pandas DataFrame, pembolehubah peramal X dan pembolehubah bersandar y dipisahkan. Untuk mengira VIF bagi setiap pembolehubah peramal, kami menggunakan fungsi variation_inflation_factor() daripada pakej statsmodels. Dalam langkah terakhir proses, kami menyimpan nilai VIF bersama-sama dengan nama peramal dalam Pandas DataFrame serba baharu dan kemudian memaparkan hasilnya. Menggunakan kod ini, jadual yang mengandungi nama pembolehubah dan nilai VIF untuk setiap pembolehubah peramal akan dijana. Apabila pembolehubah mempunyai nilai VIF yang tinggi (melebihi 5 atau 10, bergantung pada keadaan), adalah penting untuk menganalisis pembolehubah itu dengan lebih lanjut.
import pandas as pd from statsmodels.stats.outliers_influence import variance_inflation_factor # Load data into a pandas DataFrame data = pd.read_csv("mydata.csv") # Select independent variables X = data[['independent_var1', 'independent_var2', 'independent_var3']] # Calculate VIF for each independent variable vif = pd.DataFrame() vif["VIF Factor"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])] vif["features"] = X.columns # Print the VIF results print(vif)
VIF Factor Features 0 3.068988 Independent_var1 1 3.870567 Independent_var2 2 3.843753 Independent_var3
Kecualikan satu atau lebih pembolehubah bebas berkorelasi kuat daripada model. Analisis komponen utama (PCA) boleh digunakan untuk menggabungkan pembolehubah bebas yang sangat berkorelasi menjadi pembolehubah tunggal. Kaedah penyelarasan seperti regresi rabung atau regresi laso boleh digunakan untuk mengurangkan kesan pembolehubah bebas berkorelasi kuat ke atas pekali model. Menggunakan pendekatan di atas, kod contoh berikut boleh digunakan untuk mengenal pasti dan menyelesaikan isu multikolineariti −
import pandas as pd import seaborn as sns from statsmodels.stats.outliers_influence import variance_inflation_factor from sklearn.decomposition import PCA from sklearn.linear_model import Ridge # Load the data into a pandas DataFrame data = pd.read_csv('data.csv') # Calculate the correlation matrix corr_matrix = data.corr() # Create a heatmap to visualize the correlation matrix sns.heatmap(corr_matrix, annot=True, cmap='coolwarm') # Check for VIF for each independent variable for i in range(data.shape[1]-1): vif = variance_inflation_factor(data.values, i) print('VIF for variable {}: {:.2f}'.format(i, vif)) # Remove highly correlated independent variables data = data.drop(['var1', 'var2'], axis=1) # Use PCA to combine highly correlated independent variables pca = PCA(n_components=1) data['pca'] = pca.fit_transform(data[['var1', 'var2']]) # Use Ridge regression to reduce the impact of highly correlated independent variables X = data.drop('dependent_var', axis=1) y = data['dependent_var'] ridge = Ridge(alpha=0.1) ridge.fit(X, y)
Fungsi ini tidak menjana sebarang output lain selain daripada mengeluarkan nilai VIF setiap pembolehubah bebas. Menjalankan kod ini hanya akan mengeluarkan nilai VIF untuk setiap pembolehubah bebas tiada graf atau prestasi model akan dicetak.
Dalam contoh ini, data mula-mula dimuatkan ke dalam DataFrame panda, kemudian matriks korelasi dikira, dan akhirnya peta haba dicipta untuk memaparkan matriks korelasi. Kami kemudian menghapuskan faktor bebas dengan korelasi yang tinggi selepas menguji VIF setiap pembolehubah bebas. Kami menggunakan regresi rabung untuk mengurangkan kesan pembolehubah bebas berkorelasi tinggi ke atas pekali model dan menggunakan analisis komponen utama untuk menggabungkan pembolehubah bebas berkorelasi tinggi menjadi satu pembolehubah.
import pandas as pd #create DataFrame df = pd.DataFrame({'rating': [90, 85, 82, 18, 14, 90, 16, 75, 87, 86], 'points': [22, 10, 34, 46, 27, 20, 12, 15, 14, 19], 'assists': [1, 3, 5, 6, 5, 7, 6, 9, 9, 5], 'rebounds': [11, 8, 10, 6, 3, 4, 4, 10, 10, 7]}) #view DataFrame print(df)
rating points assists rebounds 0 90 22 1 11 1 85 10 3 8 2 82 34 5 10 3 18 46 6 6 4 14 27 5 3 5 90 20 7 4 6 16 12 6 4 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
Menggunakan pakej Pandas, struktur data tatasusunan yang dipanggil DataFrame boleh dijana melalui program Python ini. Dimensi khusus termasuk empat lajur berbeza: bantuan, lantunan, mata dan penilaian. Perpustakaan diimport pada permulaan kod dan dipanggil "pd" selepas itu untuk mengurangkan kerumitan. DataFrame akhirnya dibina dengan melaksanakan kaedah pd.DataFrame() dalam baris kedua kod.
Gunakan kaedah print() pada baris ketiga kod untuk mencetak DataFrame ke konsol. Nilai setiap lajur membentuk definisi senarai dan berfungsi sebagai kunci dan nilai untuk fungsi input kamus. Maklumat untuk setiap pemain dipaparkan dalam format jadual, dengan statistik termasuk mata, bantuan dan lantunan disusun dalam lajur, dengan setiap baris mewakili pemain.
Ringkasnya, apabila dua atau lebih pembolehubah peramal dalam model berkorelasi kuat antara satu sama lain, ini dipanggil multikolineariti. Keadaan ini boleh menyukarkan pentafsiran hasil model. Dalam kes ini, sukar untuk menentukan bagaimana setiap pembolehubah peramal unik mempengaruhi pembolehubah hasil.
Atas ialah kandungan terperinci Mengesan dan mengendalikan isu multikolineariti dalam regresi menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!