یہ ٹرینڈنگ ٹائم سیریز اسٹیشنری کیوں ہے؟

Augmented Dickey-Fuller (ADF) کا مطالعہ ایک عجیب مثال سے ٹیسٹ

کی طرف سے تصویر جان ہوبر on Unsplash سے

سٹیشناریٹی ٹائم سیریز کے تجزیہ کے لیے سب سے بنیادی تصورات میں سے ایک ہے۔ عام طور پر، سٹیشناریٹی مختلف شماریاتی طریقوں کے ساتھ ٹائم سیریز کی ماڈلنگ کے لیے بہترین خصوصیات فراہم کرے گی۔ Augmented Dickey-Fuller (ADF) سٹیشنریٹی کی جانچ کے لیے ٹیسٹ شاید سب سے زیادہ استعمال ہونے والا طریقہ ہے۔

اس موضوع پر آن لائن بہت سارے مضامین موجود ہیں۔ میں بنیادی تعارف پر آپ کا وقت ضائع نہیں کروں گا، جیسے کہ سٹیشناریٹی کی تعریف، ADF ٹیسٹ کیسے کرنا ہے، وغیرہ۔ اس پوسٹ میں، میں ایک درخواست میں ایک عجیب کیس کا سامنا کرنے کے بعد ADF ٹیسٹ کی کھوج کے اپنے سفر کا اشتراک کروں گا۔

سیکھنے کا راستہ جو میں دکھاؤں گا وہ ڈیٹا سائنس سیکھنے کے لیے عام ہے۔ سب سے پہلے، ہم سوچتے ہیں کہ ہم کسی ٹول یا تصور کو سمجھتے ہیں، لیکن ہم صرف اس اصطلاح کو تسلیم کرتے ہیں اور یاد رکھتے ہیں۔ جب ہم اسے اصل ڈیٹا پر لاگو کرتے ہیں، تو ہمیں غیر متوقع، چیلنجنگ مسائل مل سکتے ہیں جو ہمیں مزید تحقیق کرنے اور مزید سمجھنے پر مجبور کرتے ہیں۔

ایک بار پھر، میں اپنا کوڈ GitHub پر شیئر کروں گا۔ براہ کرم آخر میں حوالہ کے سیکشن میں لنک تلاش کریں۔

ایک غیر متوقع سفر کا آغاز

میں دوسرے دن کچھ ٹائم سیریز کے ساتھ کام کر رہا تھا۔ شکل 1 ان میں سے ایک کو دکھاتا ہے۔ کوئی دوہرا نہیں ہے کہ ایک اوپر کا رجحان موجود ہے، اور فرق بھی وقت کے ساتھ بدل جاتا ہے۔. اس واضح تصور کے ساتھ، مجھے اسٹیشنریٹی کو جانچنے کی ضرورت نہیں تھی۔ کسی وجہ سے مجھے یاد نہیں ہے، میں نے پھر بھی اسے ADF ٹیسٹ کے ساتھ آزمایا۔ حیرت کی بات یہ ہے کہ p-value تقریباً 0 ہے، جس کا مطلب ہے کہ مجھے Null مفروضے کو مسترد کر دینا چاہیے اور یہ ماننا چاہیے کہ یہ ساکن ہے۔

شکل 1. ایک رجحان کے ساتھ ٹائم سیریز (تصویر مصنف)

یہ عجیب ہے. ٹیسٹ کا نتیجہ غلط معلوم ہوا۔ میں تحقیقات کرنا چاہتا تھا کہ ADF ٹیسٹ کے پیچھے کیا ہو رہا ہے۔ پہلا قدم جس کی میں نے کوشش کی اس مسئلے کو مصنوعی ڈیٹا کے ساتھ نقل کرنا تھا۔ میں نے درج ذیل کوڈ کے ساتھ کچھ ٹیسٹ ڈیٹا تیار کیا۔ کوڈ نے صرف سست رجحان کے رویے کی نقل کی ہے لیکن موسم کی نہیں۔

