كيفية استخدام وظيفة التنبؤ مع glm في r (مع أمثلة)
يمكن استخدام الدالة glm() في R لتناسب النماذج الخطية المعممة. هذه الميزة مفيدة بشكل خاص لتركيب نماذج الانحدار اللوجستي ونماذج انحدار بواسون والنماذج المعقدة الأخرى.
بمجرد تركيب النموذج، يمكننا بعد ذلك استخدام الدالة التنبؤ () للتنبؤ بقيمة الاستجابة لملاحظة جديدة.
تستخدم هذه الوظيفة بناء الجملة التالي:
توقع (كائن، بيانات جديدة، نوع = “الاستجابة”)
ذهب:
- الكائن: اسم تعديل النموذج باستخدام الدالة glm()
- newdata: اسم إطار البيانات الجديد لإجراء تنبؤات له
- النوع: نوع التنبؤ الذي يجب القيام به.
يوضح المثال التالي كيفية ملاءمة نموذج خطي معمم في R وكيفية استخدام النموذج بعد ذلك للتنبؤ بقيمة الاستجابة لملاحظة جديدة لم يسبق لها مثيل من قبل.
مثال: استخدام وظيفة التنبؤ مع glm في R
في هذا المثال، سوف نستخدم مجموعة بيانات R المضمنة والتي تسمى mtcars :
#view first six rows of mtcars data frame
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
سوف نطبق نموذج الانحدار اللوجستي التالي الذي نستخدم فيه المتغيرين disp و hp للتنبؤ بمتغير الاستجابة am (نوع ناقل الحركة في السيارة: 0 = أوتوماتيكي، 1 = يدوي).
#fit logistic regression model model <- glm(am ~ disp + hp, data=mtcars, family=binomial) #view model summary summary(model) Call: glm(formula = am ~ disp + hp, family = binomial, data = mtcars) Deviance Residuals: Min 1Q Median 3Q Max -1.9665 -0.3090 -0.0017 0.3934 1.3682 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 1.40342 1.36757 1.026 0.3048 available -0.09518 0.04800 -1.983 0.0474 * hp 0.12170 0.06777 1.796 0.0725 . --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 43,230 on 31 degrees of freedom Residual deviance: 16,713 on 29 degrees of freedom AIC: 22,713 Number of Fisher Scoring iterations: 8
يمكننا بعد ذلك استخدام هذا النموذج للتنبؤ باحتمالية أن السيارة الجديدة سيكون لها ناقل حركة أوتوماتيكي (am=0) أو ناقل حركة يدوي (am=1) باستخدام الكود التالي:
#define new observation
newdata = data. frame (disp=200, hp=100)
#use model to predict value of am
predict(model, newdata, type=" response ")
1
0.00422564
يتوقع النموذج أن احتمالية أن تكون السيارة الجديدة مزودة بناقل حركة يدوي (am=1) هو 0.004 . وهذا يعني أنه من المحتمل جدًا أن تأتي هذه السيارة الجديدة بناقل حركة أوتوماتيكي.
لاحظ أنه يمكننا أيضًا إجراء تنبؤات متعددة في وقت واحد إذا كانت لدينا قاعدة بيانات تحتوي على عدة سيارات جديدة.
على سبيل المثال، يوضح الكود التالي كيفية استخدام الطراز المجهز للتنبؤ باحتمالية وجود ناقل حركة يدوي لثلاث سيارات جديدة:
#define new data frame of three cars
newdata = data. frame (disp=c(200, 180, 160),
hp=c(100, 90, 108))
#view data frame
newdata
hp disp
1,200 100
2 180 90
3,160,108
#use model to predict value of am for all three cars
predict(model, newdata, type=" response ")
1 2 3
0.004225640 0.008361069 0.335916069
وإليك كيفية تفسير النتيجة:
- احتمال أن السيارة 1 لديها ناقل حركة يدوي هو 0.004 .
- احتمال أن السيارة 2 لديها ناقل حركة يدوي هو 0.008 .
- احتمال أن السيارة رقم 3 بها ناقل حركة يدوي هو 0.336 .
تعليقات
يجب أن تتطابق أسماء الأعمدة في إطار البيانات الجديد تمامًا مع أسماء الأعمدة في إطار البيانات التي تم استخدامها لإنشاء النموذج.
لاحظ أنه في مثالنا السابق، كان إطار البيانات الذي استخدمناه لإنشاء النموذج يحتوي على أسماء الأعمدة التالية لمتغيرات التوقع لدينا:
- عرض
- HP
لذلك عندما أنشأنا إطار البيانات الجديد المسمى newdata، حرصنا على تسمية الأعمدة أيضًا:
- عرض
- HP
إذا كانت أسماء الأعمدة غير متطابقة، فسوف تتلقى رسالة الخطأ التالية:
خطأ في التقييم (predvars، data، env)
ضع ذلك في الاعتبار عند استخدام وظيفة التنبؤ () .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:
كيفية إجراء الانحدار الخطي البسيط في R
كيفية إجراء الانحدار الخطي المتعدد في R
كيفية إجراء الانحدار متعدد الحدود في R
كيفية إنشاء فترة التنبؤ في R