كيفية إجراء اختبار kpss في بايثون
يمكن استخدام اختبار KPSS لتحديد ما إذا كانت السلسلة الزمنية لها اتجاه ثابت.
يستخدم هذا الاختبار الفرضية الصفرية والبديلة التالية:
- H 0 : السلسلة الزمنية لها اتجاه ثابت.
- ح أ : السلسلة الزمنية ليس لها اتجاه ثابت.
إذا كانت القيمة p للاختبار أقل من مستوى معين من الأهمية (على سبيل المثال α = 0.05)، فإننا نرفض فرضية العدم ونستنتج أن السلسلة الزمنية ليس لها اتجاه ثابت.
وإلا فإننا سوف نفشل في رفض فرضية العدم.
توضح الأمثلة التالية كيفية إجراء اختبار KPSS في Python.
مثال 1: اختبار KPSS في بايثون (مع البيانات الثابتة)
أولاً، لنقم بإنشاء بعض البيانات المزيفة في لغة بايثون للعمل عليها:
import numpy as np
import matplotlib. pyplot as plt
#make this example reproducible
n.p. random . seed ( 1 )
#create time series data
data = np. random . normal (size= 100 )
#create line plot of time series data
plt. plot (data)
يمكننا استخدام الدالة kpss() من حزمة statsmodels لإجراء اختبار KPSS على بيانات السلاسل الزمنية هذه:
import statsmodels. api as sm
#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')
(0.0477617848370993,
0.1,
1,
{'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})
InterpolationWarning: The test statistic is outside of the range of p-values available
in the look-up table. The actual p-value is greater than the p-value returned.
وإليك كيفية تفسير النتيجة:
- إحصائيات اختبار KPSS: 0.04776
- القيمة p: 0.1
- معلمة إزاحة الاقتطاع: 1
- القيم الحرجة عند 10% و 5% و 2.5% و 1%
القيمة p هي 0.1 . وبما أن هذه القيمة لا تقل عن 0.05، فقد فشلنا في رفض الفرضية الصفرية لاختبار KPSS.
وهذا يعني أنه يمكننا أن نفترض أن السلسلة الزمنية لها اتجاه ثابت.
ملاحظة 1 : لا تزال القيمة p في الواقع أكبر من 0.1، ولكن أدنى قيمة ستنتجها الدالة kpss() هي 0.1.
ملاحظة 2 : يجب عليك استخدام الوسيطة regression=’ct’ لتحديد أن الفرضية الصفرية للاختبار هي أن البيانات لها اتجاه ثابت.
مثال 2: اختبار KPSS في بايثون (مع بيانات غير ثابتة)
أولاً، لنقم بإنشاء بعض البيانات المزيفة في لغة بايثون للعمل عليها:
import numpy as np
import matplotlib. pyplot as plt
#make this example reproducible
n.p. random . seed ( 1 )
#create time series data
data =np. array ([0, 3, 4, 3, 6, 7, 5, 8, 15, 13, 19, 12, 29, 15, 45, 23, 67, 45])
#create line plot of time series data
plt. plot (data)
مرة أخرى، يمكننا استخدام الدالة kpss() من حزمة statsmodels لإجراء اختبار KPSS على بيانات السلاسل الزمنية هذه:
import statsmodels. api as sm
#perform KPSS test
sm. tsa . stattools . kpss (data, regression=' ct ')
(0.15096358910843685,
0.04586367574296928,
3,
{'10%': 0.119, '5%': 0.146, '2.5%': 0.176, '1%': 0.216})
وإليك كيفية تفسير النتيجة:
- إحصائيات اختبار KPSS: 0.1509
- القيمة p: 0.0458
- معلمة إزاحة الاقتطاع: 3
- القيم الحرجة عند 10% و 5% و 2.5% و 1%
القيمة p هي 0.0458 . وبما أن هذه القيمة أقل من 0.05، فإننا نرفض الفرضية الصفرية لاختبار KPSS.
وهذا يعني أن السلسلة الزمنية ليست ثابتة.
ملاحظة : يمكنك العثور على الوثائق الكاملة لوظيفة kpss() من حزمة statsmodels هنا .
مصادر إضافية
توفر البرامج التعليمية التالية معلومات إضافية حول كيفية التعامل مع بيانات السلاسل الزمنية في بايثون:
كيفية إجراء اختبار ديكي فولر المعزز في بايثون
كيفية إجراء اختبار اتجاه مان كيندال في بايثون
كيفية رسم سلسلة زمنية في Matplotlib