كيفية حساب vif في بايثون
تحدث العلاقة الخطية المتعددة في تحليل الانحدار عندما يرتبط متغيران تفسيريان أو أكثر ارتباطًا وثيقًا ببعضهما البعض، بحيث لا يوفران معلومات فريدة أو مستقلة في نموذج الانحدار.
إذا كانت درجة الارتباط عالية بما يكفي بين المتغيرات، فقد يتسبب ذلك في حدوث مشكلات عند ملاءمة نموذج الانحدار وتفسيره.
تتمثل إحدى طرق اكتشاف التعددية الخطية في استخدام مقياس يُعرف باسم عامل تضخم التباين (VIF) ، والذي يقيس الارتباط وقوة الارتباط بين المتغيرات التوضيحية في نموذج الانحدار .
يشرح هذا البرنامج التعليمي كيفية حساب VIF في بايثون.
مثال: حساب VIF في بايثون
في هذا المثال، سنستخدم مجموعة بيانات تصف سمات 10 من لاعبي كرة السلة:
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
لنفترض أننا نريد ملاءمة نموذج الانحدار الخطي المتعدد باستخدام التسجيل كمتغير الاستجابة والنقاط والتمريرات والمرتدات كمتغيرات توضيحية.
لحساب VIF لكل متغير توضيحي في النموذج، يمكننا استخدام الدالة variance_inflation_factor() من مكتبة 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
يمكننا ملاحظة قيم VIF لكل من المتغيرات التوضيحية:
- النقاط: 1.76
- التمريرات الحاسمة: 1.96
- المرتدات: 1.18
ملحوظة: تجاهل VIF لـ “Intercept” في القالب لأن هذه القيمة ليست ذات صلة.
كيفية تفسير قيم VIF
تبدأ قيمة VIF عند 1 وليس لها حد أعلى. القاعدة العامة لتفسير VIFs هي:
- تشير القيمة 1 إلى عدم وجود ارتباط بين متغير توضيحي معين وأي متغير توضيحي آخر في النموذج.
- تشير القيمة بين 1 و5 إلى وجود علاقة معتدلة بين متغير توضيحي معين والمتغيرات التوضيحية الأخرى في النموذج، ولكنها في كثير من الأحيان ليست شديدة بما يكفي لتتطلب اهتماما خاصا.
- تشير القيمة الأكبر من 5 إلى وجود علاقة محتملة شديدة بين متغير توضيحي معين ومتغيرات توضيحية أخرى في النموذج. في هذه الحالة، من المحتمل أن تكون تقديرات المعامل والقيم الاحتمالية في نتائج الانحدار غير موثوقة.
نظرًا لأن كل قيمة من قيم VIF للمتغيرات التوضيحية في نموذج الانحدار الخاص بنا قريبة من 1، فإن التعددية الخطية ليست مشكلة في مثالنا.