اختبار ديكي فولر المعزز في بايثون (مع مثال)
يقال إن السلسلة الزمنية “ثابتة” إذا لم يكن لها اتجاه، وتقدم تباينًا ثابتًا بمرور الوقت ولها بنية ارتباط ذاتي ثابتة بمرور الوقت.
إحدى الطرق لاختبار ما إذا كانت السلسلة الزمنية ثابتة هي إجراء اختبار ديكي فولر المعزز ، والذي يستخدم الفرضيات الصفرية والبديلة التالية:
H 0 : السلسلة الزمنية غير ثابتة. وبعبارة أخرى، فإن بنيتها تعتمد على الزمن، وتغيرها ليس ثابتا مع مرور الوقت.
ح أ : السلسلة الزمنية ثابتة.
إذا كانت القيمة p للاختبار أقل من مستوى معين من الأهمية (على سبيل المثال α = 0.05)، فيمكننا رفض فرضية العدم ونستنتج أن السلسلة الزمنية ثابتة.
يوضح المثال التالي خطوة بخطوة كيفية إجراء اختبار ديكي فولر المعزز في بايثون لسلسلة زمنية معينة.
مثال: اختبار ديكي فولر المعزز في بايثون
لنفترض أن لدينا بيانات السلاسل الزمنية التالية في بايثون:
data = [3, 4, 4, 5, 6, 7, 6, 6, 7, 8, 9, 12, 10]
قبل إجراء اختبار ديكي فولر المعزز على البيانات، يمكننا إنشاء مخطط سريع لتصور البيانات:
import matplotlib. pyplot as plt plt. plot (data)
لإجراء اختبار ديكي-فولر المعزز، يمكننا استخدام وظيفة adfuller() من مكتبة statsmodels . أولاً، نحتاج إلى تثبيت statsmodels:
pip install statsmodels
ثم يمكننا استخدام الكود التالي لإجراء اختبار ديكي فولر المعزز:
from statsmodels. tsa . stattools import adfuller #perform augmented Dickey-Fuller test adfuller(data) (-0.9753836234744063, 0.7621363564361013, 0, 12, {'1%': -4.137829282407408, '5%': -3.1549724074074077, '10%': -2.7144769444444443}, 31.2466098872313)
وإليك كيفية تفسير أهم قيم النتيجة:
- إحصائيات الاختبار: -0.97538
- القيمة P: 0.7621
وبما أن القيمة p لا تقل عن 0.05، فإننا نفشل في رفض فرضية العدم.
وهذا يعني أن السلسلة الزمنية ليست ثابتة. وبعبارة أخرى، فإن بنيتها تعتمد على الزمن، وتغيرها ليس ثابتا مع مرور الوقت.
مصادر إضافية
كيفية رسم سلسلة زمنية في Matplotlib
كيفية رسم سلسلة متعددة من Pandas DataFrame
كيفية إجراء اختبار اتجاه مان كيندال في بايثون