كيفية استخدام الدالة predict() مع lm() في r


يمكن استخدام الدالة lm() في R لتناسب نماذج الانحدار الخطي.

بمجرد تركيب النموذج، يمكننا بعد ذلك استخدام الدالة التنبؤ () للتنبؤ بقيمة الاستجابة لملاحظة جديدة.

تستخدم هذه الوظيفة بناء الجملة التالي:

توقع (كائن، بيانات جديدة، نوع = “الاستجابة”)

ذهب:

  • الكائن: اسم تعديل النموذج باستخدام الدالة glm()
  • newdata: اسم إطار البيانات الجديد لإجراء تنبؤات له
  • النوع: نوع التنبؤ الذي يجب القيام به.

يوضح المثال التالي كيفية استخدام الدالة lm() لملاءمة نموذج الانحدار الخطي في R، ثم كيفية استخدام الدالة التنبؤ() للتنبؤ بقيمة الاستجابة لملاحظة جديدة لم يسبق للنموذج رؤيتها من قبل.

مثال: استخدام الدالة Predict() مع lm() في R

لنفترض أن لدينا إطار البيانات التالي في R الذي يحتوي على معلومات حول لاعبي كرة السلة المختلفين:

 #create data frame
df <- data. frame (minutes=c(5, 10, 13, 14, 20, 22, 26, 34, 38, 40),
                 fouls=c(5, 5, 3, 4, 2, 1, 3, 2, 1, 1),
                 points=c(6, 8, 8, 7, 14, 10, 22, 24, 28, 30))

#view data frame
df

   minutes fouls points
1 5 5 6
2 10 5 8
3 13 3 8
4 14 4 7
5 20 2 14
6 22 1 10
7 26 3 22
8 34 2 24
9 38 1 28
10 40 1 30

لنفترض أننا نريد تطبيق نموذج الانحدار الخطي المتعدد التالي باستخدام دقائق اللعب وإجمالي الأخطاء للتنبؤ بعدد النقاط التي سجلها كل لاعب:

النقاط = β 0 + β 1 (دقائق) + β 2 (الأخطاء)

يمكننا استخدام الدالة lm() لتكييف هذا النموذج:

 #fit multiple linear regression model
fit <- lm(points ~ minutes + fouls, data=df)

#view summary of model
summary(fit)

Call:
lm(formula = points ~ minutes + fouls, data = df)

Residuals:
    Min 1Q Median 3Q Max 
-3.5241 -1.4782 0.5918 1.6073 2.0889 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -11.8949 4.5375 -2.621 0.0343 *  
minutes 0.9774 0.1086 9.000 4.26e-05 ***
fouls 2.1838 0.8398 2.600 0.0354 *  
---
Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.148 on 7 degrees of freedom
Multiple R-squared: 0.959, Adjusted R-squared: 0.9473 
F-statistic: 81.93 on 2 and 7 DF, p-value: 1.392e-05

باستخدام المعاملات من نتائج النموذج يمكننا كتابة معادلة الانحدار المجهزة:

النقاط = -11.8949 + 0.9774 (دقائق) + 2.1838 (أخطاء)

يمكننا بعد ذلك استخدام وظيفة التنبؤ () للتنبؤ بعدد النقاط التي سيسجلها اللاعب الذي يلعب لمدة 15 دقيقة ويرتكب 3 أخطاء في المجموع:

 #define new observation
newdata = data. frame (minutes=15, fouls=3)

#use model to predict points value
predict(fit, newdata)

       1 
9.317731

يتوقع النموذج أن يسجل هذا اللاعب 9.317731 نقطة.

لاحظ أنه يمكننا أيضًا إجراء تنبؤات متعددة مرة واحدة إذا كان لدينا إطار بيانات يحتوي على ملاحظات جديدة متعددة.

على سبيل المثال، يوضح الكود التالي كيفية استخدام نموذج الانحدار المناسب للتنبؤ بقيم النقاط لثلاثة لاعبين:

 #define new data frame of three cars
newdata = data. frame (minutes=c(15, 20, 25),
                     fouls=c(3, 2, 1))

#view data frame
newdata

  minutes fouls
1 15 3
2 20 2
3 25 1

#use model to predict points for all three players
predict(model, newdata)

        1 2 3 
 9.317731 12.021032 14.724334 

وإليك كيفية تفسير النتيجة:

  • عدد النقاط المتوقع للاعب بـ 15 دقيقة و3 أخطاء هو 9.32 .
  • عدد النقاط المتوقع للاعب مع 20 دقيقة وخطأين هو 12.02 .
  • النقاط المتوقعة للاعب مع 25 دقيقة وخطأ واحد هي 14.72 .

ملاحظات حول استخدام التنبؤ ()

يجب أن تتطابق أسماء الأعمدة في إطار البيانات الجديد تمامًا مع أسماء الأعمدة في إطار البيانات التي تم استخدامها لإنشاء النموذج.

لاحظ أنه في مثالنا السابق، كان إطار البيانات الذي استخدمناه لإنشاء النموذج يحتوي على أسماء الأعمدة التالية لمتغيرات التوقع لدينا:

  • دقائق
  • أخطاء

لذلك عندما أنشأنا إطار البيانات الجديد المسمى newdata، حرصنا على تسمية الأعمدة أيضًا:

  • دقائق
  • أخطاء

إذا كانت أسماء الأعمدة غير متطابقة، فسوف تتلقى رسالة الخطأ التالية:

 Error in eval(predvars, data, env)

ضع ذلك في الاعتبار عند استخدام وظيفة التنبؤ () .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:

كيفية إجراء الانحدار الخطي البسيط في R
كيفية إجراء الانحدار الخطي المتعدد في R
كيفية إجراء الانحدار متعدد الحدود في R
كيفية إنشاء فترة التنبؤ في R

Add a Comment

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