Menu
flag Ar iconالعربيةdown icon

الانحدار الخطي في R: ‏lm() وsummary() وpredict()

عاير انحدارًا بدالة lm()، واقرأ كل كتلة من summary() من المعاملات والأخطاء المعيارية وقيم p ومعامل التحديد وإحصاء F، ثم تنبأ بدالة predict().

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

الفكرة: خط المربعات الصغرى

يعاير الانحدار الخطي خطًا مستقيمًا عبر سحابة من النقاط: y = intercept + slope × x. ومن بين كل الخطوط الممكنة، تختار lm() الخط الذي يصغّر مجموع مربعات البواقي، والباقي هو الفجوة الرأسية بين نقطة والخط. والتربيع يجعل الأخطاء الكبيرة تُحسب بشكل غير متناسب، ولهذا قد تُميل قيمة شاذة واحدة جامحة المعايرة كلها.

وحيث يعطيك الارتباط رقمًا واحدًا بلا وحدات عن "مدى تماسك حركتهما معًا"، يعطيك الانحدار معادلة بوحدات، وميلًا قابلًا للتفسير، وآلية للتنبؤ.

اقرأ الصيغة "نمذج mpg كدالة في wt". والمعاملان هما الخط المعاير: ‏mpg ≈ 37.3 − 5.3 × الوزن. وللميل وحدات حقيقية، فكل 1000 رطل إضافي من وزن السيارة (فوحدة wt هي 1000 رطل) تكلّف نحو 5.3 ميل لكل غالون. أما الحد الثابت (37.3 ميل لكل غالون عند وزن صفر) فهو مجرد موضع تقاطع الخط مع الصفر، ولا سيارة بلا وزن، فلا تُغرق في تفسيره.

جولة في summary()

summary(fit) هي المخرجات التي يطلب كل مقرر إحصاء تفسيرها. شغّلها ثم خذها كتلة كتلة:

‏Call: يعيد صدى النموذج الذي عايرته. تافه الآن، ومنقذ حين تتلاعب بستة كائنات نماذج.

‏Residuals: الملخص الخماسي للفوارق المتبقية (الفعلي − المتنبأ به). وتريد الوسيط قريبًا من 0 وتماثلًا تقريبيًا بين Min/Max وبين 1Q/3Q، فعدم التماثل القوي يلمّح إلى أن نموذج الخط المستقيم تفوته أشياء.

‏Coefficients: قلب المخرجات، بصف لكل حد:

  • ‏Estimate: القيمة المعايرة. وبالنسبة إلى wt تبلغ −5.34: كل 1000 رطل إضافي مرتبطة بانخفاض نحو 5.3 ميل لكل غالون. وترجم الميل دائمًا إلى جملة بوحدات، فتلك الجملة هي كل المضمون العملي للنموذج.
  • ‏Std. Error: مقدار تذبذب التقدير عبر عينات متكررة. والتقديرات الواقعة ضمن خطأين معياريين من الصفر مهتزة.
  • قيمة t: ‏Estimate ÷ Std. Error، أي كم خطأً معياريًا يبعد المعامل عن الصفر (وهي −9.56 هنا).
  • ‏Pr(>|t|): قيمة p لسؤال "هل يمكن أن يكون هذا المعامل صفرًا فعلًا؟" وهي لـ wt نحو 1.3e-10: فلو لم تكن للوزن علاقة خطية بالاقتصاد في الوقود لما ظهر ميل بهذا الانحدار في عينة من 32 عمليًا أبدًا. فقيمة p الصغيرة دليل على وجود الارتباط، لا برهان على أن النموذج صحيح، وليست مقياسًا للأهمية (فالأثر الضئيل المقدَّر بدقة عالية يحصل هو أيضًا على قيمة p ضئيلة).
  • ‏Signif. codes / النجوم: اختزال بصري لعمود قيم p. مريح ولا يضيف معلومة.

‏Residual standard error: 3.05 on 30 degrees of freedom: الحجم النمطي لخطأ التنبؤ بوحدات المتغير التابع نفسه، فالتنبؤات تخطئ عادةً بنحو 3 أميال لكل غالون. واحكم عليه بمقياس mpg الذي يتراوح تقريبًا بين 10 و34.

