كيفية إجراء مطابقة المربعات الصغرى في NumPy (مع مثال)
تُعد طريقة المربعات الصغرى (Least Squares Method) إحدى الركائز الرياضية والإحصائية الأكثر رسوخاً في تاريخ العلوم التطبيقية والتحليل العددي. تمثل هذه التقنية حجر الزاوية الذي شُيدت عليه صروح النمذجة الإحصائية، وخوارزميات تعلم الآلة، واستخراج الأنماط من البيانات التجريبية المشوبة بالضجيج القياسي. تهدف الطريقة في جوهرها إلى إيجاد التقدير الأمثل لمعلمات النماذج الرياضية عبر تقليل الفروق التراكمية بين المشاهدات الفعلية والقيم التنبؤية، مما يمنح الباحثين والمهندسين أداة قوية لاستخلاص القوانين الفيزيائية، والأنماط الاقتصادية القياسية، والمسارات الحيوية المعقدة من عينات البيانات الواقعية.
مع بزوغ عصر الحوسبة العلمية الرقمية، انتقل تطبيق هذه الطريقة من العمليات الحسابية اليدوية المعقدة والمصفوفات الورقية المرهقة إلى خوارزميات رقمية فائقة السرعة والدقة. وتتصدر مكتبة NumPy في لغة بايثون مشهد الحوسبة الجبرية، حيث توفر واجهات برمجية عالية الأداء ترتكز على حزم الجبر الخطي المعيارية عالمياً مثل LAPACK وBLAS. يتيح التوظيف الدقيق لدوال الجبر الخطي داخل NumPy للباحثين إجراء عمليات المطابقة الخطية المعقدة في أجزاء من الثانية، حتى عند التعامل مع مجموعات بيانات ضخمة تتجاوز مئات الآلاف من المشاهدات والمتغيرات.
يتناول هذا الدليل الشامل والمفصل الكيفية الدقيقة لإجراء مطابقة المربعات الصغرى باستخدام مكتبة NumPy، بدءاً من تفكيك الأسس الرياضية والجبرية التي تستند إليها الخوارزمية، مروراً بالتشريح الدقيق لدالة np.linalg.lstsq وبارامتراتها الحسابية، وصولاً إلى هندسة مصفوفات التصميم، وتفسير المخرجات الإحصائية، وتقييم جودة النماذج عبر المقاييس المعيارية والتمثيل البياني المتقدم. يهدف هذا المقال إلى تقديم مرجع أكاديمي وتطبيقي متكامل يدمج بين الصرامة النظرية والبراعة البرمجية للمطورين والباحثين في مختلف التخصصات العلمية.
- 1. مقدمة إلى طريقة المربعات الصغرى وأهميتها الإحصائية والرياضية
- 2. الأسس الرياضية والنظرية لخوارزمية المربعات الصغرى
- 3. البنية البرمجية لمكتبة NumPy والوحدة الخطية numpy.linalg
- 4. التشريح التفصيلي والبارامترات لدالة np.linalg.lstsq
- 5. هندسة مصفوفة التصميم (Design Matrix) وإعداد البيانات
- 6. دليل تطبيقي خطوة بخطوة: تنفيذ مطابقة المربعات الصغرى
- 7. التفسير الإحصائي والتحليلي لمخرجات الانحدار الخطّي
- 8. تحليل المخرجات الإضافية لدالة lstsq: البواقي والرتبة والقيم المفردة
- 9. تقييم جودة النموذج: قياسات الدقة الإحصائية وحساب معامل التحديد R²
- 10. التمثيل البياني الشامل لمطابقة المربعات الصغرى باستخدام Matplotlib
- 11. تطبيقات متقدمة: الانحدار المتعدد والحدودي باستخدام np.linalg.lstsq
- 12. أفضل الممارسات البرمجية، المقارنة الشاملة، وخلاصة التوصيات
- خاتمة
- References
1. مقدمة إلى طريقة المربعات الصغرى وأهميتها الإحصائية والرياضية
1.1 المفهوم الجوهري لطريقة المربعات الصغرى العادية (OLS)
تقوم طريقة المربعات الصغرى العادية (Ordinary Least Squares – OLS) على مبدأ استمثال رياضي يسعى إلى تقليل دالة الخسارة المعرفة بمجموع مربعات الفروق بين القيم المرصودة للمتغير التابع والقيم المقدرة عبر النموذج الخطي. تُعرف هذه الفروق في الأدبيات الإحصائية باسم “البواقي” (Residuals)، ويعكس كل باقٍ مقدار الخطأ العشوائي أو الانحراف غير المفسر لنقطة بيانية معينة عن المنحنى التقديري. إن اختيار تربيع هذه الفروق، بدلاً من أخذ قيمها المطلقة، يضمن تحقيق هدفين رياضيين حاسمين: الأول هو معاملة الانحرافات الموجبة والسالبة على قدم المساواة دون أن يلغي بعضها بعضاً، والثاني هو معاقبة الانحرافات الكبيرة بصورة تصاعدية غير خطية، مما يجعل النموذج أكثر حساسية للابتعاد الجسيم عن الاتجاه العام.
من الضروري في النمذجة الخطية التمييز الدقيق بين المعلمات الحقيقية لمجتمع الدراسة (Population Parameters) والمعلمات المقدرة من واقع العينة التجريبية (Sample Estimated Parameters). يُفترض في النموذج النظري وجود علاقة بنيوية تحكم الظاهرة وتتضمن معلمات ثابتة ولكنها غير معلومة للباحث، بينما توفر طريقة المربعات الصغرى تقديراً نقطياً لتلك المعلمات استناداً إلى البيانات المتاحة. تهدف العملية الاستدلالية إلى تقريب تلك المعلمات المقدرة من القيم الحقيقية بأعلى كفاءة إحصائية ممكنة وبأقل قدر من التباين والتحيز.
تحتل طريقة المربعات الصغرى موقعاً مركزياً في استكشاف العلاقات الارتباطية والتنبؤية بين المتغيرات في شتى فروع العلوم. فهي لا تقتصر على مجرد رسم خط هندسي يتوسط النقاط، بل تقدم إطاراً تحليلياً متكاملاً لاختبار الفرضيات العلمية، وقياس حساسية المتغيرات التابعة للتغيرات في المتغيرات المستقلة، وعزل التأثيرات المتداخلة، وبناء منظومات تنبؤية قادرة على تقدير السلوك المستقبلي للظواهر المعقدة بدرجات موثوقية قابلة للقياس الكمي.
1.2 السياق التاريخي وتطور خوارزميات المطابقة الخطية
يعود الفضل الأولي في الصياغة المنهجية لطريقة المربعات الصغرى إلى مطلع القرن التاسع عشر، من خلال الإسهامات الرائدة لكل من عالم الرياضيات الفرنسي أدريان ماري ليجاندر وعالم الرياضيات الألماني كارل فريدريش غاوس. نشر ليجاندر أول بحث علمي يصف الطريقة صراحة في عام 1805 كأداة لتقدير مدارات الأجرام السماوية وتحديد مسارات المذنبات. في المقابل، أثبت غاوس، الذي ادعى استخدام الطريقة منذ عام 1795، ارتباط طريقة المربعات الصغرى بنظرية الاحتمالات وربطها بالتوزيع الطبيعي للأخطاء في ورقته البحثية المنشورة عام 1809، والتي تمكن عبرها من التنبؤ بدقة مذهلة بموقع الكويكب “سيريس” بعد اختفائه خلف الشمس.
شهد القرن العشرون تحولاً جذرياً في تطبيقات الطريقة، حيث انتقلت من الحسابات الفلكية والجيوديسية اليدوية المعقدة إلى التطبيقات الاقتصادية، والبيولوجية، والهندسية. ومع التطور المتسارع للحواسيب الرقمية في منتصف القرن، تحولت الخوارزميات الحسابية من حل المعادلات الخطية عبر الحساب المصفوفي اليدوي المعرض للخطأ إلى خوارزميات الحوسبة العلمية الرقمية عالية الأداء. تطلب هذا التحول تطوير طرق عددية مستقرة لتفادي مشكلات الخطأ التقريبي وتراكم أخطاء الفاصلة العائمة (Floating-Point Errors)، وهو ما تجسد في ابتكار خوارزميات تفكيك المصفوفات المتقدمة مثل تفكيك القيم المفردة (Singular Value Decomposition – SVD) وتحليل QR.
في المشهد المعاصر لعلوم البيانات والإحصاء التطبيقي الحديث، لم تفقد طريقة المربعات الصغرى بريقها رغم ظهور الشبكات العصبية العميقة وخوارزميات التعلم المعقدة. بل تظل الطريقة الأساس المعياري للمقارنة والتقييم (Baseline Model)، والأداة المفضلة في النماذج التي تتطلب درجة عالية من القابلية للتفسير والشفافية التامة، فضلاً عن كونها المكون البنيوي الأساسي لطبقات الانحدار في أعقد معماريات الذكاء الاصطناعي الحديثة.
1.3 أهمية تطبيق المربعات الصغرى في بيئة بايثون وNumPy
توفر بيئة الحوسبة في لغة بايثون، مدعومة بمكتبة NumPy، كفاءة عددية استثنائية لمعالجة العمليات المتجهية ومصفوفات البيانات الضخمة. تتميز مكتبة NumPy بتنفيذ عملياتها الأساسية بلغات منخفضة المستوى مثل C وFortran، مما يتيح التغلب على بطء حلقات التكرار التقليدية في بايثون عبر مفهوم الحوسبة المتجهية (Vectorized Computation). يتيح هذا التصميم البرمجي تنفيذ مطابقة المربعات الصغرى على مصفوفات تحوي ملايين النقاط البيانية بسرعة فائقة وبأقل استهلاك ممكن لموارد المعالجة والذاكرة العشوائية.
تتكامل مكتبة NumPy بسلاسة متناهية مع المنظومة العلمية الأوسع في بايثون، بما في ذلك مكتبة SciPy المتخصصة في الاستمثال والتحليل الرياضي المتقدم، ومكتبة Matplotlib المخصصة للتصور البياني الهندسي والإحصائي. يتيح هذا التكامل التبادلي للباحث الانتقال بسلاسة من مرحلة تجهيز المصفوفات وتنظيف البيانات، إلى مرحلة التقدير الرياضي المباشر، ثم إلى مرحلة التشخيص البصري المتقدم ورسم فترات الثقة والبواقي دون الحاجة إلى إعادة صياغة هياكل البيانات أو تحويل أنواعها الحسابية.
تُعد المخرجات الرقمية المستخلصة من دوال الانحدار في NumPy أساساً متيناً لبناء النماذج التنبؤية وتفسير السلوكيات التجريبية والظواهر القياسية. تتيح الدقة العددية العالية للبيئة البرمجية استخراج المعاملات التقديرية، والخطأ المعياري، ومصفوفات التباين والتباين المشترك بدقة متناهية، مما يسهم في اتخاذ قرارات علمية وهندسية دقيقة مبنية على براهين إحصائية قاطعة في مجالات الهندسة الكيميائية، وفيزياء المواد، والاقتصاد القياسي، والمعلوماتية الحيوية.
2. الأسس الرياضية والنظرية لخوارزمية المربعات الصغرى
2.1 الصياغة الجبرية للخط المستقيم ودالة الهدف
ينطلق نموذج الانحدار الخطي البسيط من الافتراض القائل بوجود علاقة خطية تربط بين متغير مستقل وحيد (يُرمز له بالرمز x) ومتغير تابع مستجيب (يُرمز له بالرمز y). تُصاغ هذه العلاقة رياضياً على مستوى المجتمع الإحصائي وفق المعادلة التالية:
y = β₀ + β₁x + ε
حيث تمثل β₀ نقطة التقاطع مع المحور الرأسي (Intercept)، وتمثل β₁ معامل الميل أو الانحدار (Slope) الذي يقيس مقدار التغير المتوقع في المتغير التابع عند تغير المتغير المستقل بمقدار وحدة واحدة، بينما يمثل ε حد الخطأ العشوائي (Random Error Term) الذي يعبر عن التباينات الفردية والعوامل غير المرصودة في النموذج التجريبي.
تهدف طريقة المربعات الصغرى إلى تقدير قيم المعلمتين β₀ و β₁، والتي سنرمز لتقديراتهما بالرمزين b₀ و b₁، من خلال تقليل “دالة الخسارة” أو ما يُعرف بمجموع مربعات الأخطاء (Sum of Squared Errors – SSE)، وتُعرف هذه الدالة رياضياً على النحو التالي:
SSE = ∑ (yᵢ – ŷᵢ)² = ∑ (yᵢ – (b₀ + b₁xᵢ))²
حيث يمثل yᵢ القيمة الفعلية المرصودة للمشاهدة رقم i، بينما يمثل ŷᵢ القيمة المقدرة المناظرة لها على خط الانحدار، ويمتد المجموع عبر كافة المشاهدات من 1 إلى n.
للوصول إلى القيم الصغرى المطلقة لهذه الدالة، يتم تطبيق حساب التفاضل والتكامل من خلال إيجاد المشتقات الجزئية لدالة الخسارة بالنسبة إلى كل من المعلمتين b₀ و b₁، ومساواة هذه المشتقات بالصفر لتحقيق شروط الرتبة الأولى للاستمثال (First-Order Necessary Conditions):
∂SSE / ∂b₀ = -2 ∑ (yᵢ – b₀ – b₁xᵢ) = 0
∂SSE / ∂b₁ = -2 ∑ xᵢ(yᵢ – b₀ – b₁xᵢ) = 0
بإعادة ترتيب هذه المعادلات الجبرية وتبسيطها، نحصل على منظومة من معادلتين خطيتين تُعرفان باسم “المعادلات الطبيعية” (Normal Equations)، والتي يؤدي حلها المباشر إلى الصيغ الحسابية المغلقة لمعامل الميل ونقطة التقاطع:
b₁ = [ n ∑(xᵢyᵢ) – (∑xᵢ)(∑yᵢ) ] / [ n ∑(xᵢ²) – (∑xᵢ)² ] = Cov(x, y) / Var(x)
b₀ = ȳ – b₁x̄
حيث يمثل x̄ الوسط الحسابي لقيم المتغير المستقل، ويمثل ȳ الوسط الحسابي لقيم المتغير التابع.
2.2 التمثيل المصفوفي لمعادلات المربعات الصغرى
عند الانتقال إلى النماذج الخطية العامة والمتعددة، تصبح الصياغة الجبرية الفردية غير عملية، مما يقتضي تحويل نظام المعادلات بالكامل إلى صيغة المصفوفات المدمجة. يُعبر عن النموذج الخطي بصيغة الجبر الخطي على النحو الآتي:
Y = Xβ + ε
في هذا التمثيل، يمثل Y متجه العمود للمتغير التابع بأبعاد (n × 1)، بينما تمثل X مصفوفة التصميم (Design Matrix) بأبعاد (n × p) حيث يمثل n عدد المشاهدات و p عدد المعلمات المقدرة متضمنة الحد الثابت. يمثل β متجه معلمات النموذج بأبعاد (p × 1)، ويمثل ε متجه الأخطاء العشوائية بأبعاد (n × 1).
تُصاغ دالة مجموع مربعات البواقي في الفضاء المصفوفي عبر حاصل الضرب القياسي لمتجه البواقي في نفسه:
SSE = eᵀe = (Y – Xβ)ᵀ(Y – Xβ) = YᵀY – 2βᵀXᵀY + βᵀXᵀXβ
لإيجاد متجه المعلمات β الذي يقلل من قيمة هذه الدالة إلى حدها الأدنى، نقوم باشتقاق المقدار المصفوفي بالنسبة للمتجه β ومساواة الناتج بالمتجه الصفري:
∂(SSE) / ∂β = -2XᵀY + 2XᵀXβ = 0
يقود هذا الاشتقاق مباشرة إلى الصياغة المصفوفية للمعادلات الطبيعية:
(XᵀX)β = XᵀY
إذا كانت المصفوفة المربعة (XᵀX) ذات رتبة كاملة (Full Rank) وغير شاذة، فإنها تمتلك معكوساً مصفوفياً حقيقياً (XᵀX)⁻¹، مما يسمح بحل النظام بصورة مباشرة للحصول على متجه المعلمات الأمثل للمربعات الصغرى:
β̂ = (XᵀX)⁻¹XᵀY
تُعد المصفوفة (XᵀX)⁻¹Xᵀ في الأدبيات الجبرية تجسيداً لما يُعرف باسم “المعكوس شبه المعمم” أو معكوس مور-بينروز (Moore-Penrose Pseudoinverse)، والذي يمثل الأساس النظري لحل أنظمة المعادلات الخطية المفرطة التحديد (Overdetermined Systems) حيث يفوق عدد المشاهدات عدد المعلمات المراد تقديرها.
2.3 الافتراضات الإحصائية الكلاسيكية لنموذج غاوس-ماركوف
تستند الخصائص الإحصائية المثلى لتقديرات المربعات الصغرى إلى مجموعة من الفرضيات الصارمة المعروفة باسم افتراضات غاوس-ماركوف (Gauss-Markov Assumptions). يضمن استيفاء هذه الفروض تمتع المقدرات بخصائص استدلالية قوية. تشمل هذه الفرضيات ما يلي:
- الخطية في المعلمات (Linearity in Parameters): يجب أن تكون العلاقة بين المتغير التابع والمتغيرات المستقلة خطية بالنسبة للمعلمات المجهولة β، حتى وإن كانت المتغيرات المستقلة نفسها تتضمن تحويلات غير خطية كالدوال التربيعية أو اللوغاريتمية.
- القيمة المتوقعة الصفرية للأخطاء (Zero Conditional Mean): يُشترط أن يكون التوقع الرياضي لحد الخطأ العشوائي مشروطاً بقيم المتغيرات المستقلة مساوياً للصفر التام: E(εᵢ | X) = 0، مما يعني عدم وجود تحيز منهجي أو إغفال لمتغيرات جوهرية مفسرة.
- ثبات تباين الأخطاء (Homoscedasticity): يجب أن يكون تباين الأخطاء العشوائية ثابتاً عبر جميع مستويات المشاهدات: Var(εᵢ | X) = σ²، مما يعني عدم تغير تشتت الأخطاء مع تزايد أو تناقص قيم المتغير المستقل.
- انعدام الارتباط الذاتي بين الأخطاء (No Autocorrelation): يُفترض أن تكون الأخطاء العشوائية للمشاهدات المختلفة مستقلة إحصائياً عن بعضها البعض: Cov(εᵢ, εⱼ | X) = 0 لجميع قيم i ≠ j، وهو افتراض محوري يتطلب عناية فائقة في بيانات السلاسل الزمنية.
- انتفاء التعدد الخطي التام (No Perfect Multicollinearity): يجب ألا توجد علاقة ارتباط خطي خطية تامة بين أي من المتغيرات التفسيرية في مصفوفة التصميم X، لضمان اكتمال رتبة المصفوفة وقابلية (XᵀX) للانعكاس الحسابي.
تنص مبرهنة غاوس-ماركوف الشهيرة (Gauss-Markov Theorem) على أنه في حال تحقق الفرضيات المذكورة أعلاه، فإن مقدر المربعات الصغرى العادية β̂ يمثل “أفضل مقدر خطي غير متحيز” (Best Linear Unbiased Estimator – BLUE). وتعني كلمة “أفضل” في هذا السياق الإحصائي الدقيق أن هذا المقدر يمتلك أدنى تباين ممكن (Minimum Variance) بين كافة فئات المقدرات الخطية غير المتحيزة البديلة، مما يجعله المقدر الأكثر كفاءة ودقة رياضية.
3. البنية البرمجية لمكتبة NumPy والوحدة الخطية numpy.linalg
3.1 نظرة عامة على كائنات المصفوفات ndarray في NumPy
تتمحور قوة مكتبة NumPy حول كائن المصفوفة متعددة الأبعاد المعروف تقنياً باسم ndarray (N-dimensional Array). يتميز هذا الكائن الهندسي بتنظيم البيانات الرقمية داخل كتل متصلة ومتجاورة في الذاكرة الفيزيائية للحاسوب (Contiguous Memory Blocks)، مما يلغي التشتت في العنونة الذي تعاني منه القوائم المدمجة في بايثون (Python Lists). يتيح هذا التجاور المكاني للمعالج الاستفادة القصوى من الذاكرة المخبأة السريعة (CPU Cache Lines)، وتنفيذ العمليات الحسابية المتزامنة باستخدام تعليمات المعالجة المتعددة للبيانات المفردة (SIMD Vectorization).
توفر المصفوفات داخل NumPy آلية برمجية متقدمة تُعرف باسم “البث” (Broadcasting). تسمح هذه الخاصية بإجراء العمليات الحسابية والمنطقية بين مصفوفات ذات أبعاد وأشكال مختلفة دون الحاجة إلى إنشاء نسخ مكررة من البيانات في الذاكرة. يتم البث عبر مواءمة الأبعاد الضمنية وفق قواعد رياضية صارمة، مما يتيح تطبيق العمليات الجبرية مثل طرح المتوسطات، وتغيير المقاييس، وإجراء الضرب المصفوفي المعقد بكفاءة برمجية مذهلة وسطور برمجية موجزة للغاية.
في سياق الحسابات الخطية ومطابقة المربعات الصغرى، يتطلب العمل تحويل المتجهات أحادية البعد ذات الشكل (N,) إلى مصفوفات ثنائية الأبعاد مهيأة شكلياً (N, P) لتمثيل مصفوفات التصميم ومتجهات الاستجابة بدقة. تتيح NumPy دوالاً متقدمة للتحكم في الأبعاد والترتيب مثل reshape و newaxis و ravel، مما يضمن توافق هياكل البيانات مع الشروط الحسابية الصارمة لوحدات الجبر الخطي المعيارية.
3.2 وحدة الجبر الخطي numpy.linalg ووظائفها الأساسية
تمثل وحدة الجبر الخطي numpy.linalg الواجهة البرمجية المتخصصة لتنفيذ العمليات الرياضية المتقدمة على المصفوفات. لا تقوم هذه الوحدة بتنفيذ الخوارزميات الحسابية عبر كود بايثون مفسر، بل تعمل كغلاف عالي الكفاءة (Wrapper) يستدعي مكتبات الحوسبة العددية منخفضة المستوى المكتوبة بلغتي C و Fortran، وفي مقدمتها حزمة الجبر الخطي LAPACK ونظام البرمجيات الفرعية للجبر الخطي الأساسي BLAS. تضمن هذه الهيكلية الحسابية أداء العمليات المصفوفية بأعلى سرعة معالجة ممكنة مع الاستفادة الكاملة من الأنوية المتعددة للمعالجات الحديثة.
يجب التمييز الجوهري داخل هذه الوحدة بين دوال الحل الدقيق للأنظمة الخطية المحددة مثل np.linalg.solve، ودوال التقدير التقريبي للأنظمة غير المحددة أو مفرطة التحديد مثل np.linalg.lstsq. تُستخدم الدالة الأولى حصرياً عندما تكون مصفوفة المعاملات مربعة الشكل وذات رتبة كاملة غير شاذة، حيث يوجد حل رياضي فريد يطابق المعادلات تماماً. في حين تُستخدم الدالة الثانية عندما يفوق عدد المشاهدات عدد المعلمات (وهي الحالة السائدة في البيانات التجريبية والتطبيقية)، حيث يستحيل إيجاد حل يمر بكافة النقاط، مما يستوجب اللجوء إلى تقريب المربعات الصغرى لتقليل الخطأ التراكمي.
توفر الوحدة linalg طيفاً واسعاً من الدوال المساعدة الضرورية لتشخيص وتحليل المصفوفات، مثل دالة np.linalg.svd لتفكيك القيم المفردة، ودالة np.linalg.qr للتحليل المتعامد، ودوال حساب المحددات np.linalg.det، والرتبة المصفوفية np.linalg.matrix_rank، والقيم والمتجهات الذاتية np.linalg.eig، ورقم حالة المصفوفة np.linalg.cond، وهي أدوات حاسمة لتقييم الاستقرار العددي لنماذج الانحدار المطبقة.
3.3 مقارنة دالة np.linalg.lstsq مع الدوال البديلة في بايثون
تتعدد الخيارات البرمجية المتاحة في بيئة بايثون لتنفيذ مطابقة المربعات الصغرى، مما يستوجب إجراء مقارنة منهجية بين دالة np.linalg.lstsq والبدائل المتاحة لتحديد السياق الأمثل لكل أداة. يوضح الجدول والتحليل التالي الفروق الجوهرية بين تلك الأدوات:
- دالة
np.polyfit: مخصصة للمطابقة متعددة الحدود (Polynomial Fitting) ذات المتغير الواحد. تتميز بسهولة الاستخدام المباشر دون الحاجة إلى بناء مصفوفة التصميم يدوياً، لكنها تفتقر إلى المرونة في التعامل مع نماذج الانحدار المتعدد (Multiple Regression) التي تحتوي على متغيرات مستقلة متعددة ومتباينة الخصائص. - دالة
scipy.optimize.least_squares: موجهة أساساً لحل مسائل المربعات الصغرى غير الخطية (Nonlinear Least Squares). تعتمد على خوارزميات الاستمثال التكراري مثل Levenberg-Marquardt و Trust Region Reflective. توفر مرونة هائلة لنمذجة الدوال الرياضية المعقدة وفرض قيود على قيم المعلمات (Bounds)، إلا أنها تستهلك وقتاً حسابياً وموارد معالجة أكبر مقارنة بالحل المباشر للنماذج الخطية. - فئة
LinearRegressionفي مكتبة Scikit-Learn: مصممة خصيصاً لأغراض تدريب نماذج تعلم الآلة، حيث تتكامل مع أدوات التحقق المتقاطع (Cross-Validation) وتعديل المعايير الفائقة وتدفقات المعالجة (Pipelines). تستدعي هذه الفئة داخلياً خوارزميات مشابهة لـlstsq، ولكنها تضيف طبقة برمجية إضافية وتتطلب تثبيت مكتبات خارجية قد لا تكون ضرورية في الحسابات العلمية الخالصة.
تتفوق دالة np.linalg.lstsq على نظيراتها بالجمع بين السرعة الحسابية القصوى، وخفة الاعتماديات البرمجية (Dependency-free)، والمرونة الكاملة في هندسة مصفوفات التصميم لأي نموذج خطي عام، فضلاً عن إرجاعها المباشر للمؤشرات التشخيصية مثل رتبة المصفوفة وقيمها المفردة ومجموع البواقي في استدعاء وظيفي واحد.
4. التشريح التفصيلي والبارامترات لدالة np.linalg.lstsq
4.1 المدخلات الأساسية للدالة: مصفوفة التصميم ومتجه الاستجابة
تستلزم الصياغة البرمجية لاستدعاء دالة np.linalg.lstsq تمرير مجموعة من المعاملات المحددة بدقة لضمان التنفيذ الحسابي السليم. يُعرف التوقيع البرمجي القياسي للدالة في الإصدارات الحديثة على النحو التالي:
numpy.linalg.lstsq(a, b, rcond=None)
يمثل المعامل الأول a مصفوفة التصميم (Design Matrix)، وهي مصفوفة ثنائية الأبعاد ذات شكل هندسي (M, N)، حيث يمثل M عدد المشاهدات أو نقاط البيانات التجريبية، ويمثل N عدد المتغيرات التفسيرية مضافاً إليها عمود الحد الثابت إن وجد. يجب أن تكون هذه المصفوفة ذات أبعاد متسقة ونوع بيانات عددي عائم (Floating-point) مثل float64 لتفادي أي تحويلات ضمنية قد تضر بالأداء العددي.
يمثل المعامل الثاني b مصفوفة أو متجه القيم التابعة المستهدفة (Dependent Variable Data). يمكن أن يكون هذا المعامل متجهاً أحادي البعد بطول (M,) في حالات الانحدار الفردي أو المتعدد التقليدي، أو مصفوفة ثنائية الأبعاد بأبعاد (M, K) في حال الرغبة في ملاءمة عدة متغيرات تابعة (K targets) في خطوة حسابية واحدة متزامنة عبر نفس مصفوفة التصميم.
يتمثل الشرط الرياضي والبرمجي الحاسم لعمل الدالة في التطابق التام للبعد الأول (عدد الصفوف M) بين المدخلين a و b. فإذا تباين عدد المشاهدات بين مصفوفة التصميم ومتجه الاستجابة، ستقوم الدالة فوراً برمي استثناء خطأ في الأبعاد (ValueError: Incompatible dimensions)، مما يعطل سريان التنفيذ البرمجي.
4.2 بارامتر معامل القطع الحرج rcond وأهميته العددية
يُعد البارامتر rcond (Reciprocal Condition Number) أحد أهم المعاملات الحسابية لضبط الاستقرار العددي أثناء تنفيذ المطابقة. يحدد هذا المعامل العتبة الرياضية لقطع وإهمال القيم المفردة الصغيرة جداً (Small Singular Values) في مصفوفة التصميم. أثناء عملية تفكيك القيم المفردة، إذا كانت إحدى القيم المفردة مقسومة على أكبر قيمة مفردة أصغر من عتبة rcond، يتم اعتبارها مساوية للصفر التام ومعاملتها كقيمة شاذة، مما يمنع تفاقم الأخطاء العددية وانفجار التباين في الحل الناتج.
مرت القيمة الافتراضية لهذا المعامل بتغيرات تاريخية بارزة عبر إصدارات مكتبة NumPy المتعاقبة. في الإصدارات القديمة السابقة للإصدار 1.14، كانت القيمة الافتراضية محددة بالقيمة الثابتة -1، والتي كانت تجبر الدالة على استخدام دقة الآلة (Machine Precision) بشكل ضمني، ولكنها كانت تصدر تحذيرات برمجية متكررة (FutureWarnings) تحث المستخدمين على ضبط القيمة صراحة.
تتمثل أفضل الممارسات البرمجية والرياضية في الوقت الراهن في تمرير rcond=None صراحة عند استدعاء الدالة. في هذه الحالة، تعتمد الدالة العتبة التلقائية الموصى بها في حزمة LAPACK، والمحسوبة على أنها حاصل ضرب أكبر بعد في المصفوفة في الدقة النسبية لآلة الحوسبة العائمة (max(M, N) * eps). يوفر هذا الخيار أعلى توازن ممكن بين الدقة العددية وتفادي الشذوذ الجبري في المصفوفات رديئة الشروط.
4.3 هيكل المخرجات الرباعي الذي تُرجعه الدالة
تُرجع دالة np.linalg.lstsq هيكلاً بيانياً يتألف من صف رباعي (4-element Tuple) من البيانات، يحتوي كل عنصر فيه على معلومات تحليلية وتشخيصية محددة:
- العنصر الأول: مصفوفة الحلول والمعاملات (Coefficients Vector): كائن
ndarrayبأبعاد(N,)أو(N, K)يحتوي على قيم المعلمات المقدرة للمربعات الصغرى (β̂)، مرتبة بالتناظر التام مع ترتيب الأعمدة في مصفوفة التصميمa. - العنصر الثاني: مجموع مربعات البواقي (Residuals): كائن
ndarrayيحتوي على القيمة العددية لـ SSE. تُرجع الدالة مصفوفة تحتوي على هذه القيمة فقط إذا كان عدد الصفوفM > Nوكانت مصفوفة التصميم ذات رتبة كاملةN. أما إذا كانت المصفوفة غير مكتملة الرتبة أو كانM <= N، تُرجع الدالة مصفوفة فارغةarray([], dtype=float64). - العنصر الثالث: الرتبة الفعالة للمصفوفة (Effective Rank): عدد صحيح (Integer) يمثل الرتبة الحسابية لمصفوفة التصميم
aالمحسوبة بناءً على عدد القيم المفردة التي تتجاوز عتبة القطعrcond. - العنصر الرابع: القيم المفردة للمصفوفة (Singular Values): كائن
ndarrayيحتوي على القيم المفردة للمصفوفةaمرتبة تنازلياً، وهي القيم المستخرجة من تفكيك SVD، وتوفر تشخيصاً شاملاً لدرجة التعدد الخطي وحالة المصفوفة العددية.
5. هندسة مصفوفة التصميم (Design Matrix) وإعداد البيانات
5.1 دمج عمود الثابت (Intercept Column) في مصفوفة التصميم
تتمثل إحدى الأخطاء الشائعة لدى المبتدئين في استخدام دوال الجبر الخطي في تمرير متجه المتغير المستقل x بمفرده كمصفوفة تصميم للدالة. من الناحية الهندسية والرياضية، يؤدي هذا الإجراء إلى إجبار خط الانحدار على المرور قسراً بنقطة الأصل الإحداثية (0, 0)، حيث تصبح معادلة النموذج y = mx بدلاً من y = mx + c. يترتب على هذا الإلغاء القسري لنقطة التقاطع تشويه جسيم في تقدير معامل الميل، وتضخيم هائل في مجموع مربعات البواقي إذا لم تكن البيانات الحقيقية متمركزة بالفعل حول نقطة الأصل.
للسماح للنموذج بتقدير نقطة التقاطع الحرة β₀، يجب إضافة عمود كامل من الآحاد (Column of Ones) إلى مصفوفة المتغيرات المستقلة. يمثل هذا العمود رياضياً المتغير الوهمي المضروب في المعلمة β₀ (حيث أن β₀ * 1 = β₀). وبذلك تتحول مصفوفة التصميم لنموذج الانحدار البسيط من متجه ذي أبعاد (N, 1) إلى مصفوفة ثنائية الأبعاد ذات شكل (N, 2)، يتضمن عمودها الأول قيم المتغير المستقل x، ويتضمن عمودها الثاني قيم الرقم 1 لكل المشاهدات.
يجب التأكد من أن إضافة عمود الثابت لا تؤدي إلى خلق تعدد خطي تام مع أي متغيرات تصنيفية أو وهمية أخرى قد تتضمنها المصفوفة في نماذج الانحدار المتقدمة (ما يُعرف بفخ المتغيرات الوهمية – Dummy Variable Trap)، لضمان الحفاظ على الرتبة الكاملة للمصفوفة واستقرار الحل الرياضي.
5.2 استخدام np.vstack وnp.ones لبناء المصفوفة
تُعد الطريقة الكلاسيكية الأكثر شيوعاً في أدبيات بايثون لبناء مصفوفة التصميم هي استخدام الدالة np.vstack جنباً إلى جنب مع دالة np.ones وتطبيق عملية تبديل المحاور (Transpose). تعتمد هذه المنهجية على الخطوات البرمجية التالية:
أولاً، يتم توليد متجه أحادي البعد يتألف بالكامل من القيمة 1 ويمتلك نفس طول متجه البيانات المستقلة عبر استدعاء np.ones(len(x)) أو np.ones_like(x). ثانياً، يتم دمج متجه البيانات x مع متجه الآحاد رأسياً باستخدام np.vstack([x, np.ones(len(x))]). ينتج عن هذه الخطوة مصفوفة ذات شكل (2, N)، حيث يشغل المتغير x الصف الأول وتشغل الآحاد الصف الثاني.
ثالثاً، ولتعديل أبعاد المصفوفة لتتوافق مع متطلبات دالة lstsq التي تشترط أن تكون المشاهدات ممثلة في الصفوف والمتغيرات في الأعمدة (N, 2)، يتم تطبيق خاصية تبديل المحاور عبر إلحاق الرمز .T بالمصفوفة الناتجة. تصبح المصفوفة النهائية مهيأة بصيغة A = np.vstack([x, np.ones(len(x))]).T، وهي صيغة برمجية بالغة الكفاءة وتضمن التخصيص المتجانس للذاكرة.
5.3 الطرق البديلة لبناء مصفوفة التصميم باستخدام np.column_stack وnp.c_
توفر مكتبة NumPy مسارات برمجية بديلة وأكثر إيجازاً لبناء مصفوفة التصميم، تسهم في كتابة كود أكثر وضوحاً وقابلية للقراءة، وتلغي الحاجة إلى إجراء عملية التبديل اللاحقة .T. من أبرز هذه الطرق البديلة:
- استخدام
np.column_stack: تقوم هذه الدالة بدمج المتجهات أحادية البعد كأعمدة متجاورة مباشرة داخل مصفوفة ثنائية الأبعاد 2D. تُصاغ المصفوفة عبر الاستدعاء المباشر:A = np.column_stack([x, np.ones_like(x)])، مما يولد مباشرة مصفوفة ذات أبعاد(N, 2)دون الحاجة لخطوة تبديل المحاور. - استخدام الكائن الفهرسي
np.c_: يمثلnp.c_كائناً مساعداً للفهرسة (Index Trick) يتيح ربط المصفوفات عبر المحور الثاني بشكل شديد الإيجاز وشبيه بالترميز الرياضي للمصفوفات. يُكتب التعبير البرمجي على النحو:A = np.c_[x, np.ones(len(x))].
من حيث كفاءة إدارة الذاكرة والأداء الحسابي، تؤدي كافة هذه الطرق إلى نفس النتيجة الهيكلية النهائية، حيث تقوم بإنشاء مصفوفة متصلة من نوع C-contiguous في الذاكرة. ويبقى الاختيار بينها مسألة تفضيل أسلوبي وتوافقي مع المعايير البرمجية المعتمدة في المشروع البحثي.
6. دليل تطبيقي خطوة بخطوة: تنفيذ مطابقة المربعات الصغرى
6.1 الخطوة الأولى: إدخال متجهات البيانات المستقلة والتابعة
تبدأ الخطوات التطبيقية باستيراد مكتبة NumPy وفق الاصطلاح البرمجي القياسي المعترف به عالمياً:
import numpy as np
سنفترض في هذا الدليل التطبيقي وجود مجموعة بيانات تجريبية تم جمعها من تجربة فيزيائية لقياس استطالة نابض مرن تحت تأثير أوزان متزايدة (قانون هوك). يتم تمثيل كتل الأوزان المعلقة (بالكيلوغرام) كمتغير مستقل x، بينما يمثل مقدار الاستطالة المرصود (بالسنتيمتر) المتغير التابع y المشوب ببعض أخطاء القياس العشوائية. يتم تعريف المتجهات عبر كائنات np.array بالصيغة التالية:
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0], dtype=np.float64)
y = np.array([2.3, 4.5, 6.1, 8.4, 10.2, 12.8, 14.3, 16.5, 18.7, 21.1], dtype=np.float64)
يضمن تحديد النوع البياني dtype=np.float64 صراحة معالجة البيانات بأعلى درجات الدقة العددية المعيارية (Double Precision)، مما يمنع حدوث أي اقتطاع رقمي أثناء العمليات الحسابية المتتالية.
6.2 الخطوة الثانية: تنفيذ دالة np.linalg.lstsq واستخلاص المعلمات
بعد تجهيز متجهات البيانات، يتم بناء مصفوفة التصميم A ودمج عمود الثابت عبر إحدى الطرق التي فصلناها سابقاً، ثم يتم استدعاء دالة المربعات الصغرى وتمرير المدخلات مع ضبط بارامتر العتبة rcond=None:
A = np.vstack([x, np.ones(len(x))]).T
solution = np.linalg.lstsq(A, y, rcond=None)
تُرجع الدالة الصف الرباعي الكامل. لاستخلاص متجه المعلمات التقديرية المنفصل، نقوم بفهرسة العنصر الأول solution[0]، أو يمكن تفكيك المتغيرات مباشرة في سطر الاستدعاء البرمجي لتسهيل التعامل معها:
params, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
نظراً لأننا وضعنا المتغير المستقل x في العمود الأول وعمود الآحاد في العمود الثاني لمصفوفة التصميم A، فإن المتجه params سيحتوي على قيمتين مرتبين على النحو التالي:
m = params[0] # معامل الميل (Slope)
c = params[1] # نقطة التقاطع مع محور الصادات (Intercept)
يؤدي تنفيذ هذه الخطوة على بياناتنا التجريبية المفترضة إلى استخراج القيم المقدرة بدقة متناهية وسرعة فائقة.
6.3 الخطوة الثالثة: صياغة معادلة الخط المستقيم الأفضل مطابقة
بإتمام الحساب العددي واستخراج القيم العددية للمعلمات، تبلغ قيمة الميل المحسوبة لمثالنا التجريبي m ≈ 2.0824، وتبلغ قيمة نقطة التقاطع c ≈ 0.0333. تتيح هذه النتائج كتابة المعادلة التنبؤية النهائية للنموذج بصيغتها الرياضية الصريحة:
ŷ = 2.0824x + 0.0333
تجسد هذه المعادلة الخط المستقيم الفريد في الفضاء ثنائي الأبعاد الذي يحقق أدنى مجموع لمربعات الانحرافات الرأسية عن النقاط التجريبية المرصودة. يمكن الآن برمجة هذه المعادلة لتوليد القيم التنبؤية المقابلة لكافة نقاط العينة عبر الاستفادة من الحوسبة المتجهية المباشرة:
y_pred = m * x + c
أو باستخدام الضرب المصفوفي العام بين مصفوفة التصميم ومتجه المعلمات:
y_pred = A @ params # أو np.dot(A, params)
تُمثل مصفوفة y_pred الناتجة القيم المتوقعة للنموذج، وهي الخطوة التحضيرية الأساسية لحساب المؤشرات الإحصائية وتشخيص البواقي وتصور النتائج بيانياً.
7. التفسير الإحصائي والتحليلي لمخرجات الانحدار الخطّي
7.1 تفسير معامل الميل (Slope): المعنى التطبيقي والمعدل الهامشي
يحمل معامل الميل (Slope – m) دلالة تفسيرية جوهرية في التحليل الإحصائي التطبيقي، إذ يعبر عن “المعدل الهامشي للتغير” (Marginal Rate of Change). يحدد هذا المعامل مقدار الزيادة أو النقصان المتوقع في المتغير التابع y عند زيادة المتغير المستقل x بمقدار وحدة قياسية واحدة، مع افتراض ثبات كافة العوامل الأخرى. في سياق مثالنا التجريبي الفيزيائي، يشير الميل البالغ 2.0824 إلى أن إضافة وزن مقداره كيلوغرام واحد تؤدي في المتوسط إلى زيادة استطالة النابض بمقدار 2.0824 سنتيمتر، وهو ما يمثل الثابت التجريبي للصلابة المرنة للنظام.
توفر الإشارة الجبرية لمعامل الميل دلالة مباشرة على طبيعة العلاقة واتجاهها؛ فالإشارة الموجبة تعكس علاقة طردية تصاعدية، في حين تعكس الإشارة السالبة علاقة عكسية تنازلية. وتستند الفرضيات العلمية في أغلب التجارب إلى اختبار ما إذا كان هذا الميل يختلف جوهرياً عن الصفر الإحصائي (تأكيد وجود أثر حقيقي للمتغير المستقل) من خلال حساب قيمة t الإحصائية ومستوى الدلالة الاحتمالي (p-value).
ينبغي توخي الحذر الشديد والالتزام بالحدود المنهجية الصارمة عند تفسير معامل الميل، وتجنب التعميم خارج النطاق الفعلي للمشاهدات التجريبية، وهي المشكلة الإحصائية المعروفة باسم “مخاطر الاستقراد الخارجي” (Perils of Extrapolation). فالنموذج يظل صالحاً فقط داخل النطاق المقاس (من x = 1 إلى x = 10 في مثالنا)، ولا يمكن افتراض استمرار نفس السلوك الخطي عند قيم متطرفة قد تؤدي إلى تشوه فيزيائي في النابض وتجاوز حد المرونة التناسبية.
7.2 تفسير نقطة التقاطع مع محور الصادات (Intercept)
تمثل نقطة التقاطع مع محور الصادات (Intercept – c) القيمة العددية المتوقعة للمتغير التابع y عندما تنعدم تماماً قيمة المتغير المستقل (أي عندما تكون x = 0). من الناحية الهندسية، تمثل هذه القيمة النقطة التي يقطع عندها خط الانحدار المحور الرأسي في المخطط البياني الإحداثي.
يتباين التفسير العلمي لنقطة التقاطع بحسب السياق التجريبي المدروس؛ ففي بعض الحالات، تحمل نقطة التقاطع معنى واقعياً وفيزيائياً مباشراً، كما في مثالنا حيث تشير القيمة 0.0333 إلى الاستطالة الأولية للنابض تحت تأثير وزنه الذاتي قبل تطبيق أي أحمال إضافية، وتدل قيمتها القريبة جداً من الصفر على دقة المعايرة الصفرية للأداة. وفي حالات أخرى، قد لا يكون لقيمة المتغير المستقل صفر أي وجود واقعي (مثل قياس ضغط الدم لشخص وزنه صفر)، وفي تلك الحالات تُعامل نقطة التقاطع كمعلمة تعديل رياضي بحتة (Mathematical Baseline Constant) لتثبيت موقع الخط المستقيم في الفضاء دون تحميلها معنى فيزيائياً مباشراً.
لتسهيل التفسير الإحصائي لنقطة التقاطع في التطبيقات التي تفتقر إلى صفر واقعي، يلجأ المحللون إلى تقنية “مركزة البيانات” (Centering Data)، والتي تتضمن طرح المتوسط الحسابي من قيم المتغير المستقل (x - x̄) قبل إجراء الانحدار. يؤدي هذا التحويل الرياضي البسيط إلى جعل نقطة التقاطع الجديدة مساوية تماماً للوسط الحسابي للمتغير التابع ȳ، مما يمنحها دلالة إحصائية مباشرة وواضحة.
7.3 التنبؤ الإحصائي باستخدام معادلة الخط المستقيم الناتجة
يعد التنبؤ الاستدلالي أحد الأهداف المركزية لإجراء مطابقة المربعات الصغرى. يمكن توظيف معادلة الخط المستقيم الناتجة لتقدير استجابة النظام عند قيم جديدة للمتغير المستقل لم تكن مدرجة ضمن العينة الأصلية، وتنقسم هذه العملية إلى مسارين رئيسيين:
- الاستيفاء الداخلي (Interpolation): ويقصد به التنبؤ بقيم تقع داخل نطاق البيانات المرصودة (مثال: حساب الاستطالة المتوقعة لكتلة
x = 4.5 kg). يتمتع هذا التنبؤ بدرجة عالية جداً من الدقة والموثوقية الإحصائية نظراً لاستناد النموذج إلى بيانات محيطة تدعم استمرارية العلاقة الخطية المفترضة. - الاستقراد الخارجي (Extrapolation): ويقصد به التنبؤ بقيم تقع خارج حدود العينة المرصودة (مثال: تقدير الاستجابة لكتلة
x = 25.0 kg). يتسم هذا النوع بارتفاع درجات عدم اليقين والمخاطرة، لاحتمال تغير الطبيعة البنيوية للظاهرة خارج الحدود المرصودة.
لا يكتمل التنبؤ الإحصائي الرصين بتقديم تقدير نقطي مفرد (Point Prediction)، بل يتطلب حساب فترات الثقة (Confidence Intervals) لتقدير دقة الخط المتوسط، وفترات التنبؤ (Prediction Intervals) لتقدير النطاق المتوقع للمشاهدات الفردية المستقبلية، مع الأخذ في الاعتبار تباين المعلمات والتباين العشوائي غير المفسر المتبقي في النموذج.
8. تحليل المخرجات الإضافية لدالة lstsq: البواقي والرتبة والقيم المفردة
8.1 مجموع مربعات البواقي (Residual Sum of Squares – RSS)
يمثل العنصر الثاني في مخرجات دالة np.linalg.lstsq القيمة التراكمية لمجموع مربعات البواقي (Residual Sum of Squares – RSS أو SSE)، وهي القيمة الدقيقة لدالة الهدف التي قامت الخوارزمية بتقليلها إلى أدنى حد ممكن. رياضياً، تُعبر هذه القيمة عن:
RSS = ∑ eᵢ² = ∑ (yᵢ – ŷᵢ)²
في تطبيقنا التجريبي، تبلغ قيمة RSS المستخرجة من residuals[0] ما يقارب 0.2033. توفر هذه القيمة مقياساً مطلقاً للتباين غير المفسر داخل النموذج، وتُستخدم كمدخل أساسي لحساب التباين المتبقي غير المتحيز (Residual Variance – s²)، والذي يُحسب بقسمة RSS على درجات الحرية المتبقية (Degrees of Freedom):
s² = RSS / (n – p)
حيث يمثل n عدد المشاهدات (10)، ويمثل p عدد المعلمات المقدرة (2). يمثل الجذر التربيعي لهذه القيمة s = √(s²) ما يُعرف باسم “الخطأ المعياري للتقدير” (Standard Error of the Estimate)، والذي يقيس متوسط انحراف النقاط البيانية الفعلية عن خط الانحدار بوحدات قياس المتغير التابع الأصلية.
8.2 رتبة المصفوفة (Rank) والكشف عن التعدد الخطي
يوفر العنصر الثالث المستخرج من الدالة rank الرتبة المصفوفية الفعالة (Effective Numerical Rank) لمصفوفة التصميم A. تُعرف رتبة المصفوفة بأنها أقصى عدد من الأعمدة (أو الصفوف) المستقلة خطياً تماماً داخل المصفوفة. في حالة الانحدار الخطي البسيط بوجود متغير مستقل واحد وعمود ثابت، يجب أن تكون الرتبة مساوية تماماً للعدد 2، وهو ما يُعرف بحالة “المصفوفة كاملة الرتبة” (Full Rank Matrix).
إذا كانت الرتبة المحسوبة أقل من عدد الأعمدة (Rank < P)، فإن ذلك يشير إلى وجود مشكلة بنيوية خطيرة تتمثل في "التعدد الخطي التام" (Perfect Multicollinearity)، حيث يكون أحد المتغيرات التفسيرية ناتجاً عن تركيبة خطية تامة لمتغير آخر (مثل إدراج نفس المتغير بوحدتي قياس مختلفتين، أو السقوط في فخ المتغيرات الوهمية). في هذه الحالة، تصبح المصفوفة (AᵀA) شاذة وغير قابلة للانعكاس، وتستحيل الحلول الجبرية التقليدية.
تتعامل دالة np.linalg.lstsq بمرونة فائقة مع مصفوفات التصميم غير مكتملة الرتبة بفضل اعتمادها الداخلي على تفكيك القيم المفردة وحساب المعكوس شبه المعمم (Moore-Penrose Pseudoinverse)، حيث لا تتوقف الدالة عن العمل، بل تُرجع حلاً فريداً يمتلك أدنى معيار إقليدي للمتجه (Minimum Euclidean Norm Solution) من بين كافة الحلول الممكنة التي تحقق نفس المقدار من المربعات الصغرى.
8.3 القيم المفردة (Singular Values) واستقرار الحل العددي
يمثل العنصر الرابع المسترجع s متجه القيم المفردة (Singular Values) لمصفوفة التصميم، وهي الجذور التربيعية للقيم الذاتية للمصفوفة (AᵀA)، وتُعرض مرتبة تنازلياً σ₁ ≥ σ₂ ≥ ... ≥ σₚ > 0. يعكس هذا المتجه البنية الطيفية والهندسية للمصفوفة ويوفر مؤشراً بالغ الحساسية لتقييم الاستقرار العددي لنظام المعادلات الخطية.
يُستخدم متجه القيم المفردة لحساب “رقم حالة المصفوفة” (Condition Number – κ)، والذي يُعرف رياضياً بأنه النسبة بين أكبر قيمة مفردة وأصغر قيمة مفردة في المصفوفة:
κ(A) = σ_max / σ_min = s[0] / s[-1]
يحدد رقم الحالة مدى حساسية معاملات الانحدار المقدرة للاضطرابات الطفيفة أو أخطاء التقريب والفاصلة العائمة في البيانات المدخلة؛ فإذا كان رقم الحالة صغيراً (قريباً من الواحد الصحيح أو في حدود العشرات)، تُوصف المصفوفة بأنها “جيدة الشروط” (Well-conditioned)، مما يضمن استقراراً وثباتاً رياضياً عالياً للحلول. أما إذا كان رقم الحالة كبيراً جداً (يتجاوز 1000 أو يقترب من حدود دقة الآلة)، فإن المصفوفة تُعد “رديئة الشروط” (Ill-conditioned)، مما ينذر بأن أدنى تغيير طفيف في البيانات التجريبية قد يؤدي إلى تقلبات عاصفة وتغيرات جذرية في قيم معاملات الانحدار المحسوبة.
9. تقييم جودة النموذج: قياسات الدقة الإحصائية وحساب معامل التحديد R²
9.1 تفكيك تباين البيانات: SST وSSR وSSE
يستند التقييم الإحصائي المعياري لجودة نموذج المربعات الصغرى إلى النظرية الأساسية في تحليل التباين (ANOVA)، والتي تنص على تفكيك التباين الإجمالي في المتغير التابع إلى جزأين متمايزين: تباين مفسر بواسطة النموذج الخطي، وتباين متبقٍ غير مفسر ناتج عن الأخطاء العشوائية. يتم التعبير عن هذا التفكيك عبر المعادلة التربيعية الشهيرة:
SST = SSR + SSE
تُعرف هذه المكونات الإحصائية رياضياً على النحو التالي:
- مجموع المربعات الكلي (Total Sum of Squares – SST): يقيس إجمالي التشتت والتباين في قيم المتغير التابع الفعلية حول وسطها الحسابي العام:
SST = ∑ (yᵢ – ȳ)²
ويعكس هذا المقدار إجمالي الطاقة التباينية في النظام قبل تطبيق النموذج التفسيري. - مجموع مربعات الانحدار (Regression Sum of Squares – SSR): يقيس مقدار التباين الذي نجح النموذج الخطي في تفسيره وتحديده بدقة:
SSR = ∑ (ŷᵢ – ȳ)²
ويعكس التحسن الذي أضافه النموذج مقارنة باستخدام الوسط الحسابي البسيط كأداة تنبؤ. - مجموع مربعات الأخطاء (Sum of Squared Errors – SSE): يقيس التباين المتبقي غير المفسر الذي فشل النموذج في استيعابه:
SSE = ∑ (yᵢ – ŷᵢ)²
وهو المقدار المطابق لـ RSS المستخرج من دالة المربعات الصغرى.
9.2 حساب وبرمجة معامل التحديد (R-squared) خطوة بخطوة
يمثل معامل التحديد (Coefficient of Determination – R²) المقياس الإحصائي الأكثر استخداماً لتقييم القدرة التفسيرية للنموذج الخطي. يعبر R² عن النسبة المئوية للتباين في المتغير التابع التي تمكنت المتغيرات المستقلة من تفسيرها عبر النموذج. يُعرف رياضياً بالصيغة التالية:
R² = 1 – (SSE / SST) = SSR / SST
تتراوح قيمة R² في نماذج الانحدار الخطي المشتملة على حد ثابت بين 0 و 1 (أو بين 0% و 100%)؛ حيث تشير القيمة 1 إلى مطابقة تامة يمر فيها الخط بجميع النقاط دون أي خطأ، بينما تشير القيمة 0 إلى فشل النموذج في تقديم أي تفسير إضافي يفوق التنبؤ بالوسط الحسابي البسيط.
يمكن حساب معامل التحديد برمجياً في بايثون باستخدام مصفوفات NumPy بالخطوات البسيطة التالية:
y_mean = np.mean(y)
sst = np.sum((y - y_mean) ** 2)
sse = np.sum((y - y_pred) ** 2) # أو استخدام residuals[0] مباشرة
r_squared = 1.0 - (sse / sst)
في مثالنا التجريبي، تبلغ قيمة R² المحسوبة ما يقارب 0.9994 (أي 99.94%)، مما يعكس مطابقة استثنائية ودقة تنبؤية فائقة للنموذج المطبق. وفي نماذج الانحدار المتعدد، يفضل الاعتماد على “معامل التحديد المعدل” (Adjusted R²) الذي يعاقب على إضافة متغيرات تفسيرية غير ذات جدوى عبر تعديل القيمة بناءً على درجات الحرية:
R²_adj = 1 – [ (SSE / (n – p)) / (SST / (n – 1)) ]
9.3 مقاييس الخطأ القياسية: MSE وRMSE وMAE
بالإضافة إلى المقاييس النسبية كمعامل التحديد، يعتمد تقييم دقة النموذج على المقاييس المطلقة للأخطاء التي تعبر عن حجم الانحرافات بوحدات القياس الفيزيائية للظاهرة المدروسة. تشمل أهم هذه المقاييس:
- متوسط مربعات الأخطاء (Mean Squared Error – MSE): يمثل متوسط مجموع مربعات الفروق، ويُحسب بالصيغة:
mse = np.mean((y - y_pred) ** 2)
يمتاز بحساسيته العالية للأخطاء الكبيرة بسبب عملية التربيع. - جذر متوسط مربعات الأخطاء (Root Mean Squared Error – RMSE): يمثل الجذر التربيعي لمقياس MSE:
rmse = np.sqrt(mse)
يتميز RMSE بإعادة التعبير عن الخطأ بنفس وحدة قياس المتغير التابع الأصلي، مما يجعله سهل التفسير الفوري للباحثين وصناع القرار. - متوسط الخطأ المطلق (Mean Absolute Error – MAE): يمثل متوسط القيم المطلقة للبواقي الفردية:
mae = np.mean(np.abs(y - y_pred))
يتميز MAE بأنه مقياس متين (Robust) وأقل حساسية وتأثراً بوجود القيم الشاذة المتطرفة (Outliers) مقارنة بـ RMSE.
يساعد الجمع المنهجي بين هذه المؤشرات في تكوين رؤية تشخيصية متكاملة لمدى دقة النموذج الرياضي وجودته التنبؤية.
10. التمثيل البياني الشامل لمطابقة المربعات الصغرى باستخدام Matplotlib
10.1 رسم مخطط التشتت (Scatter Plot) للنقاط الأصلية
يمثل التصور البياني الخطوة المحورية لتأكيد النتائج الرقمية بصرياً وفحص التوزيع الهندسي للبيانات. يُستخدم مخطط التشتت (Scatter Plot) لإسقاط النقاط التجريبية في الفضاء الإحداثي ثنائي الأبعاد، مما يسمح بالتحقق المبدئي من صحة افتراض الخطية ورصد أي انحرافات غير نمطية أو قيم شاذة قبل اعتماد النموذج النهائي.
يتم تجهيز بيئة الرسم البياني عبر استدعاء الوحدة الفرعية matplotlib.pyplot وضبط المقاييس الجمالية والتسميات التوضيحية عبر الأوامر البرمجية التالية:
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10, 6), dpi=300)
ax.scatter(x, y, color='#1f77b4', edgecolor='black', s=80, alpha=0.85, label='المشاهدات التجريبية (Data Points)', zorder=3)
ax.set_xlabel('الكتلة المطبقة (kg)', fontsize=12, fontweight='bold')
ax.set_ylabel('مقدار الاستطالة (cm)', fontsize=12, fontweight='bold')
ax.set_title('مطابقة المربعات الصغرى لبيانات استطالة النابض', fontsize=14, fontweight='bold')
ax.grid(True, linestyle='--', alpha=0.6, zorder=0)
تضمن هذه الإعدادات إخراجاً بيانياً احترافياً يرقى للمعايير الأكاديمية الصارمة للنشر العلمي.
10.2 إسقاط خط الانحدار الأمثل على فضاء البيانات
تتمثل الخطوة البيانية التالية في رسم خط الانحدار الخطي المقدر فوق سحابة النقاط التجريبية. لضمان رسم خط فائق النعومة والاستمرارية وتجنب أي تشوهات بصرية، خاصة عند التعامل مع نماذج غير خطية أو بيانات غير مرتبة، يُفضل توليد مجال متجهي كثيف لنقاط المتغير المستقل باستخدام دالة np.linspace:
x_line = np.linspace(np.min(x), np.max(x), 200)
y_line = m * x_line + c
يتم إسقاط الخط على نفس المخطط البياني بلون مميز وسماكة واضحة، مع تضمين المعادلة الرياضية المحسوبة وقيمة معامل التحديد R² داخل صندوق وسيلة الإيضاح (Legend):
label_text = f'خط المطابقة: ŷ = {m:.3f}x + {c:.3f} (R² = {r_squared:.4f})'
ax.plot(x_line, y_line, color='#d62728', linewidth=2.5, linestyle='-', label=label_text, zorder=2)
ax.legend(loc='upper left', frameon=True, shadow=True, fontsize=11)
plt.tight_layout()
plt.show()
يتيح هذا التراكب البصري معاينة فورية لمدى التصاق الخط بالنقاط التجريبية، والتأكد من توازن توزع المشاهدات على جانبي الخط التقديري.
10.3 تمثيل البواقي بيانيًا (Residual Plots) لتشخيص الافتراضات
لا يكتمل التحليل البياني لنموذج المربعات الصغرى دون رسم “مخطط تشخيص البواقي” (Residual Plot). يُعد هذا المخطط الأداة الحاسمة للكشف عن أي انتهاكات للفرضيات الإحصائية الأساسية للنموذج. يتم إنشاء المخطط برسم قيم البواقي residuals = y - y_pred على المحور الرأسي مقابل القيم التنبؤية y_pred أو قيم المتغير المستقل x على المحور الأفقي، مع رسم خط مرجعي أفقي عند مستوى الصفر y = 0.
يوفر التوزيع البصري للبواقي مؤشرات تشخيصية حاسمة على النحو التالي:
- النمط العشوائي المثالي (Ideal Random Pattern): إذا كانت نقاط البواقي تتوزع بشكل عشوائي تماماً ومتجانس حول خط الصفر دون تشكيل أي أنماط هندسية مميزة، فإن ذلك يؤكد صحة النموذج واستيفاء فرضية الخطية وثبات التباين.
- عدم تجانس التباين (Heteroscedasticity): إذا اتخذت البواقي شكلاً قمعياً (Funnel Shape) حيث يتسع تشتت النقاط تدريجياً مع تزايد قيم المتغير، فإن ذلك يشير إلى عدم ثبات تباين الأخطاء، مما يستلزم استخدام تقنيات متقدمة مثل المربعات الصغرى الموزونة (WLS) أو تحويلات Box-Cox.
- الأنماط غير الخطية (Nonlinear Patterns): إذا شكلت البواقي نمطاً منحنياً واضحاً (مثل قطع مكافئ أو حرف U)، فإن ذلك يثبت أن العلاقة الحقيقية بين المتغيرات تتضمن انحناءات غير خطية لم يستوعبها الخط المستقيم، مما يستوجب الانتقال إلى نماذج متعددة الحدود أو نماذج غير خطية.
11. تطبيقات متقدمة: الانحدار المتعدد والحدودي باستخدام np.linalg.lstsq
11.1 مطابقة الانحدار الخطي المتعدد (Multiple Linear Regression)
تتجلى القوة الحقيقية لدالة np.linalg.lstsq عند الانتقال من الانحدار البسيط إلى نماذج الانحدار الخطي المتعدد (Multiple Linear Regression)، حيث يُفترض أن المتغير التابع يتأثر بمجموعة من المتغيرات المستقلة المتعددة (X₁, X₂, …, Xₖ). تأخذ المعادلة الرياضية للنموذج المتعدد الصيغة التالية:
y = β₀ + β₁x₁ + β₂x₂ + … + βₖxₖ + ε
لتطبيق هذا النموذج برمجياً في NumPy، يتم توسيع مصفوفة التصميم A لتشمل كافة أعمدة المتغيرات المستقلة مضافاً إليها عمود الآحاد. بافتراض وجود مصفوفة بيانات X ذات أبعاد (N, K)، يتم بناء مصفوفة التصميم عبر:
A = np.column_stack([X, np.ones(len(X))])
params, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
يُرجع متجه params الناتج كافة المعاملات الجزئية (Partial Regression Coefficients) مرتبة بالتناظر: [β̂₁, β̂₂, ..., β̂ₖ, β̂₀]. يمثل كل معامل في هذا النموذج الأثر الهامشي المنفصل للمتغير المستقل المناظر على المتغير التابع، مع “تثبيت وضبط التأثير الإحصائي لكافة المتغيرات الأخرى في النموذج” (Ceteris Paribus)، وهو ما يمنح الانحدار المتعدد قوة تحليلية فائقة في الدراسات المعقدة متداخلة العوامل.
11.2 مطابقة الانحدار متعدد الحدود (Polynomial Regression)
تتميز نماذج الانحدار متعدد الحدود (Polynomial Regression) بقدرتها على نمذجة العلاقات المنحنية وغير الخطية المعقدة بين المتغيرات، مع البقاء ضمن الإطار النظري للمربعات الصغرى الخطية. يرجع ذلك إلى أن النموذج يظل “خطياً بالنسبة للمعلمات β” رغم كونه غير خطي بالنسبة للمتغير x:
y = β₀ + β₁x + β₂x² + β₃x³ + … + β_d x^d + ε
تُبنى مصفوفة التصميم في هذه الحالة عبر رفع متجه المتغير المستقل x إلى قوى أسية متتالية [x⁰, x¹, x², ..., x^d]، وهو ما يُعرف في الجبر الخطي باسم “مصفوفة فانديرموند” (Vandermonde Matrix). توفر مكتبة NumPy دالة مخصصة فائقة الكفاءة لبناء هذه المصفوفة وهي np.vander:
degree = 3 # درجة متعدد الحدود
A = np.vander(x, N=degree + 1, increasing=True)
params, residuals, rank, s = np.linalg.lstsq(A, y, rcond=None)
تتيح المعلمة increasing=True ترتيب القوى تصاعدياً بدءاً من x⁰ = 1 (عمود الثابت) وصولاً إلى x^d. ينبغي التعامل بحذر بالغ مع درجات الحدود المرتفعة لتجنب مشكلة “الإفراط في التخصيص” (Overfitting) وظاهرة رونج (Runge’s Phenomenon)، حيث يحقق النموذج مطابقة مثالية على بيانات التدريب لكنه يفشل فشلاً ذريعاً في التنبؤ بنقاط جديدة ويعاني من تذبذبات حادة عند الأطراف.
11.3 التعامل مع المشكلات العددية: التعدد الخطي والمصفوفات الشاذة
تواجه الحسابات العددية لمطابقة المربعات الصغرى تحديات جسيمة عند التعامل مع مصفوفات التصميم “رديئة الشروط” (Ill-conditioned Matrices) الناتجة عن وجود ارتباطات قوية وشبه تامة بين المتغيرات التفسيرية (High Multicollinearity). في مثل هذه البيئات الحسابية، تصبح الطرق التقليدية المعتمدة على الحل المباشر للمعادلات الطبيعية عبر معكوس المصفوفة (AᵀA)⁻¹ غير مستقرة عددياً وتؤدي إلى تضخيم كارثي للأخطاء التقريبية.
تتغلب دالة np.linalg.lstsq على هذه المعضلة الحسابية من خلال تفادي الحساب المباشر للمعكوس (AᵀA)⁻¹، والاعتماد بدلاً من ذلك على خوارزمية تفكيك القيم المفردة المقسمة (Divide-and-Conquer SVD Driver – dgelsd في حزمة LAPACK). تقوم هذه الخوارزمية بتفكيك المصفوفة إلى جداء ثلاث مصفوفات متعامدة A = U Σ Vᵀ، مما يسمح بحساب المعكوس شبه المعمم بدقة متناهية وتصفير القيم المفردة غير المستقرة التي تقل عن عتبة rcond بأمان تام.
علاوة على ذلك، يُعد تطبيق “تحجيم المتغيرات وتقييسها” (Feature Scaling and Standardization) عبر تحويل Z-score (x - μ) / σ خطوة وقائية جوهرية قبل بناء مصفوفة التصميم في النماذج المتعددة والحدودية. يضمن التقييس توحيد النطاقات العددية لجميع المتغيرات، مما يخفض رقم حالة المصفوفة بشكل دراماتيكي ويمنع الهيمنة العددية للمتغيرات ذات القيم المطلقة الكبيرة، مما يحقق أعلى درجات الاستقرار والموثوقية للحلول الرياضية.
12. أفضل الممارسات البرمجية، المقارنة الشاملة، وخلاصة التوصيات
12.1 أفضل الممارسات لكتابة كود مطابقة فعال وخالٍ من الأخطاء
يتطلب إنتاج برمجيات علمية موثوقة وقابلة للتطوير في بيئة بايثون الالتزام بمجموعة من القواعد البرمجية الصارمة عند تنفيذ مطابقة المربعات الصغرى:
- فحص جودة البيانات والتعامل مع القيم المفقودة: يجب التأكد التام من خلو المصفوفات من القيم المفقودة (
np.nan) والقيم اللانهائية (np.inf) قبل تمريرها للدوال الخطية؛ حيث تؤدي أي قيمة شاذة من هذا النوع إلى إرجاع مصفوفات مليئة بالـ NaNs دون إظهار أخطاء واضحة في بعض الأحيان. يمكن التحقق باستخدامnp.isnan(A).any()وnp.isinf(A).any(). - التوثيق الصريح للأبعاد وفحص الأشكال: يُنصح بكتابة تأكيدات برمجية صريحة (Assertions) للتحقق من تطابق الأبعاد قبل المعالجة:
assert A.shape[0] == b.shape[0], "عدم تطابق عدد صفوف مصفوفة التصميم مع متجه الاستجابة" - كتابة كود معياري ونظيف (Modular Clean Code): يفضل تغليف خطوات بناء المصفوفة، واستدعاء المطابقة، وحساب مؤشرات الدقة (R², RMSE) داخل دوال مخصصة (Custom Functions) ذات توثيق نوعي (Type Hinting) ومخرجات واضحة لتعزيز إعادة الاستخدام في المشاريع المستقبلية.
- إدارة استهلاك الذاكرة في البيانات الضخمة: عند التعامل مع مجموعات بيانات عملاقة، يجب تجنب إنشاء نسخ وسيطة مكررة من المصفوفات (Unnecessary Copies)، واستخدام العرض المرجعي للذاكرة (Views)، واختيار النوع العددي الأنسب (مثل
float32بدلاً منfloat64إذا كانت دقة البيانات التجريبية تسمح بذلك لتوفير نصف استهلاك الذاكرة).
12.2 مقارنة شاملة بين NumPy وSciPy وScikit-Learn في المربعات الصغرى
يوضح الجدول المقارن التالي الفروق الجوهرية والخصائص التقنية بين الأدوات الرئيسية الثلاث لتنفيذ المربعات الصغرى في بايثون، لمساعدة المطور في اتخاذ القرار الهندسي الأمثل:
| المعيار التقني | NumPy (np.linalg.lstsq) | SciPy (scipy.linalg.lstsq) | Scikit-Learn (LinearRegression) |
|---|---|---|---|
| الخوارزمية الحسابية | LAPACK SVD (driver dgelsd) |
خيارات متعددة (gelsd, gelss, gelsy) |
تلتف داخلياً حول scipy.linalg.lstsq |
| السرعة واستهلاك الموارد | أقصى سرعة وأدنى استهلاك ذاكرة | سرعة فائقة مع تحكم أدق بالخوارزمية | أبطأ قليلاً بسبب الطبقات البرمجية الإضافية |
| بناء عمود الثابت | يدوي (يتطلب إضافة عمود الآحاد) | يدوي (يتطلب إضافة عمود الآحاد) | تلقائي عبر البارامتر fit_intercept=True |
| التقارير والمؤشرات الملحقة | البواقي، الرتبة، القيم المفردة | البواقي، الرتبة، القيم المفردة | المعاملات ودرجة R² فقط عبر دوال منفصلة |
| حالات الاستخدام المثالية | الحوسبة العلمية الخالصة والبرمجيات الخفيفة | المسائل التي تتطلب تحكماً متقدماً بـ LAPACK | تدفقات تعلم الآلة والتحقق المتقاطع |
يُنصح باختيار NumPy كخيار افتراضي مطلق في مشاريع الحوسبة العلمية والهندسية التي تتطلب أداءً فائقاً وتطبيقات مستقلة الاعتماديات. في حين يُنصح بالانتقال إلى مكتبة Statsmodels عند الحاجة إلى تقارير إحصائية شمولية تتضمن قيم p-values وفترات الثقة التفصيلية واختبارات الفرضيات المتقدمة، وإلى مكتبة Scikit-Learn عند بناء نماذج التعلم التنبؤي وتدفقات الإنتاج الصناعي.
12.3 خلاصة المنهجية وخارطة طريق التعلم الإحصائي الحسابي
تمثل مطابقة المربعات الصغرى باستخدام مكتبة NumPy نقطة التقاء فريدة بين النظرية الرياضية الأنيقة والكفاءة البرمجية الرقمية. إن إتقان هذه الأداة لا يتطلب فقط حفظ التوقيع البرمجي للدوال، بل يستند بالأساس إلى فهم عميق للجبر الخطي الكامن خلف مصفوفات التصميم، والمعادلات الطبيعية، وتفكيك القيم المفردة، والقدرة على التشخيص الإحصائي الرصين لمخرجات النمذجة.
تخدم هذه المنهجية الحسابية طيفاً لا محدوداً من التطبيقات في مختلف الميادين؛ بدءاً من معايرة الحساسات والأجهزة في العلوم الفيزيائية والكيميائية، مروراً بتحليل السلوكيات وتأثير المتغيرات في القياس النفسي والعلوم السلوكية، وصولاً إلى التنبؤ بالطلب وتحليل السلاسل الزمنية في الأسواق المالية والأنظمة الصناعية المعقدة.
يفتح استيعاب الأسس المتينة للمربعات الصغرى في NumPy الباب واسعاً أمام الباحثين والمطورين للانطلاق بثقة نحو فضاءات التعلم الإحصائي المتقدم؛ بما في ذلك نماذج الانحدار المعاقب والمنتظم (Ridge and Lasso Regression)، ونماذج الانحدار الخطي المعمم (GLM)، وطرق الاستمثال غير الخطية المعقدة، مما يرسخ دور بايثون كبيئة حوسبية لا غنى عنها في مسيرة الابتكار العلمي والتقني المعاصر.
خاتمة
استعرض هذا المقال دليلاً شاملاً وتفصيلياً لإجراء مطابقة المربعات الصغرى في بايثون باستخدام مكتبة NumPy. لقد قمنا بتفكيك الأسس الجبرية للنظام الخطي، وتحليل التركيب البرمجي لدالة np.linalg.lstsq، وبيان الكيفية الهندسية لبناء مصفوفات التصميم واستخلاص المعلمات وتفسيرها إحصائياً وفيزيائياً، مع تغطية المقاييس المعيارية لتقييم النماذج وتشخيص افتراضاتها بصرياً عبر مكتبة Matplotlib.
إن الانتقال الواعي من الصياغة النظرية للمعادلات الرياضية إلى التطبيق البرمجي المتجهي عالي الأداء يمثل السمة الفارقة للممارس المتميز في علوم البيانات والحوسبة العلمية. إن الجمع بين الدقة العددية التي توفرها خوارزميات LAPACK المدمجة في NumPy والفهم النقدي للافتراضات الإحصائية يضمن بناء نماذج تنبؤية وتفسيرية تتسم بالصلابة الرياضية، والموثوقية التحليلية، والجاهزية لمعالجة أعقد مشكلات العالم الواقعي بكفاءة واقتدار.
References
- Gauss, C. F. (1809). Theoria motus corporum coelestium in sectionibus conicis solem ambientium. Perthes et Besser.
- Legendre, A. M. (1805). Nouvelles méthodes pour la détermination des orbites des comètes. F. Didot.
- Harris, C. R., Millman, K. J., van der Walt, S. J., Gommers, R., Virtanen, P., Cournapeau, D., … & Oliphant, T. E. (2020). Array programming with NumPy. Nature, 585(7825), 357-362. https://doi.org/10.1038/s41586-020-2649-2
- Strang, G. (2016). Introduction to Linear Algebra (5th ed.). Wellesley-Cambridge Press.
- Montgomery, D. C., Peck, E. A., & Vining, G. G. (2021). Introduction to Linear Regression Analysis (6th ed.). John Wiley & Sons.
- Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., … & SciPy 1.0 Contributors. (2020). SciPy 1.0: Fundamental algorithms for scientific computing in Python. Nature Methods, 17(3), 261-272. https://doi.org/10.1038/s41592-019-0686-2
- Hunter, J. D. (2007). Matplotlib: A 2D graphics environment. Computing in Science & Engineering, 9(3), 90-95. https://doi.org/10.1109/MCSE.2007.55
- Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations (4th ed.). Johns Hopkins University Press.
- Anderson, E., Bai, Z., Bischof, C., Blackford, S., Demmel, J., Dongarra, J., … & Sorensen, D. (1999). LAPACK Users’ guide (3rd ed.). Society for Industrial and Applied Mathematics. https://www.netlib.org/lapack/lug/
- NumPy Developers. (2024). numpy.linalg.lstsq API Reference Manual (v1.26). NumPy Documentation. https://numpy.org/doc/stable/reference/generated/numpy.linalg.lstsq.html