26 يونيو، 2025
لغات البرمجة

تحليل السلاسل الزمنية باستخدام بايثون: دليلك الشامل للتنبؤ بالبيانات مع ARIMA وProphet

المقدمة: لماذا تُعد السلاسل الزمنية مهمة جدًا؟

في زمنٍ تحكمه البيانات، من الذكاء ألا نكتفي بفهم الماضي، بل نتوقع المستقبل.
سواء كنت تدير متجرًا إلكترونيًا، تتعقب سوق الأسهم، أو تحلل زيارات موقعك – فإن تحليل السلاسل الزمنية (Time Series Analysis) هو أحد أكثر الأدوات فعالية للتنبؤ واتخاذ قرارات دقيقة.

ولأن Python هي اللغة الأولى لعلم البيانات، توفّر مكتبات قوية تساعدك على فهم الأنماط الزمنية والتنبؤ بها بسهولة. في هذا المقال، ستتعرف على كيفية تحليل السلاسل الزمنية باستخدام ARIMA وProphet – أشهر نموذجين لتوقع الاتجاهات المستقبلية بدقة عالية.


ما هي السلاسل الزمنية؟

تعريف بسيط:

السلسلة الزمنية هي مجموعة من القيم التي يتم تسجيلها بترتيب زمني منتظم. مثل:

  • عدد المبيعات اليومية
  • درجة الحرارة الشهرية
  • عدد الزوار للموقع أسبوعيًا

أهميتها:

  • معرفة الاتجاه العام (Trend)
  • فهم التكرار الموسمي (Seasonality)
  • التنبؤ بالقيم المستقبلية (Forecasting)
  • تحديد الحالات الشاذة (Anomalies)

التهيئة الأساسية لتحليل السلاسل الزمنية

قبل البدء في أي نموذج، يجب أولاً تجهيز البيانات:

1. التأكد من وجود تسلسل زمني (DateTime Index)

pythonCopyEditimport pandas as pd

df = pd.read_csv('sales.csv', parse_dates=['date'], index_col='date')

2. فحص الفجوات والقيم الناقصة

pythonCopyEditdf.isnull().sum()

3. تحويل البيانات إلى معدل زمني ثابت (daily, weekly…)

pythonCopyEditdf = df.resample('D').sum()  # التكرار اليومي

الطريقة الأولى: استخدام نموذج ARIMA

ما هو ARIMA؟

هو اختصار لـ:
AutoRegressive Integrated Moving Average

ويُستخدم لنمذجة السلاسل الزمنية غير الموسمية.

مكونات ARIMA:

  • AR (الانحدار الذاتي): يعتمد على القيم السابقة.
  • I (الفرق): لجعل السلسلة مستقرة.
  • MA (المتوسط المتحرك): يعتمد على الأخطاء السابقة.

خطوات استخدام ARIMA في Python

1. التثبيت

bashCopyEditpip install statsmodels

2. رسم السلسلة الزمنية

pythonCopyEditimport matplotlib.pyplot as plt

df['value'].plot(figsize=(10, 5))
plt.show()

3. التحقق من الاستقرارية (Stationarity)

pythonCopyEditfrom statsmodels.tsa.stattools import adfuller

result = adfuller(df['value'])
print(f"ADF Statistic: {result[0]}")
print(f"p-value: {result[1]}")

إذا كانت p-value < 0.05، السلسلة مستقرة.

4. تحديد قيم p وd وq

  • استخدم الرسوم البيانية ACF وPACF
  • أو استخدم auto_arima لاختيار أفضل نموذج
pythonCopyEditfrom pmdarima import auto_arima

model = auto_arima(df['value'], seasonal=False, trace=True)

5. تدريب النموذج والتنبؤ

pythonCopyEditfrom statsmodels.tsa.arima.model import ARIMA

model = ARIMA(df['value'], order=(1,1,1))
model_fit = model.fit()
forecast = model_fit.forecast(steps=30)

6. عرض النتائج

pythonCopyEditforecast.plot(label='التوقع')
df['value'].plot(label='الفعلي')
plt.legend()
plt.show()