‏Multiple R-squared: 0.75: يفسّر الوزن نحو 75% من تباين اقتصاد الوقود. و‏Adjusted R-squared (0.74) يعيد حساب ذلك مع غرامة لكل متنبئ، لأن النسخة الخام لا يمكن أن تزيد إلا صعودًا كلما أضفت متغيرات، حتى ضوضاء عشوائية. وعند مقارنة نماذج بأعداد متنبئات مختلفة تكون النسخة المعدَّلة هي الصادقة. وقاوم رد الفعل القائل إن "النموذج الجيد = معامل تحديد عالٍ": فالأثر النافع حقًا قد يعيش في نموذج ذي معامل تحديد منخفض (متغير تابع كثير الضوضاء، وأحد محركات عديدة)، بينما قد يأتي معامل التحديد العالي من إفراط في المعايرة أو من متغير مسرَّب.

‏F-statistic: 91.4 ... p-value: 1.29e-10: اختبار النموذج كله، أي هل يتفوق هذا النموذج على "تنبأ بالمتوسط للجميع"؟ ومع متنبئ واحد يكرر اختبار t للميل (لاحظ أن 9.56² ≈ 91.4)، ومع عدة متنبئات يصبح الاختبار المشترك بأن معاملًا واحدًا على الأقل غير صفري. وآليته هي تفكيك التباين نفسه المستخدم في تحليل التباين.

الانحدار المتعدد: مع تثبيت البقية

أضف متنبئات بـ +:

ويتغير التفسير بطريقة جوهرية واحدة. فكل قيمة في Estimate صارت أثر ذلك المتنبئ مع تثبيت البقية: فمعامل wt (نحو −3.9 بعد أن كان −5.3) هو كلفة الوزن الإضافي من اقتصاد الوقود عند مقارنة سيارات لها القدرة الحصانية نفسها. أما القيمة −5.3 في الانحدار البسيط فقد ضمّت بصمت حقيقة أن السيارات الأثقل تميل أيضًا إلى أن تكون أقوى، والانحدار المتعدد يفكّ هذا الضم. وهذا أيضًا سبب انزياح المعاملات عند إضافة متغيرات، فإذا ارتبط المتنبئ الجديد بمتنبئ قديم تغيّر وصف وظيفة القديم. ويرتفع معامل التحديد إلى نحو 0.83، والنسخة المعدَّلة هنا هي المقارنة المنصفة مع نموذج المتنبئ الواحد.

التنبؤات: ‏predict()

النموذج المعاير دالة، وpredict() تقيّمها. ابنِ إطار بيانات newdata تطابق أسماء أعمدته المتنبئات تمامًا:

ويجيب نوعا الفترة عن سؤالين مختلفين، والخلط بينهما خطأ امتحاني كلاسيكي:

  • interval = "confidence": عدم اليقين بشأن المتوسط: "بالنسبة إلى كل السيارات التي تزن 2500 رطل، أين يقع متوسط اقتصاد الوقود؟" وهي ضيقة وتتقلص مع نمو البيانات.
  • interval = "prediction": المدى الذي يُرجَّح أن تقع فيه سيارة جديدة مفردة بذلك الوزن. وهي أوسع بكثير، لأن السيارة الواحدة تحمل تشتتها الخاص حول الخط، وهو تشتت لا يزيله أي قدر من البيانات بالمتوسط.

والتبليغ عن فترة ثقة حين يكون السؤال عن ملاحظة جديدة واحدة يبالغ بشدة في تقدير دقتك.

التشخيصات ومصيدة الاستقراء

تخبرك summary() بما يقدّره النموذج، وتخبرك رسوم البواقي بما إذا كان ينبغي تصديقه. وفي جلسة تفاعلية:

par(mfrow = c(2, 2))
plot(fit)   # four diagnostic plots

