কেন এই প্রবণতা সময় সিরিজ নিশ্চল?

অগমেন্টেড ডিকি-ফুলার (ADF) এর একটি গবেষণা একটি অদ্ভুত উদাহরণ থেকে পরীক্ষা

দ্বারা ফোটো জান হুবার on Unsplash

সময় সিরিজ বিশ্লেষণের জন্য সবচেয়ে মৌলিক ধারণাগুলির মধ্যে একটি হল স্থিরতা। সাধারণত, স্থিরতা বিভিন্ন পরিসংখ্যানগত পদ্ধতির সাথে টাইম সিরিজ মডেল করার জন্য চমৎকার বৈশিষ্ট্য প্রদান করবে। অগমেন্টেড ডিকি-ফুলার (ADF) পরীক্ষা সম্ভবত স্থিরতা পরীক্ষা করার জন্য সবচেয়ে ব্যাপকভাবে ব্যবহৃত পদ্ধতি।

এই বিষয়ে অনলাইনে প্রচুর নিবন্ধ রয়েছে। আমি মৌলিক ভূমিকাতে আপনার সময় নষ্ট করব না, যেমন স্থিরতার সংজ্ঞা, কীভাবে ADF পরীক্ষা করতে হয়, ইত্যাদি। এই পোস্টে, আমি একটি অ্যাপ্লিকেশনে একটি অদ্ভুত মামলার সম্মুখীন হওয়ার পর ADF পরীক্ষা অন্বেষণের আমার যাত্রা শেয়ার করব।

আমি যে শেখার পথটি দেখাব তা ডেটা সায়েন্স শেখার জন্য সাধারণ। প্রথমত, আমরা মনে করি আমরা একটি টুল বা একটি ধারণা বুঝি, কিন্তু আমরা শুধু শব্দটিকে স্বীকার করি এবং মনে রাখি। যখন আমরা এটিকে প্রকৃত ডেটাতে প্রয়োগ করি, তখন আমরা অপ্রত্যাশিত, চ্যালেঞ্জিং সমস্যাগুলি খুঁজে পেতে পারি যা আমাদের আরও তদন্ত করতে এবং আরও বুঝতে বাধ্য করে।

আবার, আমি GitHub এ আমার কোড শেয়ার করব; অনুগ্রহ করে শেষ পর্যন্ত রেফারেন্স বিভাগে লিঙ্কটি খুঁজুন।

একটি অপ্রত্যাশিত যাত্রা শুরু

আমি অন্য দিন কিছু সময় সিরিজ সঙ্গে কাজ ছিল. চিত্র 1 তাদের মধ্যে একটি দেখায়. কোন দ্বিগুণ নেই যে একটি ঊর্ধ্বমুখী প্রবণতা বিদ্যমান, এবং ভিন্নতাও সময়ের সাথে পরিবর্তিত হয়. এই পরিষ্কার ভিজ্যুয়ালাইজেশনের সাথে, আমার স্থিরতা পরীক্ষা করার দরকার নেই। কিছু কারণে আমার মনে নেই, আমি এখনও ADF পরীক্ষা দিয়ে চেষ্টা করেছি। আশ্চর্যজনকভাবে, p-মান প্রায় 0, যা বোঝায় যে আমার নাল হাইপোথিসিস প্রত্যাখ্যান করা উচিত এবং এটি স্থির বলে স্বীকার করা উচিত।

চিত্র 1. একটি প্রবণতা সহ টাইম সিরিজ (লেখকের ছবি)

অদ্ভুত জিনিস. পরীক্ষার ফলাফল ভুল মনে হয়েছে। আমি ADF পরীক্ষার পিছনে কী ঘটছে তা তদন্ত করতে চেয়েছিলাম। প্রথম পদক্ষেপটি আমি চেষ্টা করেছি সিন্থেটিক ডেটা দিয়ে এই সমস্যাটি প্রতিলিপি করা। আমি নিম্নলিখিত কোডের সাথে কিছু পরীক্ষার ডেটা তৈরি করেছি। কোডটি শুধুমাত্র ধীর প্রবণতার আচরণের নকল করেছে কিন্তু মৌসুমীতা নয়।

চিত্র 20,000-এ 1টি পর্যবেক্ষণ রয়েছে, যা বোঝায় প্রবণতাটি অত্যন্ত ধীরে ধীরে বৃদ্ধি পাচ্ছে। আমি 0.0005 এর সামান্য ঢাল সহ একটি টাইম সিরিজ তৈরি করি। টাইম সিরিজ গড় মান 0টি পর্যবেক্ষণের পরে প্রায় 0.5 থেকে 1000 পর্যন্ত বেড়ে যায়। তাহলে এর থেকে অ্যাডফুলার() ফাংশন দিয়ে পরীক্ষা করা যাক statsmodels.tsa.stattools ডিফল্ট পরামিতি সহ। পি-মান 0.01, এবং "সমস্যা" আবার ঘটে। চিত্র 2 ফলাফল দেখায়. আপনি শিরোনাম উপেক্ষা করতে পারেন, এবং ঊর্ধ্বমুখী প্রবণতার উপর ফোকাস করতে পারেন। আমরা পরে ব্যাখ্যা করব কেন আমাদের তিনটি ভিন্ন ADF পরীক্ষা থেকে পি-মান রয়েছে।

চিত্র 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-এর জন্য, p-মান হল 0.09৷ আমাদের নাল হাইপোথিসিস প্রত্যাখ্যান করা উচিত নয়।

সংস্করণ 2-এর জন্য, p-মান হল 0.01৷ আমরা ইতিমধ্যে এটিকে একটি সমস্যা হিসাবে বিবেচনা করেছি কারণ এটি ডিফল্ট সেটিং।

সংস্করণ 3-এর জন্য, p-মান হল 0.00। যে প্রত্যাশিত কারণ সময় সিরিজ প্রকৃতপক্ষে একটি নির্ধারক প্রবণতা সহ স্থির.

সুতরাং এই উদাহরণ ডেটার জন্য, যদি আমরা এটিকে সংস্করণ 1 (রিগ্রেশন='n') দিয়ে পরীক্ষা করি, আমরা বলব না এটি স্থির। আমাদের সম্ভবত ডিফল্ট সেটিং ব্যবহার করা উচিত নয়। কিন্তু আপনি হয়তো ভাবতে পারেন, কেন ধ্রুবক শব্দটি এখানে এত বড় পার্থক্য তৈরি করেছে? আরো খনন করা যাক.

ডিএফ পরীক্ষা থেকে লিনিয়ার রিগ্রেশন পর্যন্ত

উপরোক্ত সংজ্ঞার উপর ভিত্তি করে, ডিএফ পরীক্ষাটি কেবলমাত্র লিনিয়ার রিগ্রেশন। চিত্র 3 রৈখিক রিগ্রেশনের জন্য সমস্ত বিন্দু দেখায়। Y অক্ষ হল ∆yᵢ, X অক্ষ হল yᵢ₋₁, এবং uᵢ হল অবশিষ্টাংশ। ভার্সন 1 মানে আমাদের অবশ্যই ইন্টারসেপ্ট ছাড়াই একটি লাইন ফিট করতে হবে (কোনও ধ্রুবক নয়)। সংস্করণ 2 মানে আমাদের অবশ্যই ইন্টারসেপ্ট (ধ্রুবক) সহ একটি লাইন ফিট করতে হবে।

চিত্র 3. ∆yᵢ এবং yᵢ₋₁ (লেখকের ছবি)

স্কিটলার্ন লিনিয়ার রিগ্রেশন প্যারামিটার fit_intercept এর সাথে এই দুটি বিকল্পকে ভালভাবে সমর্থন করে। চিত্র 4 এর নীচে দুটি লাগানো লাইন রয়েছে। আপনি দেখতে পাচ্ছেন, ইন্টারসেপ্টের সাথে লাইনটি ইন্টারসেপ্ট ছাড়া লাইনের চেয়ে ভাল ফিট করে। R-squared স্কোরও এটি স্পষ্টভাবে নিশ্চিত করেছে। এছাড়াও, মনে রাখবেন যে কমলা রেখার ঢাল নীল রেখার চেয়ে ছোট। অন্য কথায়, কমলা রেখার ঢাল 0-এর কাছাকাছি।

চিত্র 4. লিনিয়ার রিগ্রেশন ফলাফল (লেখকের ছবি)

আমরা ভিজ্যুয়ালাইজেশন দ্বারাও চিন্তা করতে পারি: বিন্দুগুলি (0,0) এর চারপাশে কেন্দ্রীভূত নয়, তাই লাগানো রিগ্রেশন লাইনটি (0,0) পাস করা উচিত নয়। ইন্টারসেপ্ট ০-এর বেশি হওয়া উচিত। কারণ 0 হল প্রারম্ভিক গড়, ∆y 0-এর থেকে বেশি হওয়া উচিত, তাই সামগ্রিক গড় বৃদ্ধি পাবে। যদি আমরা রিগ্রেশন লাইনটিকে (0) দিয়ে যেতে বাধ্য করি, তবে এটি ডেটার জন্য কম হবে এবং (0,0) থেকে প্রভাবের কারণে ঢালটি 0-এর কাছাকাছি হয়ে যাবে।

আমরা দেখেছি যে ইন্টারসেপ্ট প্রভাবগুলি সহ রৈখিক রিগ্রেশনের সাথে খাপ খায় কিনা। কেন একটি লাইন কিভাবে লাগানো হয় তা ADF পরীক্ষার ফলাফলকে প্রভাবিত করে এবং পি-মান কোথা থেকে আসে?

লিনিয়ার রিগ্রেশন থেকে পি-মান পর্যন্ত

এখন যেখানে একটু জটিল হচ্ছে. ডিএফ পরীক্ষার চূড়ান্ত পি-মান রৈখিক রিগ্রেশন থেকে সহগগুলির পি-মান থেকে নয়। মূলত, পরিসংখ্যানের একটি নির্দিষ্ট বন্টন রয়েছে যা ডিকি-ফুলার টেবিল নামে পরিচিত। তারপরে আমরা পরীক্ষার পরিসংখ্যানের জন্য ম্যাককিননের আনুমানিক পি-মান ব্যবহার করি। আপনি বিস্তারিত পেতে পারেন স্ট্যাটস মডেল সোর্স কোড.

কারণ নাল হাইপোথিসিস হল δ=0, মানে লাগানো লাইনের ঢাল পরীক্ষা করা হচ্ছে 0। কীভাবে p-মান পেতে হয় সে সম্পর্কে আমাদের বিস্তারিত জানার দরকার নেই। p-মান এবং ঢালের মধ্যে সংযোগের লজিক চেইন (δ লিনিয়ার রিগ্রেশনে, ট্রেন্ডিং ঢাল নয়) এইরকম:

সাধারণত, যদি ঢাল 0 থেকে অনেক দূরে হয়, তাহলে p-মানটি ছোট হওয়া উচিত, সম্ভবত নাল হাইপোথিসিস প্রত্যাখ্যান করে এবং কোন একক রুট এবং স্থির না থাকার পরামর্শ দেয়। যদি ঢাল 0 বা 0 এর খুব কাছাকাছি হয়, তাহলে p-মানটি বেশি হওয়া উচিত, সম্ভবত নাল হাইপোথিসিস গ্রহণ করা এবং ইউনিট রুট এবং অ-স্থির প্রস্তাব করা উচিত। দ্বিতীয় দৃশ্যের জন্য, উইকিপিডিয়া বলে, "পরীক্ষাগুলির পরিসংখ্যানগত শক্তি কম থাকে যে তারা প্রায়শই সত্য ইউনিট-রুট প্রক্রিয়া (δ = 0) এবং ইউনিট-রুট প্রক্রিয়াগুলির মধ্যে পার্থক্য করতে পারে না (δ হয় ০ এর কাছাকাছি)"। এই কারণেই আমাদের সমস্যাটি প্রথম স্থানে রয়েছে। আমরা একটি কাছাকাছি-ইউনিট-রুট প্রক্রিয়া নিয়ে কাজ করছি। সংস্করণ 0 একটি ইউনিট রুট খুঁজে পায় এবং সংস্করণ 1 একটি ইউনিট রুট খুঁজে পায় না।

কেন সংস্করণ 1 উপরের উদাহরণের জন্য কাজ করে?

সংস্করণ 1 চিত্র 2-এর ডেটার জন্য কাজ করে কারণ আমরা ঢালকে 0-এর কাছাকাছি করে তুলছি, তাই p-মানটি বেশি।

যাইহোক, আমরা সংস্করণ 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 পরীক্ষার একটি উদাহরণ দেখায় যা নাল হাইপোথিসিস (পি-মান 0.6) প্রত্যাখ্যান করতে ব্যর্থ হয়েছে এবং ডেটা 10 এর গড় সহ স্থির। চিত্র 6 কারণটি ব্যাখ্যা করে। আপনি দেখতে পাচ্ছেন, আমরা ইন্টারসেপ্ট ছাড়া একটি লাইন খুঁজে পাচ্ছি না (R-squared হল 0), তাই লাগানো লাইনের ঢাল হল 0 (∆yᵢ yᵢ₋₁ এর উপর নির্ভর করে না)।

চিত্র 5. সংস্করণ 1 একটি স্থির সময় সিরিজ সনাক্ত করতে ব্যর্থ হয়েছে (লেখকের ছবি)
চিত্র 6. রৈখিক রিগ্রেশন ইন্টারসেপ্ট ছাড়া একটি লাইন খুঁজে পেতে ব্যর্থ হয় (পাসিং (0,0)) (লেখকের ছবি)

