Seasonality হল টাইম সিরিজের একটি গুরুত্বপূর্ণ উপাদান, যেখানে নির্দিষ্ট সময়ে (যেমন, মাস, বছর বা সপ্তাহ) একটি নির্দিষ্ট প্যাটার্ন বা পরিবর্তন ঘটে। ব্যবসায়, অর্থনীতি, আবহাওয়া এবং অন্যান্য ক্ষেত্রগুলিতে সিজনাল পরিবর্তন বিশ্লেষণ অত্যন্ত গুরুত্বপূর্ণ। সিজনালিটি হ্যান্ডলিং করার জন্য Moving Average এবং Differencing দুটি সাধারণ এবং কার্যকর পদ্ধতি।
এগুলো ব্যবহার করে টাইম সিরিজের সিজনাল প্যাটার্ন সরিয়ে স্টেশনারিটি নিশ্চিত করা যায়, যা পূর্বাভাসের জন্য সহায়ক। নিচে এই দুটি পদ্ধতির বিস্তারিত ব্যাখ্যা দেওয়া হলো।
১. Moving Average (মুভিং অ্যাভারেজ)
বর্ণনা:
মুভিং অ্যাভারেজ একটি স্ট্যাটিস্টিক্যাল পদ্ধতি যা একটি নির্দিষ্ট সময়সীমার (window) মধ্যে ডেটার গড় (mean) নিয়ে সিজনাল প্যাটার্ন এবং অস্থিরতা (fluctuations) সরিয়ে ফেলে। এটি টাইম সিরিজের চিত্র বা প্যাটার্ন পরিষ্কার করে এবং সিজনাল প্যাটার্ন বা ট্রেন্ডের প্রভাব দূর করতে সহায়ক।
কিভাবে কাজ করে:
- মুভিং অ্যাভারেজ সাধারণত একটি নির্দিষ্ট উইন্ডো (যেমন 3 মাস, 6 মাস বা 12 মাস) ব্যবহার করে। এই উইন্ডোর মাধ্যমে প্রত্যেকটা ডেটা পয়েন্টের গড় বের করা হয় এবং ঐ গড়টির সাথে টাইম সিরিজের বর্তমান মানগুলির তুলনা করা হয়। এতে সিজনাল প্যাটার্ন মসৃণ হয়ে যায়।
Steps for Seasonal Adjustment using Moving Average:
- নির্দিষ্ট সময়সীমার জন্য moving average বের করুন।
- ডেটা পয়েন্ট থেকে moving average মাইনাস করুন, যাতে সিজনাল প্যাটার্ন সরানো যায়।
উদাহরণ:
ধরা যাক, আপনি মাসিক বিক্রয় ডেটা বিশ্লেষণ করছেন এবং প্রতি বছরের শেষে বিক্রয়ের চাহিদা বেড়ে যাচ্ছে (এটি সিজনাল প্যাটার্ন হতে পারে)। আপনি 12 মাসের moving average ব্যবহার করে সিজনাল প্যাটার্ন সরাতে পারেন।
import pandas as pd
# Sample monthly sales data with seasonality
sales_data = [120, 130, 125, 145, 150, 155, 160, 165, 170, 180, 200, 220]
# Calculate 12-month moving average
sales_series = pd.Series(sales_data)
moving_avg = sales_series.rolling(window=12).mean()
# Subtract moving average from the original data to remove seasonality
adjusted_sales = sales_series - moving_avg
print(adjusted_sales)
২. Differencing (ডিফারেন্সিং)
বর্ণনা: Differencing একটি পদ্ধতি যা টাইম সিরিজ ডেটার পরিবর্তনশীলতা এবং সিজনাল প্যাটার্ন হ্রাস করতে ব্যবহৃত হয়। এই পদ্ধতিতে, এক সময়ের মান এবং তার পূর্ববর্তী সময়ের মানের পার্থক্য বের করা হয়, যার মাধ্যমে সিজনাল প্যাটার্ন সরিয়ে স্টেশনারিটি নিশ্চিত করা হয়।
কিভাবে কাজ করে:
- ডিফারেন্সিং একটি টাইম সিরিজের প্রতিটি পয়েন্টের সাথে তার আগের পয়েন্টের পার্থক্য বের করে, এবং এর মাধ্যমে সিজনাল প্যাটার্ন এবং ট্রেন্ড দূর হয়।
- সাধারণত, সিজনাল ডিফারেন্সিং এবং নন-সিজনাল ডিফারেন্সিং করা হয়।
- সিজনাল ডিফারেন্সিং: একটি নির্দিষ্ট ল্যাগ পিরিয়ড ব্যবহার করে (যেমন 12 মাস বা 4 ত্রৈমাসিক) পয়েন্টগুলির পার্থক্য বের করা।
- নন-সিজনাল ডিফারেন্সিং: সাধারণত এক সময়ের মান এবং আগের সময়ের মানের পার্থক্য।
Steps for Seasonal Adjustment using Differencing:
- Seasonal differencing (যেমন, 12 মাসের ল্যাগ ব্যবহার) করুন।
- সিজনাল পার্থক্য (difference) বের করুন এবং সিজনাল প্যাটার্ন হ্যান্ডল করুন।
উদাহরণ:
ধরা যাক, আপনার কাছে মাসিক বিক্রয় ডেটা রয়েছে এবং আপনি সিজনাল প্যাটার্ন দূর করতে চান। আপনি 12 মাসের সিজনাল ডিফারেন্সিং করতে পারেন।
# Sample monthly sales data
sales_data = [120, 130, 125, 145, 150, 155, 160, 165, 170, 180, 200, 220]
# Convert to pandas series
sales_series = pd.Series(sales_data)
# Apply seasonal differencing with a lag of 12 months
seasonal_diff = sales_series - sales_series.shift(12)
# Display the seasonal differenced data
print(seasonal_diff)
Moving Average এবং Differencing এর মধ্যে পার্থক্য
- মুভিং অ্যাভারেজ:
- একটি নির্দিষ্ট উইন্ডো বা সময়সীমার মধ্যে গড় নিয়ে সিজনাল প্যাটার্ন মসৃণ করে।
- সিজনাল প্যাটার্নের মিডিয়াম হ্যান্ডলিংয়ের জন্য ব্যবহার করা হয়।
- ডিফারেন্সিং:
- ডেটার পার্থক্য নিয়ে সিজনাল প্যাটার্ন সরায়।
- সিজনাল প্যাটার্ন বা ট্রেন্ড সরিয়ে ডেটাকে স্টেশনারি করা হয়।
সারাংশ
Seasonality Adjust করতে Moving Average এবং Differencing দুটি গুরুত্বপূর্ণ পদ্ধতি। Moving Average সিজনাল প্যাটার্নকে মসৃণ করে এবং সিজনালিটি দূর করতে সহায়ক। অন্যদিকে, Differencing টাইম সিরিজ ডেটা থেকে সিজনাল প্যাটার্ন সরিয়ে স্টেশনারিটি অর্জন করতে সাহায্য করে। এই পদ্ধতিগুলোর মাধ্যমে টাইম সিরিজ ডেটার সিজনাল প্যাটার্ন ঠিক করে, যা ভবিষ্যৎ পূর্বাভাস এবং অন্যান্য বিশ্লেষণে সহায়ক।
Read more