وما ينبغي البحث عنه: ينبغي أن تكون ‏Residuals vs Fitted سحابة بلا شكل، فالمنحنى يعني أن العلاقة ليست مستقيمة، والقمع (تشتت يتسع مع القيم المعايرة) يعني تباينًا غير ثابت، وتكون أخطاؤك المعيارية عندئذ خاطئة. وينبغي لنقاط رسم Q-Q أن تلتصق بالخط، فالذيول الثقيلة تعني أن القيم الشاذة تشوّه المعايرة. و‏Scale-Location هو فحص القمع مرة أخرى. و‏Residuals vs Leverage يشير إلى النقاط المؤثرة، أي الملاحظات التي تجرّ المعاملات وحدها (وفي mtcars تميل السيارات الفارهة مثل Chrysler Imperial إلى الظهور هنا). ومخطط انتشار سريع للبيانات الخام قبل المعايرة يلتقط معظم ذلك مبكرًا.

وأخيرًا، المصيدة التي لا يلتقطها أي تشخيص: الاستقراء. فالنموذج تعلّم من سيارات تزن نحو 1500 إلى 5400 رطل. ومرّر إلى predict() قيمة wt تساوي 8 فسيُرجع بمرح اقتصاد وقود سالبًا، إذ تمدّ الرياضيات الخط إلى ما لا نهاية بينما تتوقف الأدلة عند حافة البيانات. فتنبأ فقط داخل المدى الذي عايرت عليه أو قريبًا منه.

الخلاصة

  • تعاير fit <- lm(y ~ x, data = df) خط المربعات الصغرى، وcoef(fit) هي المعادلة، وsummary(fit) هي التقرير الكامل.
  • اقرأ قيم Estimate جملًا بوحدات، ويسأل Pr(>|t|) "هل يمكن أن يكون هذا صفرًا؟" لا "هل هذا مهم؟".
  • ‏Residual standard error هو الخطأ النمطي بوحدات حقيقية، وAdjusted R-squared هو الرقم المنصف لمقارنة النماذج.
  • في الانحدار المتعدد يعني كل معامل "مع تثبيت البقية"، وتنزاح المعاملات حين ينضم متنبئون مترابطون.
  • predict(fit, newdata, interval = ...): ‏"confidence" للمتوسط، و"prediction" لحالة جديدة واحدة وهي الأوسع.
  • افحص plot(fit) بحثًا عن المنحنيات والأقماع والنقاط المؤثرة، ولا تثق أبدًا بتنبؤات خارج مدى البيانات.

في المستند التالي: حين يكون المتغير التابع نعم/لا بدل رقم، أي الانحدار اللوجستي بدالة glm().

الأسئلة الشائعة

كيف تجري انحدارًا خطيًا في R؟

باستخدام lm() وصيغة: تجري fit <- lm(mpg ~ wt, data = mtcars) انحدار mpg على الوزن. ثم تطبع summary(fit) المعاملات وقيم p الخاصة بها ومعامل التحديد وإحصاء F. وأضف متنبئات أخرى بـ +: ‏lm(mpg ~ wt + hp, data = mtcars).

كيف تفسّر مخرجات summary لنموذج lm في R؟

في كتلة Coefficients، تكون كل قيمة في Estimate هي التغير المتوقع في المتغير التابع مقابل زيادة وحدة واحدة في ذلك المتنبئ (مع تثبيت البقية)، ويختبر Pr(>|t|) ما إذا كان من المعقول أن يكون ذلك المعامل صفرًا. أما Multiple R-squared فهو نسبة التباين المفسَّر. ويختبر إحصاء F في الأسفل النموذج ككل مقابل نموذج لا يحوي سوى الحد الثابت.

ما الفرق بين Multiple R-squared وAdjusted R-squared؟

‏Multiple R-squared هو النسبة الخام للتباين المفسَّر، ولا يمكن أن يزيد إلا صعودًا كلما أضفت متنبئات، حتى عديمة الفائدة منها. أما Adjusted R-squared فيفرض غرامة لكل متنبئ، فلا يرتفع إلا حين يستحق متغير جديد مكانه. فقارن النماذج باستخدام النسخة المعدَّلة.

كيف تتنبأ بقيم جديدة من انحدار في R؟

ابنِ إطار بيانات تطابق أسماء أعمدته المتنبئات، ثم استدعِ predict(fit, newdata = ...). أضف interval = "confidence" لعدم اليقين بشأن الاستجابة المتوسطة، أو interval = "prediction" للمدى (الأوسع بكثير) الذي يُرجَّح أن تقع فيه ملاحظة جديدة مفردة.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن