এক্সপ্লোরেটরি ডেটা অ্যানালিসিস (EDA) হল ডেটার গঠন, প্যাটার্ন, সম্পর্ক, এবং অন্যান্য বৈশিষ্ট্যগুলো বুঝতে সুনির্দিষ্ট বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন পদ্ধতি ব্যবহার করা। টাইম সিরিজ ডেটার ক্ষেত্রে, EDA লক্ষ্য করে টাইম সিরিজের ট্রেন্ড, সিজনাল প্যাটার্ন, রেসিডুয়াল, এবং স্টেশনারিটি সঠিকভাবে চিহ্নিত করা। টাইম সিরিজ ডেটার EDA থেকে গুরুত্বপূর্ণ অন্তর্দৃষ্টি পাওয়া যায়, যা ভবিষ্যতের পূর্বাভাস মডেল তৈরি করতে সহায়ক।
টাইম সিরিজ ডেটার জন্য EDA করার সময় সাধারণত নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করা হয়:
বর্ণনা: টাইম সিরিজের প্রথম ধাপে, ডেটার প্রবণতা এবং সিজনাল প্যাটার্ন বুঝতে টাইম সিরিজ প্লট বা লাইন গ্রাফ তৈরি করা হয়। এটি টাইম সিরিজের গতিপথ এবং প্যাটার্নগুলো পরিষ্কারভাবে দেখানোর জন্য উপযুক্ত।
পদ্ধতি:
কোড উদাহরণ:
import matplotlib.pyplot as plt
# Sample time series data
time = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05']
values = [100, 120, 150, 130, 160]
plt.plot(time, values)
plt.title('Time Series Line Plot')
plt.xlabel('Time')
plt.ylabel('Values')
plt.grid(True)
plt.show()
বর্ণনা: ডেটার সিজনাল প্যাটার্ন এবং ট্রেন্ড চিহ্নিত করার জন্য টাইম সিরিজের মৌলিক উপাদানগুলো বিশ্লেষণ করা গুরুত্বপূর্ণ। সাধারণত মুভিং অ্যাভারেজ (Moving Average) বা ডিফারেন্সিং পদ্ধতি ব্যবহার করে ট্রেন্ড সরানো এবং সিজনাল প্যাটার্ন বের করা হয়।
পদ্ধতি:
কোড উদাহরণ:
import pandas as pd
import numpy as np
# Generate sample data
dates = pd.date_range(start='1/1/2020', periods=100, freq='D')
data = np.random.randn(100).cumsum()
# Convert to DataFrame
df = pd.DataFrame(data, index=dates, columns=['Value'])
# Plot original data and moving average
df['Moving_Avg'] = df['Value'].rolling(window=10).mean()
df.plot(title='Time Series with Moving Average')
plt.show()
বর্ণনা: টাইম সিরিজ বিশ্লেষণের জন্য স্টেশনারিটি খুবই গুরুত্বপূর্ণ। স্টেশনারিটি পরীক্ষার জন্য Augmented Dickey-Fuller (ADF) টেস্ট ব্যবহার করা হয়, যা ডেটার মধ্যে ট্রেন্ড বা সিজনাল প্যাটার্ন রয়েছে কিনা তা পরীক্ষা করে।
পদ্ধতি:
কোড উদাহরণ:
from statsmodels.tsa.stattools import adfuller
# ADF test
result = adfuller(df['Value'].dropna())
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
বর্ণনা: অটো-কোর্লেশন প্লট টাইম সিরিজের মধ্যে সময় পয়েন্টগুলোর মধ্যে সম্পর্ক বা সামঞ্জস্য বুঝতে ব্যবহৃত হয়। এটি PACF (Partial Autocorrelation Function) এবং ACF (Autocorrelation Function) দিয়ে করা হয়, যা ডেটার মধ্যে ল্যাগ (lag) সম্পর্ক দেখায়।
পদ্ধতি:
কোড উদাহরণ:
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# Plot Autocorrelation and Partial Autocorrelation
plot_acf(df['Value'].dropna(), lags=20)
plot_pacf(df['Value'].dropna(), lags=20)
plt.show()
বর্ণনা: টাইম সিরিজের ডিস্ট্রিবিউশন বা বন্টন চেক করতে হিস্টোগ্রাম প্লট করা হয়। এটি ডেটার ভ্যারিয়েন্স এবং স্কিউনেস (skewness) বিশ্লেষণ করতে সহায়ক।
পদ্ধতি:
কোড উদাহরণ:
# Plot histogram of the time series data
df['Value'].hist(bins=30)
plt.title('Histogram of Time Series Data')
plt.xlabel('Values')
plt.ylabel('Frequency')
plt.show()
টাইম সিরিজের জন্য EDA ডেটার গঠন এবং বিভিন্ন বৈশিষ্ট্য বিশ্লেষণ করার একটি গুরুত্বপূর্ণ প্রক্রিয়া। এটি ডেটার ট্রেন্ড, সিজনাল প্যাটার্ন, অটো-কোর্লেশন এবং স্টেশনারিটি নির্ধারণ করতে সাহায্য করে। EDA এর মাধ্যমে আমরা ডেটার মধ্যে প্যাটার্ন এবং সম্পর্ক খুঁজে বের করতে পারি, যা ভবিষ্যতের পূর্বাভাসের জন্য অত্যন্ত গুরুত্বপূর্ণ।
টাইম সিরিজ ডেটা বিশ্লেষণে ট্রেন্ড এবং সিজনালিটি চিহ্নিত করতে ভিজ্যুয়ালাইজেশন অত্যন্ত গুরুত্বপূর্ণ। লাইন প্লট, হিস্টোগ্রাম, এবং অটো-কোর্লেশন প্লটের মতো ভিজ্যুয়ালাইজেশন পদ্ধতিগুলো ট্রেন্ড এবং সিজনালিটি বিশ্লেষণে সহায়ক হতে পারে। এখানে কিছু গুরুত্বপূর্ণ ভিজ্যুয়ালাইজেশন পদ্ধতি ব্যবহার করে ট্রেন্ড এবং সিজনালিটি চিহ্নিত করার পদ্ধতি আলোচনা করা হলো।
লাইন প্লট টাইম সিরিজ ডেটার প্রধান ভিজ্যুয়ালাইজেশন পদ্ধতি, যা ডেটার সময়ের সাথে পরিবর্তন দেখানোর জন্য ব্যবহৃত হয়। এটি ট্রেন্ড এবং সিজনালিটি চিহ্নিত করার জন্য অত্যন্ত কার্যকর।
উদাহরণ:
import matplotlib.pyplot as plt
import pandas as pd
# Sample time series data
data = {'Date': ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06'],
'Value': [100, 120, 150, 130, 160, 180]}
df = pd.DataFrame(data)
plt.plot(df['Date'], df['Value'])
plt.title('Trend and Seasonality in Time Series')
plt.xlabel('Time')
plt.ylabel('Values')
plt.grid(True)
plt.show()
এই প্লটে আপনি যদি লম্বা সময় ধরে বৃদ্ধি বা হ্রাস দেখতে পান, তা হলে এটি ট্রেন্ড। এছাড়া, যদি এক বা একাধিক ঋতু বা মাসের মধ্যে পুনরাবৃত্তি ঘটে, তা হলে এটি সিজনালিটি।
ডিকম্পোজড প্লট টাইম সিরিজ ডেটার ট্রেন্ড, সিজনাল এবং রেসিডুয়াল (অথবা এলোমেলো পরিবর্তন) উপাদানগুলি আলাদাভাবে দেখানোর জন্য ব্যবহৃত হয়। এটি statsmodels
লাইব্রেরির seasonal_decompose
ফাংশন ব্যবহার করে তৈরি করা যায়। এটি বিশেষভাবে ট্রেন্ড এবং সিজনাল প্যাটার্ন চিহ্নিত করতে কার্যকর।
উদাহরণ:
from statsmodels.tsa.seasonal import seasonal_decompose
import matplotlib.pyplot as plt
# Sample time series data
df = pd.DataFrame({'Date': pd.date_range('2020-01-01', periods=12, freq='M'),
'Value': [100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 320]})
df.set_index('Date', inplace=True)
# Decompose the time series
decomposition = seasonal_decompose(df['Value'], model='additive', period=12)
# Plot the decomposition
decomposition.plot()
plt.show()
এই প্লটে আপনি আলাদাভাবে ট্রেন্ড, সিজনালিটি, এবং রেসিডুয়াল দেখতে পাবেন, যা টাইম সিরিজের ভিন্ন উপাদানগুলোর বোঝাতে সাহায্য করবে।
অটো-কোর্লেশন প্লট টাইম সিরিজ ডেটার মধ্যে পূর্ববর্তী সময়ের মানের সাথে বর্তমান মানের সম্পর্ক দেখায়। এটি সিজনালিটি এবং ট্রেন্ড চিহ্নিত করতে সহায়ক, বিশেষত যখন ডেটাতে কোনো ল্যাগ (lag) বা সময়ের মধ্যে সম্পর্ক থাকে।
উদাহরণ:
from statsmodels.graphics.tsaplots import plot_acf
import numpy as np
# Sample data
data = np.random.normal(0, 1, 100)
# Plot autocorrelation
plot_acf(data, lags=30)
plt.title('Autocorrelation Plot')
plt.show()
অটো-কোর্লেশন প্লটের মাধ্যমে আপনি সহজেই সিজনাল প্যাটার্ন এবং সম্পর্ক চিহ্নিত করতে পারবেন।
ডেটার ট্রেন্ড এবং সিজনালিটি চিহ্নিত করতে বিভিন্ন ভিজ্যুয়ালাইজেশন পদ্ধতি ব্যবহার করা যেতে পারে, যেমন লাইন প্লট, ডিকম্পোজড প্লট এবং অটো-কোর্লেশন প্লট। এই ভিজ্যুয়ালাইজেশনগুলো ডেটার প্যাটার্ন এবং উপাদান বুঝতে সাহায্য করে, যা পরবর্তী বিশ্লেষণ এবং পূর্বাভাস তৈরির জন্য অত্যন্ত গুরুত্বপূর্ণ।
টাইম সিরিজ ডিকম্পোজিশন হলো টাইম সিরিজের মূল উপাদানগুলো আলাদা করার প্রক্রিয়া, যাতে ট্রেন্ড (Trend), সিজনালিটি (Seasonality), এবং রেসিডুয়াল (Residuals) বা র্যান্ডম ভ্যারিয়েশন চিহ্নিত করা যায়। এটি টাইম সিরিজের বিভিন্ন অংশকে বোঝার জন্য সহায়ক এবং ভবিষ্যতের পূর্বাভাস তৈরি করার জন্য খুবই গুরুত্বপূর্ণ।
টাইম সিরিজ ডিকম্পোজিশনের দুটি মূল মডেল রয়েছে:
বর্ণনা: অ্যাডিটিভ মডেলটি এমন একটি টাইম সিরিজ ডিকম্পোজিশন মডেল যেখানে টাইম সিরিজের উপাদানগুলো একে অপরকে যোগ করে গঠিত হয়। এখানে ট্রেন্ড, সিজনাল প্যাটার্ন এবং রেসিডুয়াল একে অপরের সাথে যোগ করা হয়, এবং তারা একে অপরের উপর নির্ভরশীল না হয়ে স্বাধীনভাবে পরিবর্তিত হতে পারে।
ফর্মুলা:
Yt=Tt+St+Rt
যেখানে:
ব্যবহার: অ্যাডিটিভ মডেলটি ব্যবহার করা হয় যখন টাইম সিরিজে সিজনালিটি বা ট্রেন্ডের প্রভাব অপরিবর্তিত থাকে এবং এর প্রভাব সমানভাবে বিস্তার লাভ করে, অর্থাৎ সিজনাল পরিবর্তনগুলোর আকার বা স্কেল ট্রেন্ড বা অন্যান্য উপাদানগুলোর উপর নির্ভর করে না।
উদাহরণ:
বর্ণনা: মাল্টিপ্লিকেটিভ মডেলটি এমন একটি টাইম সিরিজ ডিকম্পোজিশন মডেল যেখানে টাইম সিরিজের উপাদানগুলো একে অপরকে গুণ করে গঠিত হয়। এখানে, ট্রেন্ড, সিজনাল প্যাটার্ন এবং রেসিডুয়াল একে অপরের সাথে গুণিত হয় এবং তাদের মধ্যে একটি পরিমাণগত সম্পর্ক থাকতে পারে।
ফর্মুলা:
Yt=Tt×St×Rt
যেখানে:
ব্যবহার: মাল্টিপ্লিকেটিভ মডেলটি ব্যবহৃত হয় যখন সিজনাল পরিবর্তনগুলি ট্রেন্ডের সাথে সম্পর্কিত থাকে এবং তাদের প্রভাব একে অপরকে গুণের মাধ্যমে বৃদ্ধি বা হ্রাস পায়। সাধারণত যখন সিজনাল পরিবর্তন বা ট্রেন্ডের প্রভাব সময়ের সাথে বৃদ্ধি পায় বা সংকুচিত হয়, তখন এটি ব্যবহার করা হয়।
উদাহরণ:
টাইম সিরিজ ডিকম্পোজিশন হলো টাইম সিরিজের উপাদানগুলো আলাদা করার প্রক্রিয়া, যা ট্রেন্ড, সিজনাল প্যাটার্ন এবং রেসিডুয়ালকে চিহ্নিত করে। এটি দুই ধরনের মডেল ব্যবহার করে:
এই মডেলগুলির সাহায্যে টাইম সিরিজের প্রকৃত গঠন এবং ভবিষ্যত পূর্বাভাস সহজে নির্ধারণ করা যায়।
অটো-কোর্লেশন ফাংশন (ACF) এবং পারশিয়াল অটো-কোর্লেশন ফাংশন (PACF) হলো টাইম সিরিজ বিশ্লেষণের গুরুত্বপূর্ণ টুল যা টাইম সিরিজের ডেটার মধ্যে স্ব-সম্পর্ক (self-correlation) বা ল্যাগ (lag) সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। এই দুটি ফাংশন টাইম সিরিজের ভবিষ্যত পয়েন্টের পূর্বাভাসে সহায়ক হতে পারে, কারণ এটি নির্ধারণ করে যে কোন অতীত ডেটা পয়েন্ট বর্তমান মানের সাথে সম্পর্কিত।
বর্ণনা: অটো-কোর্লেশন ফাংশন (ACF) টাইম সিরিজের মধ্যে একটি ডেটা পয়েন্টের বর্তমান মান এবং অতীত মানের মধ্যে সম্পর্ক বা কোরেলেশন নির্ধারণ করে। এটি ডেটার সময়ের সাথে স্ব-সম্পর্ক বিশ্লেষণ করে। ACF দ্বারা একটি নির্দিষ্ট ল্যাগ (lag) এর জন্য, বর্তমান মান এবং পূর্ববর্তী মানের মধ্যে সম্পর্কের শক্তি এবং দিক চিহ্নিত করা হয়।
ACF কী করে:
উদাহরণ:
কোড উদাহরণ (Python):
from statsmodels.graphics.tsaplots import plot_acf
import matplotlib.pyplot as plt
import numpy as np
# Sample time series data
data = np.random.normal(0, 1, 100)
# Plot Autocorrelation
plot_acf(data, lags=30)
plt.title('Autocorrelation Function (ACF)')
plt.show()
বর্ণনা: পারশিয়াল অটো-কোর্লেশন ফাংশন (PACF) হল একটি উন্নত ধরনের অটো-কোর্লেশন, যা শুধুমাত্র একটি নির্দিষ্ট ল্যাগ এর জন্য সোজাসুজি সম্পর্ক চিহ্নিত করে, অন্য ল্যাগের প্রভাবকে সরিয়ে ফেলে। PACF নিশ্চিত করে যে একটি নির্দিষ্ট ল্যাগের জন্য, অতীতের অন্যান্য পয়েন্টগুলি বর্তমান মানের সাথে সম্পর্কিত হতে পারে কিনা। এটি ACF থেকে আলাদা, কারণ PACF আগের ল্যাগের প্রভাবগুলি হিসাব থেকে বাদ দেয়।
PACF কী করে:
উদাহরণ:
কোড উদাহরণ (Python):
from statsmodels.graphics.tsaplots import plot_pacf
import matplotlib.pyplot as plt
import numpy as np
# Sample time series data
data = np.random.normal(0, 1, 100)
# Plot Partial Autocorrelation
plot_pacf(data, lags=30)
plt.title('Partial Autocorrelation Function (PACF)')
plt.show()
বিষয় | ACF | PACF |
---|---|---|
অর্থ | টাইম সিরিজের মধ্যে একাধিক ল্যাগের মধ্যে সম্পর্ক। | নির্দিষ্ট ল্যাগের জন্য সম্পর্ক, আগের ল্যাগের প্রভাব বাদ দিয়ে। |
কী চিহ্নিত করে | প্রতিটি ল্যাগের জন্য মোট সম্পর্ক। | শুধুমাত্র নির্দিষ্ট ল্যাগের জন্য সম্পর্ক। |
ব্যবহার | MA (Moving Average) মডেল নির্বাচন। | AR (AutoRegressive) মডেল নির্বাচন। |
অটো-কোর্লেশন ফাংশন (ACF) এবং পারশিয়াল অটো-কোর্লেশন ফাংশন (PACF) হল টাইম সিরিজ বিশ্লেষণের গুরুত্বপূর্ণ টুল যা টাইম সিরিজের প্যাটার্ন, ট্রেন্ড এবং সম্পর্ক চিহ্নিত করতে সাহায্য করে। ACF ডেটার সাথে মোট সম্পর্কের একটি ভিউ প্রদান করে, যেখানে PACF শুধুমাত্র নির্দিষ্ট ল্যাগের জন্য সম্পর্ক দেখায়। ACF এবং PACF-এর ব্যবহারের মাধ্যমে উপযুক্ত টাইম সিরিজ মডেল নির্বাচন করা যায়, যেমন ARIMA মডেল।
টাইম সিরিজ ডেটার স্টেশনারিটি যাচাই করা গুরুত্বপূর্ণ, কারণ স্টেশনারিটি ডেটার গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে অপরিবর্তিত থাকা নিশ্চিত করে, যা পূর্বাভাস তৈরির জন্য একটি প্রয়োজনীয় শর্ত। স্টেশনারিটি চেক করার জন্য দুটি জনপ্রিয় স্ট্যাটিস্টিক্যাল টেস্ট রয়েছে: ADF টেস্ট (Augmented Dickey-Fuller Test) এবং KPSS টেস্ট (Kwiatkowski-Phillips-Schmidt-Shin Test)।
বর্ণনা: ADF টেস্ট একটি স্ট্যাটিস্টিক্যাল টেস্ট যা টাইম সিরিজে স্টেশনারিটির উপস্থিতি বা অনুপস্থিতি যাচাই করতে ব্যবহৃত হয়। এটি ডিকি-ফুলার টেস্টের সম্প্রসারিত সংস্করণ, যা টাইম সিরিজে ট্রেন্ডের উপস্থিতি চেক করে। এই টেস্টটি মূলত নাল হাইপোথিসিস (Null Hypothesis) হিসেবে স্টেশনারিটি না থাকার ধারণা (i.e., টাইম সিরিজ ইউনিট রুট সহ) পরীক্ষা করে।
কিভাবে কাজ করে:
উদাহরণ (Python):
from statsmodels.tsa.stattools import adfuller
# Sample time series data
data = [100, 120, 150, 130, 160, 180, 200] # Example data
# Perform Augmented Dickey-Fuller test
result = adfuller(data)
# Output ADF Statistic and p-value
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
বর্ণনা: KPSS টেস্ট হল আরেকটি জনপ্রিয় টেস্ট, যা টাইম সিরিজের স্টেশনারিটি যাচাই করতে ব্যবহৃত হয়। KPSS টেস্ট ADF টেস্টের বিপরীতভাবে কাজ করে। এই টেস্টের নাল হাইপোথিসিস হল যে টাইম সিরিজ স্টেশনারি (অথবা এটি ট্রেন্ড-স্টেশনারি) এবং বিকল্প হাইপোথিসিস হল টাইম সিরিজে ইউনিট রুট রয়েছে, অর্থাৎ এটি স্টেশনারি নয়।
কিভাবে কাজ করে:
উদাহরণ (Python):
from statsmodels.tsa.stattools import kpss
# Sample time series data
data = [100, 120, 150, 130, 160, 180, 200] # Example data
# Perform KPSS test
result = kpss(data, regression='c')
# Output KPSS Statistic and p-value
print(f'KPSS Statistic: {result[0]}')
print(f'p-value: {result[1]}')
স্টেশনারিটি চেক করার জন্য ADF টেস্ট এবং KPSS টেস্ট দুটি জনপ্রিয় পদ্ধতি। ADF টেস্ট ইউনিট রুট চেক করে এবং KPSS টেস্ট স্টেশনারিটি চেক করে। দুটি টেস্টই স্টেশনারিটির উপস্থিতি বা অনুপস্থিতি যাচাই করার জন্য ব্যবহৃত হয়, তবে তাদের পদ্ধতি এবং হাইপোথিসিস ভিন্ন। এভাবে, টাইম সিরিজ ডেটার মডেলিং এবং পূর্বাভাস তৈরিতে স্টেশনারিটি নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ।
Read more