كيفية استخراج القيم p من الانحدار الخطي في النماذج الإحصائية
يمكنك استخدام الطرق التالية لاستخراج القيم الاحتمالية للمعاملات في نموذج الانحدار الخطي المناسب باستخدام وحدة statsmodels في Python:
#extract p-values for all predictor variables for x in range(0, 3): print ( model.pvalues [x]) #extract p-value for specific predictor variable name model. pvalues . loc [' predictor1 '] #extract p-value for specific predictor variable position model. pvalues [0]
توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا.
مثال: استخراج القيم P من الانحدار الخطي في النماذج الإحصائية
لنفترض أن لدينا DataFrame الباندا التالية التي تحتوي على معلومات حول ساعات الدراسة والامتحانات التحضيرية التي تم إجراؤها والدرجة النهائية التي حصل عليها الطلاب في فصل معين:
import pandas as pd #createDataFrame df = pd. DataFrame ({' hours ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6], ' exams ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2], ' score ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]}) #view head of DataFrame df. head () hours exam score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72
يمكننا استخدام الدالة OLS() في وحدة statsmodels لتناسب نموذج الانحدار الخطي المتعدد ، وذلك باستخدام “الساعات” و”الامتحانات” كمتغيرات للتنبؤ و”النتيجة” كمتغير للاستجابة :
import statsmodels. api as sm #define predictor and response variables y = df['score'] x = df[['hours', 'exams']] #add constant to predictor variables x = sm. add_constant (x) #fit linear regression model model = sm. OLS (y,x). fit () #view model summary print ( model.summary ()) OLS Regression Results ==================================================== ============================ Dept. Variable: R-squared score: 0.718 Model: OLS Adj. R-squared: 0.661 Method: Least Squares F-statistic: 12.70 Date: Fri, 05 Aug 2022 Prob (F-statistic): 0.00180 Time: 09:24:38 Log-Likelihood: -38.618 No. Observations: 13 AIC: 83.24 Df Residuals: 10 BIC: 84.93 Df Model: 2 Covariance Type: non-robust ==================================================== ============================ coef std err t P>|t| [0.025 0.975] -------------------------------------------------- ---------------------------- const 71.4048 4.001 17.847 0.000 62.490 80.319 hours 5.1275 1.018 5.038 0.001 2.860 7.395 exams -1.2121 1.147 -1.057 0.315 -3.768 1.344 ==================================================== ============================ Omnibus: 1,103 Durbin-Watson: 1,248 Prob(Omnibus): 0.576 Jarque-Bera (JB): 0.803 Skew: -0.289 Prob(JB): 0.669 Kurtosis: 1.928 Cond. No. 11.7 ==================================================== ============================
افتراضيًا، تعرض الدالة Summary() القيم الاحتمالية لكل متغير متنبئ حتى ثلاث منازل عشرية:
- القيمة P للتقاطع: 0.000
- القيمة P للساعات: 0.001
- القيمة P للامتحانات: 0.315
ومع ذلك، يمكننا استخراج القيم الاحتمالية الكاملة لكل متغير متنبئ من النموذج باستخدام الصيغة التالية:
#extract p-values for all predictor variables for x in range(0, 3): print ( model.pvalues [x]) 6.514115622692573e-09 0.0005077783375870773 0.3154807854805659
يتيح لنا ذلك رؤية القيم الاحتمالية مع المزيد من المنازل العشرية:
- القيمة P للتقاطع: 0.00000000651411562269257
- القيمة P للساعات: 0.0005077783375870773
- القيمة P للامتحانات: 0.3154807854805659
ملاحظة : استخدمنا 3 في دالة range() الخاصة بنا نظرًا لوجود ثلاثة معاملات إجمالية في نموذج الانحدار الخاص بنا.
يمكننا أيضًا استخدام الصيغة التالية لاستخراج القيمة p لمتغير “الساعات” على وجه التحديد:
#extract p-value for 'hours' only model. pvalues . loc [' hours '] 0.0005077783375870773
أو يمكننا استخدام الصيغة التالية لاستخراج القيمة p لمعامل متغير في موضع محدد من نموذج الانحدار:
#extract p-value for coefficient in index position 0 model. pvalues [0] 6.514115622692573e-09
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في بايثون:
كيفية تنفيذ الانحدار اللوجستي في بايثون
كيفية حساب AIC لنماذج الانحدار في بايثون
كيفية حساب R-squared المعدل في بايثون