पायथन में मल्टीकोलिनेरिटी का परीक्षण कैसे करें
प्रतिगमन विश्लेषण में, बहुसंरेखता तब होती है जब दो या दो से अधिक भविष्यवक्ता चर एक-दूसरे के साथ अत्यधिक सहसंबद्ध होते हैं, जैसे कि वे प्रतिगमन मॉडल में अद्वितीय या स्वतंत्र जानकारी प्रदान नहीं करते हैं।
यदि भविष्यवक्ता चर के बीच सहसंबंध की डिग्री काफी अधिक है, तो यह प्रतिगमन मॉडल को फिट करने और व्याख्या करने में समस्याएं पैदा कर सकता है।
एक प्रतिगमन मॉडल में बहुसंरेखता का पता लगाने का सबसे सरल तरीका एक मीट्रिक की गणना करना है जिसे विचरण मुद्रास्फीति कारक के रूप में जाना जाता है, जिसे अक्सर संक्षिप्त रूप से वीआईएफ कहा जाता है।
वीआईएफ एक मॉडल में भविष्यवक्ता चर के बीच सहसंबंध की ताकत को मापता है। यह 1 और सकारात्मक अनंत के बीच का मान लेता है।
हम VIF मानों की व्याख्या करने के लिए निम्नलिखित सामान्य नियमों का उपयोग करते हैं:
- वीआईएफ = 1: किसी दिए गए भविष्यवक्ता चर और मॉडल में किसी अन्य भविष्यवक्ता चर के बीच कोई संबंध नहीं है।
- 1 और 5 के बीच वीआईएफ: मॉडल में दिए गए भविष्यवक्ता चर और अन्य भविष्यवक्ता चर के बीच एक मध्यम सहसंबंध है।
- वीआईएफ > 5 : किसी दिए गए भविष्यवक्ता चर और मॉडल में अन्य भविष्यवक्ता चर के बीच एक मजबूत संबंध है।
निम्नलिखित उदाहरण दिखाता है कि मॉडल में प्रत्येक भविष्यवक्ता चर के लिए वीआईएफ मानों की गणना करके पायथन में एक प्रतिगमन मॉडल में बहुसंरेखता का पता कैसे लगाया जाए।
उदाहरण: पायथन में बहुसंरेखता परीक्षण
मान लीजिए कि हमारे पास निम्नलिखित पांडा डेटाफ़्रेम है जिसमें विभिन्न बास्केटबॉल खिलाड़ियों के बारे में जानकारी है:
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
मान लीजिए कि हम प्रतिक्रिया चर के रूप में स्कोरिंग और भविष्यवक्ता चर के रूप में अंक , सहायता और रिबाउंड का उपयोग करके एक एकाधिक रैखिक प्रतिगमन मॉडल फिट करना चाहते हैं।
मॉडल में प्रत्येक पूर्वसूचक चर के लिए VIF की गणना करने के लिए, हम statsmodels लाइब्रेरी से variance_inflation_factor() फ़ंक्शन का उपयोग कर सकते हैं:
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
हम प्रत्येक भविष्यवक्ता चर के लिए VIF मान देख सकते हैं:
- अंक: 1.76
- सहायता: 1.96
- रिबाउंड: 1.18
नोट: टेम्प्लेट में “इंटरसेप्ट” के लिए वीआईएफ पर ध्यान न दें क्योंकि यह मान प्रासंगिक नहीं है।
चूँकि मॉडल में भविष्यवक्ता चर का प्रत्येक VIF मान 1 के करीब है, इसलिए मॉडल में बहुसंरेखता कोई समस्या नहीं है।
अतिरिक्त संसाधन
निम्नलिखित ट्यूटोरियल बताते हैं कि पायथन में अन्य सामान्य कार्य कैसे करें:
पायथन में सरल रैखिक प्रतिगमन कैसे करें
पायथन में मल्टीपल लीनियर रिग्रेशन कैसे करें
पायथन में एक अवशिष्ट प्लॉट कैसे बनाएं