SARIMA (Seasonal Autoregressive Integrated Moving Average) মডেল একটি শক্তিশালী টাইম সিরিজ ফোরকাস্টিং মডেল, যা ARIMA মডেলের একটি সম্প্রসারণ এবং সিজনাল প্যাটার্ন বা ঋতুবদ্ধ পরিবর্তনসমূহ (seasonality) বিবেচনায় নেয়। SARIMA মডেলটি ট্রেন্ড এবং সিজনাল প্যাটার্নসহ অন্যান্য উপাদানগুলো বিশ্লেষণ করতে পারে, এবং এর মাধ্যমে টাইম সিরিজ ডেটার ভবিষ্যতের পূর্বাভাস করা সম্ভব হয়।
SARIMA মডেলের গঠন
SARIMA মডেলের গঠন নিম্নরূপ:
এখানে,
- : অটো-রিগ্রেসিভ (AR) অর্ডার (Lag পিরিয়ড)
- : ডিফারেন্সিংয়ের অর্ডার (স্টেশনারিটি অর্জনের জন্য)
- : মুভিং এভারেজ (MA) অর্ডার
- : সিজনাল অটো-রিগ্রেসিভ (Seasonal AR) অর্ডার
- : সিজনাল ডিফারেন্সিং (Seasonal differencing) অর্ডার
- : সিজনাল মুভিং এভারেজ (Seasonal MA) অর্ডার
- : সিজনাল পিরিয়ড (ঋতু বা সিজনাল প্যাটার্নের দৈর্ঘ্য)
SARIMA মডেলটি একটি টাইম সিরিজের সিজনাল এবং নন-সিজনাল উপাদানকে একত্রিত করে ভবিষ্যতের পূর্বাভাস তৈরি করে।
SARIMA মডেলের কার্যপ্রণালী:
- ডেটার সিজনাল প্যাটার্ন শনাক্ত করা: প্রথমে, টাইম সিরিজের সিজনাল প্যাটার্ন বা ঋতুবদ্ধ পরিবর্তন শনাক্ত করা হয়। এটি অটো-কোর্লেশন প্লট (ACF) বা পার্টিয়াল অটো-কোর্লেশন প্লট (PACF) ব্যবহার করে সিজনাল ল্যাগ শনাক্ত করতে সাহায্য করে।
- মডেল প্যারামিটার নির্বাচন:
- নির্বাচন করতে ACF এবং PACF প্লট ব্যবহার করা হয়।
- সিজনাল প্যারামিটার সিজনাল প্লট বা পিরিয়ডের মাধ্যমে নির্ধারণ করা হয়।
- মডেল ফিট করা: SARIMA মডেলটি একটি নির্দিষ্ট ডেটা সেটে ফিট করা হয়। এর জন্য Python এর
statsmodelsলাইব্রেরি বা অন্যান্য স্ট্যাটিস্টিক্যাল টুল ব্যবহার করা যেতে পারে। - ফোরকাস্টিং: মডেলটি ফিট করার পরে, ভবিষ্যতের জন্য পূর্বাভাস তৈরি করা হয়।
Python এ SARIMA মডেল ব্যবহার করা
নিচে SARIMA মডেল ব্যবহার করে টাইম সিরিজ ফোরকাস্টিংয়ের একটি উদাহরণ দেওয়া হলো:
ধরা যাক, আমাদের কাছে একটি টাইম সিরিজ ডেটা আছে এবং আমরা সেটি SARIMA মডেল ব্যবহার করে ভবিষ্যতের জন্য পূর্বাভাস করতে চাই।
১. প্রয়োজনীয় লাইব্রেরি ইনস্টল করা:
pip install statsmodels pandas matplotlib
২. কোড উদাহরণ:
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.statespace.sarimax import SARIMAX
# Sample time series data (monthly sales data)
data = {'Month': ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06', '2020-07', '2020-08', '2020-09', '2020-10', '2020-11', '2020-12'],
'Sales': [200, 210, 215, 225, 230, 240, 250, 260, 270, 280, 290, 300]}
# Convert the data to a DataFrame
df = pd.DataFrame(data)
df['Month'] = pd.to_datetime(df['Month'], format='%Y-%m')
df.set_index('Month', inplace=True)
# Plot the data
df.plot()
plt.title('Monthly Sales Data')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.show()
# Fit the SARIMA model
model = SARIMAX(df['Sales'],
order=(1, 1, 1), # AR, I, MA parameters (p, d, q)
seasonal_order=(1, 1, 1, 12), # Seasonal AR, I, MA parameters (P, D, Q, s)
enforce_stationarity=False, enforce_invertibility=False)
# Fit the model
sarima_model = model.fit()
# Make a forecast
forecast = sarima_model.get_forecast(steps=6) # Forecast the next 6 months
forecast_values = forecast.predicted_mean
# Plot the forecast
plt.figure(figsize=(10,6))
plt.plot(df.index, df['Sales'], label='Historical Data')
plt.plot(pd.date_range(df.index[-1], periods=7, freq='M')[1:], forecast_values, label='Forecast', color='red')
plt.title('SARIMA Forecasting for Next 6 Months')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.legend()
plt.show()
কোডের বিশ্লেষণ:
- ডেটা প্রস্তুতি: প্রথমে টাইম সিরিজ ডেটা প্রস্তুত করা হয় এবং এটি একটি pandas DataFrame এ রূপান্তরিত করা হয়।
- SARIMA মডেল ফিট করা:
SARIMAXক্লাস ব্যবহার করে SARIMA মডেলটি তৈরি করা হয়, যেখানে:order=(1, 1, 1)হল AR, I, MA প্যারামিটার।seasonal_order=(1, 1, 1, 12)হল সিজনাল AR, I, MA প্যারামিটার এবং সিজনাল পিরিয়ড 12 মাস (মাসিক ডেটার জন্য)।
- ফোরকাস্টিং: মডেলটি ভবিষ্যতের 6 মাসের জন্য পূর্বাভাস তৈরি করে।
- ভিজ্যুয়ালাইজেশন: পূর্বাভাসের সাথে ঐতিহাসিক ডেটা প্লট করা হয়।
SARIMA মডেল কিভাবে কাজ করে:
- অটো-রিগ্রেসিভ উপাদান (AR): এটি পূর্ববর্তী সময়ের মানের উপর ভিত্তি করে বর্তমান মান অনুমান করে।
- মুভিং এভারেজ উপাদান (MA): এটি পূর্ববর্তী ত্রুটি (error) বা গোলমাল এর উপর ভিত্তি করে বর্তমান মান অনুমান করে।
- সিজনাল উপাদান: SARIMA সিজনাল উপাদানগুলো (ঋতুবদ্ধ প্রবণতা) গ্রহণ করে, যেমন বছরে ১২ মাস, বা অন্য কোনো ঋতু অনুযায়ী।
- ডিফারেন্সিং (Differencing): টাইম সিরিজের স্টেশনারিটি অর্জন করতে ডিফারেন্সিং প্রয়োগ করা হয়, যা টেম্পোরারি ট্রেন্ড বা সিজনাল প্যাটার্ন দূর করতে সাহায্য করে।
সারাংশ
SARIMA মডেল টাইম সিরিজ ডেটার সিজনাল এবং নন-সিজনাল উপাদানগুলো একত্রিত করে ভবিষ্যতের পূর্বাভাস তৈরি করে। এটি ARIMA মডেলের একটি সম্প্রসারণ, যা টাইম সিরিজে সিজনাল প্যাটার্ন এবং অন্যান্য পরিবর্তন বিশ্লেষণ করতে সাহায্য করে। SARIMA মডেল ব্যবহার করে আমরা টাইম সিরিজের ট্রেন্ড, সিজনালিটি এবং মুভিং এভারেজ সংক্রান্ত তথ্যগুলোকে মডেল করতে এবং ভবিষ্যত মান পূর্বাভাস করতে পারি।
Read more