دليل كامل للانحدار خطوة بخطوة في r
الانحدار التدريجي هو إجراء يمكننا استخدامه لبناء نموذج انحدار من مجموعة من المتغيرات المتوقعة عن طريق إدخال وإزالة المتنبئات بطريقة خطوة بخطوة في النموذج حتى لا يوجد سبب صالح إحصائيًا للدخول أو حذف المزيد.
الهدف من الانحدار التدريجي هو إنشاء نموذج انحدار يتضمن كافة المتغيرات المتوقعة التي ترتبط بشكل كبير إحصائيًا بمتغير الاستجابة .
يشرح هذا البرنامج التعليمي كيفية تنفيذ إجراءات الانحدار التالية خطوة بخطوة في R:
- خطوة بخطوة الاختيار إلى الأمام
- خطوة بخطوة الاختيار إلى الوراء
- الاختيار خطوة بخطوة في كلا الاتجاهين
لكل مثال، سوف نستخدم مجموعة بيانات mtcars المضمنة:
#view first six rows of mtcars
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
سنقوم بتركيب نموذج انحدار خطي متعدد باستخدام ميلا في الغالون (ميل لكل جالون) كمتغير الاستجابة والمتغيرات العشرة الأخرى في مجموعة البيانات كمتغيرات تنبؤية محتملة.
لكل مثال، سوف نستخدم وظيفة step() المضمنة في حزمة الإحصائيات لإجراء تحديد تدريجي، والذي يستخدم بناء الجملة التالي:
المرحلة (نموذج الاعتراض فقط، الاتجاه، المدى)
ذهب:
- النموذج الأصلي فقط : صيغة النموذج الأصلي فقط
- الاتجاه: يمكن أن يكون وضع البحث عن الخطوة “كلاهما” أو “للخلف” أو “للأمام”.
- النطاق: صيغة تحدد التنبؤات التي نود محاولة إدخالها في النموذج
مثال 1: التحديد خطوة بخطوة للأمام
يوضح الكود التالي كيفية إجراء التحديد خطوة بخطوة:
#define intercept-only model intercept_only <- lm(mpg ~ 1, data=mtcars) #define model with all predictors all <- lm(mpg ~ ., data=mtcars) #perform forward stepwise regression forward <- step(intercept_only, direction=' forward ', scope= formula (all), trace=0) #view results of forward stepwise regression forward$anova Step Df Deviance Resid. Df Resid. Dev AIC 1 NA NA 31 1126.0472 115.94345 2 + wt -1 847.72525 30 278.3219 73.21736 3 + cyl -1 87.14997 29 191.1720 63.19800 4 + hp -1 14.55145 28 176.6205 62.66456 #view final model forward$coefficients (Intercept) wt cyl hp 38.7517874 -3.1669731 -0.9416168 -0.0180381
ملاحظة: تخبر وسيطة التتبع = 0 R بعدم عرض النتائج الكاملة للاختيار خطوة بخطوة. يمكن أن يشغل هذا مساحة كبيرة إذا كان هناك عدد كبير من متغيرات التوقع.
وإليك كيفية تفسير النتائج:
- أولاً، نحن نلائم نموذج الاعتراض فقط. كان لهذا النموذج AIC بقيمة 115.94345 .
- ثم نلائم جميع النماذج الممكنة مع المتنبئ. النموذج الذي أنتج أدنى AIC وكان له أيضًا انخفاض ذو دلالة إحصائية في AIC مقارنة بالنموذج الأساسي فقط استخدم متنبئ الوزن . كان لهذا النموذج AIC بقيمة 73.21736 .
- بعد ذلك، نقوم بمطابقة جميع النماذج الممكنة مع اثنين من المتنبئين. النموذج الذي أنتج أقل AIC وكان له أيضًا انخفاض ذو دلالة إحصائية في AIC مقارنة بنموذج المتنبئ الفردي أضاف متنبئ الأسطوانات . كان لهذا النموذج AIC بقيمة 63.19800 .
- بعد ذلك، نلائم جميع النماذج الممكنة مع ثلاثة تنبؤات. النموذج الذي أنتج أقل AIC والذي كان لديه أيضًا انخفاض ذو دلالة إحصائية في AIC مقارنة بالنموذج ثنائي المتنبئ أضاف مؤشر hp . كان لهذا النموذج AIC قدره 62.66456 .
- بعد ذلك، نلائم جميع النماذج الممكنة مع أربعة متنبئات. وتبين أن أياً من هذه النماذج لم ينتج عنه انخفاض كبير في AIC، لذلك أوقفنا الإجراء.
النموذج النهائي يصبح كما يلي:
ميلا في الغالون ~ 38.75 – 3.17 * الوزن – 0.94 * سيل – 0.02 * هايب
مثال 2: التحديد العكسي خطوة بخطوة
يوضح الكود التالي كيفية الرجوع للخلف:
#define intercept-only model intercept_only <- lm(mpg ~ 1, data=mtcars) #define model with all predictors all <- lm(mpg ~ ., data=mtcars) #perform backward stepwise regression backward <- step(all, direction=' backward ', scope= formula (all), trace=0) #view results of backward stepwise regression backward$anova Step Df Deviance Resid. Df Resid. Dev AIC 1 NA NA 21 147.4944 70.89774 2 - cyl 1 0.07987121 22 147.5743 68.91507 3 - vs 1 0.26852280 23 147.8428 66.97324 4 - carb 1 0.68546077 24 148.5283 65.12126 5 - gear 1 1.56497053 25 150.0933 63.45667 6 - drat 1 3.34455117 26 153.4378 62.16190 7 - available 1 6.62865369 27 160.0665 61.51530 8 - hp 1 9.21946935 28 169.2859 61.30730 #view final model backward$coefficients (Intercept) wt qsec am 9.617781 -3.916504 1.225886 2.935837
وإليك كيفية تفسير النتائج:
- أولاً، قمنا بتركيب نموذج باستخدام جميع تنبؤات p . حدد هذا كـ M p .
- بعد ذلك، بالنسبة لـ k = p، p-1،…1، قمنا بتركيب جميع نماذج k التي تحتوي على جميع المتنبئات باستثناء واحد في M k ، لإجمالي متغيرات التوقع k-1. ثم اختر الأفضل من بين هذه الموديلات k وأطلق عليه اسم M k-1 .
- وأخيراً نختار أفضل نموذج من M0 … Mp باستخدام AIC.
النموذج النهائي يصبح كما يلي:
ميلا في الغالون ~ 9.62 – 3.92*الوزن + 1.23*Qsec + 2.94*صباحاً
مثال 3: الاختيار خطوة بخطوة في كلا الاتجاهين
يوضح التعليمة البرمجية التالية كيفية إجراء تحديد خطوة بخطوة في كلا الاتجاهين:
#define intercept-only model intercept_only <- lm(mpg ~ 1, data=mtcars) #define model with all predictors all <- lm(mpg ~ ., data=mtcars) #perform backward stepwise regression both <- step(intercept_only, direction=' both ', scope= formula (all), trace=0) #view results of backward stepwise regression both$anova Step Df Deviance Resid. Df Resid. Dev AIC 1 NA NA 31 1126.0472 115.94345 2 + wt -1 847.72525 30 278.3219 73.21736 3 + cyl -1 87.14997 29 191.1720 63.19800 4 + hp -1 14.55145 28 176.6205 62.66456 #view final model both$coefficients (Intercept) wt cyl hp 38.7517874 -3.1669731 -0.9416168 -0.0180381
وإليك كيفية تفسير النتائج:
- أولاً، نحن نلائم نموذج الاعتراض فقط.
- بعد ذلك، أضفنا تنبؤات إلى النموذج بالتسلسل، تمامًا كما فعلنا مع الاختيار خطوة بخطوة. ومع ذلك، بعد إضافة كل متنبئ، قمنا أيضًا بإزالة أي تنبؤات لم تعد تقدم تحسينًا في ملاءمة النموذج.
- كررنا هذه العملية حتى حصلنا على النموذج النهائي.
النموذج النهائي يصبح كما يلي:
ميلا في الغالون ~ 9.62 – 3.92*الوزن + 1.23*Qsec + 2.94*صباحاً
لاحظ أن اختيار الخطوة الأمامية واختيار الخطوة في كلا الاتجاهين أنتجا نفس النمط النهائي، بينما أنتج اختيار الخطوة الخلفية نمطًا مختلفًا.
مصادر إضافية
كيفية اختبار أهمية منحدر الانحدار
كيفية قراءة وتفسير جدول الانحدار
دليل للتعددية الخطية في الانحدار