الطريقة الثانية: التنبؤ باستخدام Facebook Prophet

ما هو Prophet؟

مكتبة طورتها Facebook لتبسيط التنبؤ بالبيانات الزمنية، خاصةً مع المواسم والتغيرات المفاجئة.

مميزاتها:

  • سهلة الاستخدام
  • قوية جدًا في التعامل مع البيانات الموسمية
  • مرنة مع الأعياد والعوامل الخارجية

خطوات استخدام Prophet

1. التثبيت

bashCopyEditpip install prophet

2. تهيئة البيانات (Prophet يحتاج أعمدة: ds وy)

pythonCopyEditdf_prophet = df.reset_index()
df_prophet.columns = ['ds', 'y']

3. تدريب النموذج

pythonCopyEditfrom prophet import Prophet

model = Prophet()
model.fit(df_prophet)

4. إنشاء تواريخ مستقبلية للتنبؤ

pythonCopyEditfuture = model.make_future_dataframe(periods=30)
forecast = model.predict(future)

5. عرض النتائج

pythonCopyEditmodel.plot(forecast)
model.plot_components(forecast)

مقارنة بين ARIMA وProphet

المعيارARIMAProphet
الصعوبةمتقدمةسهلة الاستخدام
التعامل مع الموسميةيدويتلقائي
المرونة مع العوامل الخارجيةمحدودةممتازة
الأداءدقيق جدًاجيد جدًا
الاستخدام الأكاديميواسعشائع في التطبيقات العملية

تطبيق عملي: التنبؤ بعدد زوار موقع إلكتروني

تخيّل أن لديك موقع تجارة إلكترونية، وتريد التنبؤ بعدد الزيارات اليومية:

الخطوات:

  1. استخراج تقارير Google Analytics كملف CSV
  2. تنظيف البيانات وتحويلها إلى سلسلة زمنية
  3. تدريب نموذج Prophet لتوقع عدد الزيارات في الشهر القادم
  4. تحليل النتيجة ومعرفة الأيام التي يتوقع فيها ارتفاع أو انخفاض النشاط

نصائح ذهبية لتحليل السلاسل الزمنية باحترافية

  • ابدأ بالرسم البياني دائمًا: لأن العين تلاحظ ما لا تلاحظه الخوارزميات
  • لا تنس فحص الاستقرارية: لأن النماذج تحتاج إلى بيانات مستقرة
  • اختبر أكثر من نموذج: وقيّم النتائج بناءً على RMSE أو MAE
  • ادمج البيانات الخارجية إن أمكن: مثل الأعياد أو الحوادث الطارئة
  • كن واقعيًا في التنبؤ: التوقع ليس سحرًا، بل نموذج احتمالي

خاتمة: المستقبل يُقرأ اليوم من خلال البيانات

سواء كنت تحلل مبيعاتك، زيارات موقعك، أو أداء أسهمك، فإن تحليل السلاسل الزمنية باستخدام بايثون يمنحك نافذة على المستقبل.
وباستخدام أدوات مثل ARIMA وProphet، يمكنك بناء نماذج تنبؤية قوية، موثوقة، ومرنة.

لا تنتظر الأحداث لتقع – توقّعها، واستعد لها من اليوم.


الأسئلة الشائعة (FAQs)

1. هل يمكن استخدام ARIMA وProphet في نفس المشروع؟
نعم، يمكنك مقارنة نتائجهما واختيار الأفضل.

2. هل Prophet يتطلب بيانات كبيرة؟
لا، لكنه يعمل بشكل أفضل مع بيانات تتجاوز 90 يومًا.

3. هل يمكن استخدام هذه النماذج مع بيانات غير عددية؟
لا، يجب أن تكون البيانات رقمية زمنية.

4. كيف أحدد إذا كانت السلسلة مستقرة؟
عن طريق اختبار ADF أو تحليل التغيرات البصرية.

5. هل يمكنني دمج عوامل خارجية مثل الطقس؟
نعم، Prophet يسمح بإضافة متغيرات خارجية بسهولة.

Leave feedback about this