شکل 20,000 میں 1 مشاہدات ہیں، جس سے یہ ظاہر ہوتا ہے کہ رجحان انتہائی آہستہ آہستہ بڑھ رہا ہے۔ میں 0.0005 کی تھوڑی ڈھلوان کے ساتھ ٹائم سیریز بناتا ہوں۔ ٹائم سیریز کا مطلب قدر 0 مشاہدات کے بعد تقریباً 0.5 سے 1000 تک بڑھ جاتا ہے۔ پھر آئیے ایڈفلر() فنکشن سے اس کی جانچ کریں۔ statsmodels.tsa.stattools پہلے سے طے شدہ پیرامیٹرز کے ساتھ۔ پی ویلیو 0.01 ہے، اور "مسئلہ" دوبارہ ہوتا ہے۔ شکل 2 نتیجہ دکھاتا ہے۔ آپ عنوان کو نظر انداز کر سکتے ہیں، اور اوپر کے رجحان پر توجہ مرکوز کر سکتے ہیں۔ میں بعد میں وضاحت کروں گا کہ ہمارے پاس تین مختلف ADF ٹیسٹوں سے p-values ​​کیوں ہیں۔

شکل 2. ADF ٹیسٹ کے نتائج کے ساتھ مصنوعی ٹائم سیریز (تصویر مصنف کی)

ڈی ایف ٹیسٹ کے پیچھے ریاضی

ہمیں یہ دیکھنے کے لیے گہرائی میں جانا چاہیے کہ ADF ٹیسٹ کیا کر رہا ہے۔ یہ پتہ چلتا ہے کہ اس کا ریاضی کا پس منظر پیچیدہ نہیں ہے۔ سب سے پہلے، ADF ٹیسٹ کا صرف ایک جدید ورژن ہے۔ ڈکی فلر ٹیسٹ. وہاں ہے ڈی ایف ٹیسٹ کے تین اہم ورژن (ویکیپیڈیا سے):

ورژن 1: یونٹ جڑ کے لیے ٹیسٹ: ∆yᵢ = δyᵢ₋₁ + uᵢ

ورژن 2: مستقل کے ساتھ یونٹ جڑ کے لیے ٹیسٹ کریں: ∆yᵢ = a₀ + δyᵢ₋₁ + uᵢ

ورژن 3. مستقل اور تعییناتی رجحان کے ساتھ یونٹ جڑ کے لیے ٹیسٹ: ∆yᵢ = a₀ + a₁*t + δyᵢ₋₁ + uᵢ

ہر ورژن میں، کالعدم مفروضہ یہ ہے کہ ایک اکائی جڑ ہے، δ=0۔

Statsmodels پیکیج پیرامیٹر کے ساتھ تینوں ورژن کو سپورٹ کرتا ہے۔ "رجعت"

ورژن 1 کے لیے، رجعت 'n' ہے (کوئی مستقل، کوئی رجحان نہیں)۔

ورژن 2 کے لیے، رجعت 'c' ہے (صرف مستقل)؛ یہ پہلے سے طے شدہ ترتیب ہے۔

ورژن 3 کے لیے، رجعت 'ct' (مستقل اور رجحان) ہے۔

میں تین مختلف ترتیبات کے ساتھ ٹیسٹ دوبارہ چلاتا ہوں، اور ذیل میں نئے نتائج ہیں۔

ورژن 1 کے لیے، پی ویلیو 0.09 ہے۔ ہمیں کالعدم مفروضے کو رد نہیں کرنا چاہیے۔

ورژن 2 کے لیے، پی ویلیو 0.01 ہے۔ ہم نے اسے پہلے ہی ایک مسئلہ سمجھا ہے کیونکہ یہ پہلے سے طے شدہ ترتیب ہے۔

ورژن 3 کے لیے، پی ویلیو 0.00 ہے۔ اس کی توقع ہے کیونکہ ٹائم سیریز واقعی ہے۔ ایک تعییناتی رجحان کے ساتھ ساکن.

