كيفية حساب 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، فإن التعددية الخطية ليست مشكلة في مثالنا.

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *