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