تو اس مثال کے اعداد و شمار کے لیے، اگر ہم اسے ورژن 1 (رجعت='n') کے ساتھ جانچتے ہیں، تو ہم یہ نہیں کہیں گے کہ یہ ساکن ہے۔ ہمیں شاید پہلے سے طے شدہ ترتیب کا استعمال نہیں کرنا چاہئے۔ لیکن آپ یہ بھی سوچ سکتے ہیں کہ مستقل اصطلاح نے یہاں اتنا بڑا فرق کیوں کیا؟ آئیے مزید کھودتے ہیں۔

ڈی ایف ٹیسٹ سے لکیری رجعت تک

مندرجہ بالا تعریف کی بنیاد پر، DF ٹیسٹ صرف لکیری رجعت ہے۔ شکل 3 لکیری رجعت کے تمام نکات کو ظاہر کرتا ہے۔ Y محور ∆yᵢ ہے، X محور yᵢ₋₁ ہے، اور uᵢ بقایا ہے۔ ورژن 1 کا مطلب ہے کہ ہمیں ایک لائن کو بغیر کسی وقفے کے فٹ کرنا چاہیے (کوئی مستقل نہیں)۔ ورژن 2 کا مطلب ہے کہ ہمیں انٹرسیپٹ (مسلسل) کے ساتھ ایک لائن فٹ کرنی ہوگی۔

تصویر 3. ∆yᵢ اور yᵢ₋₁ (تصویر مصنف کی طرف سے)

Skitlearn LinearRegression پیرامیٹر fit_intercept کے ساتھ ان دو اختیارات کو اچھی طرح سے سپورٹ کرتا ہے۔ تصویر 4 کے نیچے دو فٹ لائنیں ہیں۔ جیسا کہ آپ دیکھ سکتے ہیں، انٹرسیپٹ والی لائن انٹرسیپٹ کے بغیر لائن سے بہتر فٹ بیٹھتی ہے۔ R-squared اسکور نے بھی واضح طور پر اس کی تصدیق کی۔ اس کے علاوہ، نوٹ کریں کہ اورنج لائن کی ڈھلوان نیلی لائن سے چھوٹی ہے۔ دوسرے الفاظ میں، اورنج لائن کی ڈھلوان 0 کے قریب ہے۔

شکل 4. لکیری رجعت کا نتیجہ (تصویر از مصنف)

ہم تصور کے ذریعہ بھی سوچ سکتے ہیں: پوائنٹس (0,0) کے ارد گرد مرکوز نہیں ہیں، لہذا نصب شدہ ریگریشن لائن (0,0) کو نہیں گزرنا چاہئے۔ انٹرسیپٹ 0 سے بڑا ہونا چاہیے۔ کیونکہ 0 ابتدائی اوسط ہے، ∆y 0 سے زیادہ ہونا چاہیے، اس لیے مجموعی اوسط بڑھے گا۔ اگر ہم ریگریشن لائن کو (0,0) سے گزرنے پر مجبور کرتے ہیں، تو یہ ڈیٹا کو کم کردے گا، اور (0،0,0) کے اثر و رسوخ کی وجہ سے ڈھلوان XNUMX کے قریب ہوجائے گی۔

ہم نے دیکھا ہے کہ آیا انٹرسیپٹ اثرات کو شامل کرنا لکیری رجعت کے مطابق ہے۔ لائن کیسے لگائی جاتی ہے اس سے ADF ٹیسٹ کے نتائج کیوں متاثر ہوتے ہیں، اور p-value کہاں سے آتی ہے؟

لکیری رجعت سے p-value تک

اب وہ جگہ ہے جہاں تھوڑا سا پیچیدہ ہو رہا ہے۔ ڈی ایف ٹیسٹ کی حتمی پی ویلیو لکیری ریگریشن سے گتانکوں کی p-ویلیو سے نہیں ہے۔ بنیادی طور پر، اعدادوشمار کی ایک مخصوص تقسیم ہوتی ہے جسے ڈکی فلر ٹیبل کہا جاتا ہے۔ پھر ہم ٹیسٹ کے اعدادوشمار کے لیے MacKinnon کی تخمینی p-value استعمال کرتے ہیں۔ آپ کو اس میں تفصیلات مل سکتی ہیں۔ اعدادوشمار کا ماخذ کوڈ.

کیونکہ کالعدم مفروضہ δ=0 ہے، یعنی نصب لائن کی ڈھلوان کی جانچ کرنا 0 ہے۔ ہمیں اس بارے میں تفصیلات میں جانے کی ضرورت نہیں ہے کہ p-value کیسے حاصل کی جائے۔ p-value اور slop کے درمیان ایسوسی ایشن کا منطقی سلسلہ (δ لکیری رجعت میں، رجحان سازی ڈھلوان نہیں) اس طرح ہے:

عام طور پر، اگر ڈھلوان 0 سے بہت دور ہے، تو p-value چھوٹا ہونا چاہیے، زیادہ امکان ہے کہ null hypothesis کو رد کر دیا جائے اور تجویز کیا جائے کہ کوئی یونٹ جڑ اور ساکن نہیں ہے۔ اگر ڈھلوان 0 ہے یا 0 کے بہت قریب ہے، تو p-value زیادہ ہونی چاہیے، زیادہ امکان ہے کہ null hypothesis کو قبول کرتے ہوئے اور یونٹ کی جڑ اور غیر سٹیشنری تجویز کرے۔ دوسرے منظر نامے کے لیے، ویکیپیڈیا کہتا ہے، "ٹیسٹوں میں شماریاتی طاقت کم ہوتی ہے جس کی وجہ سے وہ اکثر حقیقی یونٹ جڑ کے عمل (δ = 0) اور یونٹ جڑ کے قریب عمل (δ 0 کے قریب ہے) کے درمیان فرق نہیں کر سکتے۔" یہی وجہ ہے کہ ہمیں پہلی جگہ مسئلہ ہے۔ ہم قریب قریب یونٹ جڑ کے عمل سے نمٹ رہے ہیں۔ ورژن 1 ایک یونٹ جڑ تلاش کرتا ہے اور ورژن 2 یونٹ جڑ نہیں ڈھونڈ سکتا۔

مندرجہ بالا مثال کے لیے ورژن 1 کیوں کام کرتا ہے؟

ورژن 1 شکل 2 میں ڈیٹا کے لیے کام کرتا ہے کیونکہ ہم ڈھلوان کو 0 کے قریب بناتے ہیں، اس لیے p-value زیادہ ہے۔

تاہم، ہم ورژن 1 کو بطور ڈیفالٹ ترتیب استعمال نہیں کر سکتے۔ ورژن 1 کے لیے دو صورتیں ہیں (لائن کو مجبور کرنا (0,0)):

کیس 1: (0,0) تمام ڈیٹا پوائنٹس کے قریب ہے۔ اگر لائن کو (0,0) سے گزرنا ہے، تو لکیر چاپلوسی ہوگی، اور ڈھلوان 0 کے قریب آئے گی۔ شکل 4 اس معاملے کو ظاہر کرتی ہے۔ براہ کرم نوٹ کریں کہ شکل 4 کا مظاہرہ صرف ایک متغیر yᵢ₋₁ پر فٹ بیٹھتا ہے، اصل ADF زیادہ وقفے کے متغیرات کو فٹ کرے گا۔

کیس 2: (0,0) تمام ڈیٹا پوائنٹس سے بہت دور ہے۔ اگر لائن (0,0) سے گزرنا ضروری ہے، تو ہم فٹنگ میں ناکام ہو سکتے ہیں۔ بنیادی طور پر، ڈھلوان 0 ہے، یعنی ہم ∆yᵢ اور yᵢ₋₁ کا خطی رشتہ تلاش نہیں کر سکتے ہیں کہ ایک لائن گزر جائے گی (0,0) اور زیادہ تر ڈیٹا پوائنٹس کا احاطہ کرے گی۔ لہذا، ٹیسٹ کا نتیجہ روٹ یونٹ رکھنے کی طرف متعصب ہوگا۔.

تصویر 5 ذیل میں ورژن 1 ٹیسٹ کی مثال دکھاتا ہے جو Null مفروضے (p-value 0.6) کو مسترد کرنے میں ناکام ہے، اور ڈیٹا 10 کے اوسط کے ساتھ ساکن ہے۔ شکل 6 وجہ کی وضاحت کرتا ہے۔ جیسا کہ آپ دیکھ سکتے ہیں، ہم انٹرسیپٹ کے بغیر لائن نہیں پا سکتے (R-squared 0 ہے)، اس لیے نصب لائن کی ڈھلوان 0 ہے (∆yᵢ yᵢ₋₁ پر منحصر نہیں ہے)۔

شکل 5. ورژن 1 اسٹیشنری ٹائم سیریز کو پہچاننے میں ناکام رہا (تصویر مصنف کی طرف سے)
شکل 6. لکیری رجعت بغیر کسی رکاوٹ کے لائن تلاش کرنے میں ناکام رہتی ہے (پاسنگ (0,0)) (تصویر مصنف کی طرف سے)

DF ٹیسٹ سے ADF ٹیسٹ تک

اب ہم سمجھتے ہیں کہ ڈی ایف ٹیسٹ لکیری ریگریشن ہے اور لکیری ریگریشن سے پی ویلیو کیسے حاصل کی جائے، آئیے ADF کی طرف چلتے ہیں۔ ADF کا فارمولا ہے:

ایک بار پھر، لکیری رجعت۔ "Augmented" حصہ یہ ہے کہ ہمیں مزید گتانکوں کو فٹ کرنا ہے۔

statsmodels پیکیج AFT ٹیسٹ کا تفصیلی خلاصہ دکھانے کی اجازت دیتا ہے۔ تصویر 7 نتیجہ ہے۔

تصویر 7. تفصیلی خلاصہ کے ساتھ ADF ٹیسٹ (تصویر مصنف کی)

ہم 'OLS ریگریشن' (لکیری ریگریشن کے لیے طے شدہ حل) اور 17 کوفیشینٹس دیکھتے ہیں۔ میں نے زیادہ سے زیادہ وقفہ کی وضاحت نہیں کی، اس لیے ٹیسٹ ٹائم سیریز کی لمبائی کی بنیاد پر ایک نمبر تک آزمائے گا، جو کہ 17 ہے۔

کانسٹ (انٹرسیپٹ) بھی لگا ہوا ہے۔ قیمت 0.0596 ہے۔

آئیے Scikit-learn میں لکیری رجعت کا استعمال کرتے ہوئے ADF ٹیسٹ کو لاگو کرنے کی کوشش کرتے ہیں۔ شکل 8 کوڈ اور آؤٹ پٹ ہے۔

شکل 8. Scikit-learn کے ساتھ ADF ٹیسٹ (صرف لکیری ریگریشن حصہ) (تصویر از مصنف)

انٹرسیپٹ 0.0596 ہے، اور دیگر گتانک وہی ہیں جیسا کہ شکل 7 میں ہے۔ Scikit-learn میں لکیری رجعت بالکل سادہ OLS ہے۔ ہم ایک ہی کام کر رہے ہیں، لہذا یہ کوئی تعجب کی بات نہیں ہے کہ نتائج ایک جیسے ہیں۔

سفر کا اختتام۔

پیرامیٹر کو ترتیب دینے کا طریقہ معلوم کرنے کے بعد، میں نے ورژن 1 (رجعت = 'n') کا استعمال کرتے ہوئے شکل 1 میں اصل ٹائم سیریز کا تجربہ کیا اور 0.08 کی p-ویلیو حاصل کی، تجویز کیا کہ یہ ساکن نہیں ہے۔ براہ کرم نوٹ کریں کہ شکل 1 میں ڈیٹا صفر کا اوسط ہے، لہذا آپ تصور کر سکتے ہیں کہ (0,0) ڈیٹا پوائنٹس (∆yᵢ, yᵢ₋₁) کے قریب ہے۔ ورژن 1 ٹیسٹ کا استعمال ہماری مدد کرے گا۔

چونکہ شکل 1 میں رجحان سازی کی ڈھلوان کم سے کم ہے، اس لیے ہم ٹائم سیریز کو قدموں کے ساتھ دوبارہ نمونہ بھی بنا سکتے ہیں، جو ڈھلوان کو بڑھاتا ہے۔ مثال کے طور پر، اگر میں اسے چار مراحل ( value[::4] ) کے ساتھ جانچتا ہوں تو یہ ڈیفالٹ ترتیب کے ساتھ ADF ٹیسٹ پاس نہیں کرے گا ( regression='c' کے لیے p-value 0.17 ہے)۔

مشکل حل ہو گئی.

Takeaways

ADF کے نتائج پر اندھا اعتماد نہ کریں۔ تصور آپ کا دوست ہے۔

ADF ٹیسٹ ایک سادہ لکیری رجعت ہے، اور statsmodels کا نفاذ رجعت کے مسئلے کو حل کرنے کے لیے OLS کا استعمال کرتا ہے۔ پھر یہ p-value نکالنے کے لیے Dickey–Fuller Table کا استعمال کرتا ہے جو Null مفروضے کی توثیق کرتا ہے کہ نصب شدہ رجعت سے پہلے وقفے کے متغیر کا گتانک 0 ہے۔

ADF ٹیسٹ کی حدود ہوتی ہیں جب یونٹ روٹ کے قریب عمل کی جانچ کی جاتی ہے (δ 0 کے قریب ہے)۔

ہمیں اس کے مطابق مناسب ADF ورژن کا انتخاب کرنے کی ضرورت ہے۔ مثال کے طور پر، جب آپ ایک مستقل رجحان دیکھتے ہیں اور 'ٹرینڈ اسٹیشنری' کو جانچنا چاہتے ہیں، تو آپ کو پیرامیٹر کے طور پر 'ct' کو منتخب کرنا ہوگا۔ اگر آپ کسی سگنل کے لیے ایک سست رجحان کو پکڑنے جا رہے ہیں جس کا مطلب 0 ہونا چاہیے جیسا کہ شکل 1 اور شکل 2 میں، ہو سکتا ہے کہ آپ کو 'n' کو پیرامیٹر کے طور پر منتخب کرنے کی ضرورت ہو تاکہ انٹرسیپٹ کو فٹ کرنے کے اثرات سے بچ سکیں۔ اعداد و شمار کے ماڈل پیرامیٹر 'ctt' کے ساتھ مقداری رجحان کو بھی سپورٹ کرتے ہیں۔ یہ جدید آپشن کچھ معاملات کے لیے اچھا انتخاب ہو سکتا ہے۔ اگر آپ مزید کھودنا چاہتے ہیں، تو براہ کرم رجوع کریں۔ انٹرسیپٹ اور وقتی رجحان کی تعییناتی شرائط کو شامل کرنے کے بارے میں غیر یقینی صورتحال سے نمٹنا.

مجھے امید ہے کہ آپ نے ADF ٹیسٹ کے بارے میں کچھ سیکھا ہوگا۔

اپنے ٹائم سیریز کے ساتھ مزہ کریں!

مجھ سے رابطہ کریں لنکڈ.

PS: میرے پاس ٹائم سیریز کے ڈیٹا کا تجربہ اور جنون ہے۔ اگر آپ کو یہ مضمون پسند ہے تو آپ کو میرے دوسرے مضمون میں دلچسپی ہو سکتی ہے۔ ٹائم سیریز کے بارے میں پوسٹس.

حوالہ جات

GitHub پر نوٹ بک فائل

یہ ٹرینڈنگ ٹائم سیریز اسٹیشنری کیوں ہے؟ ماخذ سے دوبارہ شائع کیا گیا https://towardsdatascience.com/why-is-this-trending-time-series-stationary-f3fb9447336f?source=rss—-7f60cf5620c9—4 بذریعہ https://towardsdatascience.com/feed

<!–

->

ٹائم اسٹیمپ:

سے زیادہ بلاکچین کنسلٹنٹس