ডিএফ পরীক্ষা থেকে এডিএফ পরীক্ষা পর্যন্ত

এখন আমরা বুঝতে পেরেছি যে DF পরীক্ষা হল লিনিয়ার রিগ্রেশন এবং কিভাবে লিনিয়ার রিগ্রেশন থেকে পি-ভ্যালু পাওয়া যায়, আসুন ADF-এ যাওয়া যাক। ADF এর সূত্র হল:

আবার, লিনিয়ার রিগ্রেশন। "অগমেন্টেড" অংশটি হল আমাদের আরও সহগ ফিট করতে হবে।

statsmodels প্যাকেজ AFT পরীক্ষার একটি বিশদ সারাংশ দেখানোর অনুমতি দেয়। চিত্র 7 এর ফলাফল।

চিত্র 7. একটি বিশদ সারাংশ সহ ADF পরীক্ষা (লেখকের ছবি)

আমরা 'OLS রিগ্রেশন' (লিনিয়ার রিগ্রেশনের জন্য ডিফল্ট সমাধান) এবং 17টি সহগ দেখতে পাই। আমি সর্বোচ্চ ল্যাগ নির্দিষ্ট করিনি, তাই পরীক্ষাটি সময় সিরিজের দৈর্ঘ্যের উপর ভিত্তি করে একটি সংখ্যা পর্যন্ত চেষ্টা করবে, যা 17।

Const (Intercept) পাশাপাশি লাগানো হয়। মান 0.0596।

আসুন Scikit-learn-এ লিনিয়ার রিগ্রেশন ব্যবহার করে ADF পরীক্ষা বাস্তবায়ন করার চেষ্টা করি। চিত্র 8 হল কোড এবং আউটপুট।

চিত্র 8. Scikit-learn এর সাথে ADF পরীক্ষা (শুধুমাত্র রৈখিক রিগ্রেশন অংশ) (লেখকের ছবি)

ইন্টারসেপ্ট হল 0.0596, এবং অন্যান্য সহগগুলি চিত্র 7-এর মতই। স্কিট-লার্ন-এ রৈখিক রিগ্রেশন হল সাধারণ OLS। আমরা একই জিনিস করছি, তাই ফলাফলগুলি অভিন্ন হওয়াতে অবাক হওয়ার কিছু নেই।

যাত্রা শেষ

আমি কীভাবে প্যারামিটার সেট করব তা বের করার পরে, আমি সংস্করণ 1 (রিগ্রেশন ='n') ব্যবহার করে চিত্র 1-এ আসল সময় সিরিজ পরীক্ষা করেছি এবং 0.08 এর p-মান পেয়েছি, এটি স্থির নয় বলে পরামর্শ দিয়েছি। অনুগ্রহ করে মনে রাখবেন যে চিত্র 1-এর ডেটা শূন্য-গড়, তাই আপনি কল্পনা করতে পারেন যে (0,0) ডেটা পয়েন্টের (∆yᵢ, yᵢ₋₁) কাছাকাছি। সংস্করণ 1 পরীক্ষা আমাদের সাহায্য করবে।

যেহেতু চিত্র 1-এ প্রবণতা ঢালটি ন্যূনতম, আমরা টাইম সিরিজকে ধাপগুলির সাথে পুনরায় নমুনাও করতে পারি, যা ঢালকে বাড়িয়ে দেয়। উদাহরণস্বরূপ, যদি আমি এটিকে চারটি ধাপে পরীক্ষা করি ( value[::4] ), এটি ডিফল্ট সেটিং সহ ADF পরীক্ষায় উত্তীর্ণ হবে না (p-value হল 0.17 regression='c')।

সমস্যা সমাধান.

takeaways

ADF ফলাফল অন্ধভাবে বিশ্বাস করবেন না. ভিজ্যুয়ালাইজেশন আপনার বন্ধু.

ADF পরীক্ষা হল একটি সরল রৈখিক রিগ্রেশন, এবং স্ট্যাটস মডেলের বাস্তবায়ন রিগ্রেশন সমস্যা সমাধানের জন্য OLS ব্যবহার করে। তারপরে এটি ডিকি-ফুলার টেবিল ব্যবহার করে পি-মান বের করে যা নাল হাইপোথিসিসকে বৈধ করে যে ফিট করা রিগ্রেশন থেকে প্রথম ল্যাগ ভেরিয়েবলের সহগ 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 এর মাধ্যমে

<!–

->

সময় স্ট্যাম্প:

থেকে আরো ব্লকচেইন পরামর্শদাতা