العمود الفقري للتنبؤ بالـ time series
الـ ARIMA — الـ AutoRegressive Integrated Moving Average model (نموذج المتوسط المتحرك التكاملي الانحداري الذاتي) — هو أكتر فئة models بتستخدم في التنبؤ بالـ time series. بيوحّد 3 أفكار: الـ autoregression (التنبؤ من القيم اللي فاتت)، والـ differencing (عشان نوصل للـ stationarity)، والـ moving average (model لأخطاء التنبؤ اللي فاتت). والمكوّنات التلاتة دي مع بعض بتتعامل مع مدى واسع من الـ time series الحقيقية اللي فيها trend وautocorrelation.
بوكس وجنكينز طوّروا في أوائل السبعينات طريقة منظمة عشان يحددوا الـ ARIMA models ويقدّروها ويتأكدوا منها باستخدام رسومات الـ ACF والـ PACF. ورغم ظهور الـ machine learning، الـ ARIMA models ونسخها لسه benchmark منافس في مهام تنبؤ كتير، خصوصًا مع السلاسل القصيرة أو لما قابلية التفسير تبقى مهمة جدًا.
AR(p) — الـ autoregression: القيمة الحالية معتمدة على p قيمة فاتت.
I(d) — الـ integration: d مرة differencing عشان نوصل للـ stationarity.
MA(q) — الـ moving average: القيمة الحالية معتمدة على q خطأ تنبؤ فات.
ARIMA(p, d, q) = AR(p) + d مرة differencing + MA(q)الـ autoregressive model AR(p)
الـ autoregressive model من الدرجة p بيتنبأ بالقيمة الحالية كـ linear combination لآخر p قيمة فاتت ومعاها white noise. الفكرة إن العملية ليها ذاكرة: قيمة النهارده بتتأثر باللي حصل امبارح وأول امبارح ولحد p يوم قبل كده.
الـ AR(1) model — أبسط حالة — بيقول إن قيمة النهارده بتساوي φ مرة قيمة امبارح ومعاها noise. لو |φ| < 1، السلسلة stationary. ولو φ = 1، يبقى عندنا random walk مش stationary. والـ AR processes الـ stationary بتتميز بـ ACF بتقل بشكل هندسي وPACF بتقطع فجأة بعد الـ lag p.
الـ moving average model MA(q)
الـ moving average model من الدرجة q بيعمل model للقيمة الحالية كـ linear combination من صدمات الـ white noise الحالية والـ q اللي فاتوا (أخطاء التنبؤ). وعلى عكس الـ AR model، ذاكرة الـ MA model محدودة: أثر الصدمة بيختفي خالص بعد q فترة.
الـ MA processes دايمًا stationary لأي q محدود. والـ ACF بتاعتها بتقطع فجأة بعد الـ lag q — بصمة مميزة بتخلّي التعرّف عليها سهل في التطبيق. أما الـ PACF فبتقل بالتدريج.
الـ ARMA(p, q) model: الجمع بينهم
الـ ARMA(p, q) model بيجمع الـ autoregression والـ moving average. كتير الـ time series الحقيقية بتتمثّل باختصار أكتر لو خلطت عدد صغير من حدود الـ AR والـ MA بدل ما تستخدم AR أو MA صافي ودرجته عالية. ومبدأ الـ parsimony — إنك تفضّل الـ models الأبسط — بيرجّح الـ ARMA على الـ models الصافية العالية الدرجة.
الـ differencing ومكوّن الـ integration
كتير السلاسل الحقيقية بيبقى فيها trend فبتبقى مش stationary. والـ ARMA models محتاجة stationarity. والحل هو الـ differencing: إنك تطرح كل مشاهدة من اللي قبلها. مرة differencing واحدة بتشيل الـ trend الخطي؛ ومرتين بيشيلوا الـ trend التربيعي. وعدد مرات الـ differencing اللازمة هو القيمة d في ARIMA(p, d, q).
الـ Augmented Dickey-Fuller (ADF) test (اختبار ديكي-فولر الموسّع) هو الاختبار الإحصائي القياسي لعدم الـ stationarity. نتيجة ADF significant (p-value < 0.05) بتشاور إن السلسلة stationary؛ أما النتيجة اللي مش significant فبتشاور إنك لازم تعمل differencing. وبعد الـ differencing، اعمل الاختبار تاني لحد ما الـ stationarity تتأكد.
الـ ARIMA(p, d, q) model
الـ ARIMA model الكامل بيطبّق ARMA(p, q) على السلسلة بعد ما تعمل differencing ليها d مرة. وفي التطبيق، d تقريبًا دايمًا 0 أو 1 أو 2؛ وأغلب السلاسل الحقيقية بتكفيها مرة differencing واحدة.
ARIMA(1,1,0): AR(1) على السلسلة بعد الـ differencing — اختيار بسيط وقوي لسلاسل اقتصادية كتير.
ARIMA(0,1,1): MA(1) على السلسلة بعد الـ differencing — مكافئ للـ simple exponential smoothing.
ARIMA(0,2,2): MA(2) على السلسلة بعد differencing مرتين — مكافئ لطريقة Holt للـ trend الخطي.
ARIMA(1,0,0): AR(1) process stationary — مناسب لما d=0 والـ PACF بتقطع بعد الـ lag 1.
تحديد الـ model: منهجية Box-Jenkins
بوكس وجنكينز اقترحوا دورة منهجية من 3 مراحل عشان تعمل fit للـ ARIMA models: الـ identification (التحديد)، والـ estimation (التقدير)، والـ diagnostic checking (الفحص التشخيصي).
الـ identification: استخدم رسومات الـ ACF والـ PACF للسلسلة (بعد الـ differencing) عشان تحدد p وq. PACF بتقطع بعد الـ lag p مع ACF بتقل بالتدريج بتقترح AR(p). وACF بتقطع بعد الـ lag q مع PACF بتقل بالتدريج بتقترح MA(q). والاتنين بيقلّوا بالتدريج بتقترح ARMA. واستخدم اختبار ADF عشان تحدد d.
الـ estimation: الـ fit بيتعمل بالـ maximum likelihood (الإمكان الأعظمي). والبرامج الحديثة (statsmodels في Python، وforecast في R) بتعمل ده أوتوماتيك. وقارن الـ models المتنافسة بالـ information criteria — الـ AIC والـ BIC الاتنين بيعاقبوا تعقيد الـ model وده بيساعد تتجنب الـ overfitting.
الـ diagnostic checking: افحص الـ residuals بتاعة الـ model المتظبّط. لازم تبان white noise: مفيش autocorrelation (اتأكد بالـ Ljung-Box test)، وتوزيع قريب من الـ normal، وvariance ثابت. ولو فضلت أنماط باينة، يبقى الـ model متحدد غلط ولازم تعيد الدورة.
الـ seasonal model SARIMA
سلاسل حقيقية كتير فيها أنماط موسمية — دورات شهرية أو ربع سنوية أو أسبوعية. والـ SARIMA(p, d, q)(P, D, Q)m model بيكبّر الـ ARIMA بمكوّن موسمي بيشتغل عند الفترة m. الحروف الكبيرة (P, D, Q) بتوصف الـ order الموسمي للـ AR والـ differencing الموسمي والـ order الموسمي للـ MA؛ والحروف الصغيرة (p, d, q) بتوصف الجزء اللي مش موسمي.
SARIMA(1,1,1)(1,1,1)12 معناه: AR(1) مش موسمي، وdifferencing مرة، وMA(1)، زائد AR(1) موسمي، وdifferencing موسمي مرة، وMA(1) موسمي، وكلهم عند الفترة m=12 (بيانات شهرية).
الـ seasonal difference بيشيل الـ seasonality السنوية: ∇12Yₜ = Yₜ − Yₜ₋₁₂.
تحديد الـ SARIMA model بيمشي على نفس منطق الـ ARIMA، بس بتبص على الـ ACF والـ PACF عند الـ lags الموسمية (مضاعفات m) زيادة على الـ lags اللي مش موسمية. والقمم الموسمية في الـ ACF عند الـ lags 12 و24 و36 في البيانات الشهرية دليل واضح إنك محتاج مكوّن موسمي.
- الـ ARIMA(p, d, q) بيجمع p حد autoregressive، وd مرة differencing، وq حد moving average في model واحد موحّد.
- الـ AR processes بتتميز بـ ACF بتقل بالتدريج وPACF بتقطع بعد الـ lag p؛ والـ MA processes بتدّي البصمة المعكوسة.
- الـ differencing (d) بيتطبّق لحد ما اختبار ADF يأكد الـ stationarity؛ وd=1 بيكفي أغلب السلاسل الحقيقية.
- دورة Box-Jenkins — الـ identification بالـ ACF/PACF، والـ estimation بالـ maximum likelihood، وفحص الـ residuals عشان تتأكد إنها white noise — هي الطريقة القياسية.
- الـ AIC والـ BIC بيوازنوا بين جودة الـ fit وتعقيد الـ model؛ فضّل دايمًا الـ model الأبسط اللي بيفسّر البيانات كفاية.
- الـ SARIMA بيزوّد طبقة موسمية (P, D, Q)m عشان يتعامل مع الأنماط الدورية زي الدورات الشهرية والفصلية.