Loading [MathJax]/jax/output/CommonHTML/jax.js

Exploratory Data Analysis (EDA) for Time Series

Machine Learning - টাইম সিরিজ (Time Series)
165
165

এক্সপ্লোরেটরি ডেটা অ্যানালিসিস (EDA) হল ডেটার গঠন, প্যাটার্ন, সম্পর্ক, এবং অন্যান্য বৈশিষ্ট্যগুলো বুঝতে সুনির্দিষ্ট বিশ্লেষণ এবং ভিজ্যুয়ালাইজেশন পদ্ধতি ব্যবহার করা। টাইম সিরিজ ডেটার ক্ষেত্রে, EDA লক্ষ্য করে টাইম সিরিজের ট্রেন্ড, সিজনাল প্যাটার্ন, রেসিডুয়াল, এবং স্টেশনারিটি সঠিকভাবে চিহ্নিত করা। টাইম সিরিজ ডেটার EDA থেকে গুরুত্বপূর্ণ অন্তর্দৃষ্টি পাওয়া যায়, যা ভবিষ্যতের পূর্বাভাস মডেল তৈরি করতে সহায়ক।

টাইম সিরিজ ডেটার জন্য EDA করার সময় সাধারণত নিম্নলিখিত পদক্ষেপগুলো অনুসরণ করা হয়:


১. টাইম সিরিজের প্লট তৈরি করা (Line Plot)

বর্ণনা: টাইম সিরিজের প্রথম ধাপে, ডেটার প্রবণতা এবং সিজনাল প্যাটার্ন বুঝতে টাইম সিরিজ প্লট বা লাইন গ্রাফ তৈরি করা হয়। এটি টাইম সিরিজের গতিপথ এবং প্যাটার্নগুলো পরিষ্কারভাবে দেখানোর জন্য উপযুক্ত।

পদ্ধতি:

  • x-axis: সময় (যেমন: মাস, বছর, দিন)
  • y-axis: ডেটার মান (যেমন: বিক্রয় সংখ্যা, তাপমাত্রা, স্টক প্রাইস)

কোড উদাহরণ:

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) বা ডিফারেন্সিং পদ্ধতি ব্যবহার করে ট্রেন্ড সরানো এবং সিজনাল প্যাটার্ন বের করা হয়।

পদ্ধতি:

  • মুভিং অ্যাভারেজ: কিছু পরিমাণ সময় ধরে গড় বের করে ট্রেন্ড বা সিজনাল প্যাটার্ন সরানো।
  • ডিফারেন্সিং (Differencing): ডেটার পার্থক্য বের করে স্টেশনারিটি অর্জন করা।

কোড উদাহরণ:

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()

৩. স্টেশনারিটি পরীক্ষা করা (Stationarity Test)

বর্ণনা: টাইম সিরিজ বিশ্লেষণের জন্য স্টেশনারিটি খুবই গুরুত্বপূর্ণ। স্টেশনারিটি পরীক্ষার জন্য Augmented Dickey-Fuller (ADF) টেস্ট ব্যবহার করা হয়, যা ডেটার মধ্যে ট্রেন্ড বা সিজনাল প্যাটার্ন রয়েছে কিনা তা পরীক্ষা করে।

পদ্ধতি:

  • ADF টেস্ট: হাইপোথিসিস টেস্টের মাধ্যমে ডেটার স্টেশনারিটি পরীক্ষা করা হয়।
    • Null Hypothesis (H0): টাইম সিরিজে ইউনিট রুট (non-stationary) রয়েছে।
    • Alternative Hypothesis (H1): টাইম সিরিজ স্টেশনারি।

কোড উদাহরণ:

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]}')

৪. অটো-কোর্লেশন প্লট (Autocorrelation Plot)

বর্ণনা: অটো-কোর্লেশন প্লট টাইম সিরিজের মধ্যে সময় পয়েন্টগুলোর মধ্যে সম্পর্ক বা সামঞ্জস্য বুঝতে ব্যবহৃত হয়। এটি PACF (Partial Autocorrelation Function) এবং ACF (Autocorrelation Function) দিয়ে করা হয়, যা ডেটার মধ্যে ল্যাগ (lag) সম্পর্ক দেখায়।

পদ্ধতি:

  • অটো-কোর্লেশন চেক করতে ACF এবং PACF প্লট ব্যবহার করা হয়, যাতে ডেটার গতিপথ এবং সিজনাল প্যাটার্ন বোঝা যায়।

কোড উদাহরণ:

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()

৫. হিস্টোগ্রাম (Histogram) এবং ডিস্ট্রিবিউশন চেক করা

বর্ণনা: টাইম সিরিজের ডিস্ট্রিবিউশন বা বন্টন চেক করতে হিস্টোগ্রাম প্লট করা হয়। এটি ডেটার ভ্যারিয়েন্স এবং স্কিউনেস (skewness) বিশ্লেষণ করতে সহায়ক।

পদ্ধতি:

  • হিস্টোগ্রাম ব্যবহার করে ডেটার গড়, মধ্যম এবং স্কিউনেস চেক করা।
  • ডেটার কোনো অস্বাভাবিক বন্টন বা আউটলায়ার (outliers) শনাক্ত করা।

কোড উদাহরণ:

# 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 এর মাধ্যমে আমরা ডেটার মধ্যে প্যাটার্ন এবং সম্পর্ক খুঁজে বের করতে পারি, যা ভবিষ্যতের পূর্বাভাসের জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By

Data Visualizations এর মাধ্যমে Trend এবং Seasonality চিহ্নিত করা

92
92

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


১. লাইন প্লট (Line Plot)

লাইন প্লট টাইম সিরিজ ডেটার প্রধান ভিজ্যুয়ালাইজেশন পদ্ধতি, যা ডেটার সময়ের সাথে পরিবর্তন দেখানোর জন্য ব্যবহৃত হয়। এটি ট্রেন্ড এবং সিজনালিটি চিহ্নিত করার জন্য অত্যন্ত কার্যকর।

  • ট্রেন্ড চিহ্নিতকরণ: যদি ডেটাতে দীর্ঘমেয়াদী বৃদ্ধি বা হ্রাস থাকে, তাহলে সেটি একটি ট্রেন্ড হবে।
  • সিজনালিটি চিহ্নিতকরণ: যদি ডেটাতে নির্দিষ্ট সময়ে বা নির্দিষ্ট সময়ের পরপর একই প্যাটার্ন দেখা যায়, যেমন ঋতু বা মাসের শেষে বৃদ্ধি, তাহলে তা সিজনালিটি।

উদাহরণ:

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()

এই প্লটে আপনি যদি লম্বা সময় ধরে বৃদ্ধি বা হ্রাস দেখতে পান, তা হলে এটি ট্রেন্ড। এছাড়া, যদি এক বা একাধিক ঋতু বা মাসের মধ্যে পুনরাবৃত্তি ঘটে, তা হলে এটি সিজনালিটি


২. ডিকম্পোজড প্লট (Decomposition Plot)

ডিকম্পোজড প্লট টাইম সিরিজ ডেটার ট্রেন্ড, সিজনাল এবং রেসিডুয়াল (অথবা এলোমেলো পরিবর্তন) উপাদানগুলি আলাদাভাবে দেখানোর জন্য ব্যবহৃত হয়। এটি 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()

এই প্লটে আপনি আলাদাভাবে ট্রেন্ড, সিজনালিটি, এবং রেসিডুয়াল দেখতে পাবেন, যা টাইম সিরিজের ভিন্ন উপাদানগুলোর বোঝাতে সাহায্য করবে।


৩. অটো-কোর্লেশন প্লট (Autocorrelation Plot)

অটো-কোর্লেশন প্লট টাইম সিরিজ ডেটার মধ্যে পূর্ববর্তী সময়ের মানের সাথে বর্তমান মানের সম্পর্ক দেখায়। এটি সিজনালিটি এবং ট্রেন্ড চিহ্নিত করতে সহায়ক, বিশেষত যখন ডেটাতে কোনো ল্যাগ (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()

অটো-কোর্লেশন প্লটের মাধ্যমে আপনি সহজেই সিজনাল প্যাটার্ন এবং সম্পর্ক চিহ্নিত করতে পারবেন।


সারাংশ

ডেটার ট্রেন্ড এবং সিজনালিটি চিহ্নিত করতে বিভিন্ন ভিজ্যুয়ালাইজেশন পদ্ধতি ব্যবহার করা যেতে পারে, যেমন লাইন প্লট, ডিকম্পোজড প্লট এবং অটো-কোর্লেশন প্লট। এই ভিজ্যুয়ালাইজেশনগুলো ডেটার প্যাটার্ন এবং উপাদান বুঝতে সাহায্য করে, যা পরবর্তী বিশ্লেষণ এবং পূর্বাভাস তৈরির জন্য অত্যন্ত গুরুত্বপূর্ণ।

Content added By

Time Series Decomposition (Additive এবং Multiplicative Models)

128
128

টাইম সিরিজ ডিকম্পোজিশন হলো টাইম সিরিজের মূল উপাদানগুলো আলাদা করার প্রক্রিয়া, যাতে ট্রেন্ড (Trend), সিজনালিটি (Seasonality), এবং রেসিডুয়াল (Residuals) বা র্যান্ডম ভ্যারিয়েশন চিহ্নিত করা যায়। এটি টাইম সিরিজের বিভিন্ন অংশকে বোঝার জন্য সহায়ক এবং ভবিষ্যতের পূর্বাভাস তৈরি করার জন্য খুবই গুরুত্বপূর্ণ।

টাইম সিরিজ ডিকম্পোজিশনের দুটি মূল মডেল রয়েছে:

  1. অ্যাডিটিভ মডেল (Additive Model)
  2. মাল্টিপ্লিকেটিভ মডেল (Multiplicative Model)

১. অ্যাডিটিভ মডেল (Additive Model)

বর্ণনা: অ্যাডিটিভ মডেলটি এমন একটি টাইম সিরিজ ডিকম্পোজিশন মডেল যেখানে টাইম সিরিজের উপাদানগুলো একে অপরকে যোগ করে গঠিত হয়। এখানে ট্রেন্ড, সিজনাল প্যাটার্ন এবং রেসিডুয়াল একে অপরের সাথে যোগ করা হয়, এবং তারা একে অপরের উপর নির্ভরশীল না হয়ে স্বাধীনভাবে পরিবর্তিত হতে পারে।

ফর্মুলা:

Yt=Tt+St+Rt

যেখানে:

  • Yt হলো টাইম সিরিজের প্রকৃত মান,
  • Tt হলো ট্রেন্ড,
  • St হলো সিজনাল প্যাটার্ন,
  • Rt হলো রেসিডুয়াল (অথবা এলোমেলো পরিবর্তন)।

ব্যবহার: অ্যাডিটিভ মডেলটি ব্যবহার করা হয় যখন টাইম সিরিজে সিজনালিটি বা ট্রেন্ডের প্রভাব অপরিবর্তিত থাকে এবং এর প্রভাব সমানভাবে বিস্তার লাভ করে, অর্থাৎ সিজনাল পরিবর্তনগুলোর আকার বা স্কেল ট্রেন্ড বা অন্যান্য উপাদানগুলোর উপর নির্ভর করে না।

উদাহরণ:

  • তাপমাত্রা: একটি দেশের মাসিক তাপমাত্রা যেখানে ঋতু পরিবর্তনের প্রভাব প্রায় একই থাকে এবং গড় তাপমাত্রার মান প্রতি বছর একই রকম থাকে।

২. মাল্টিপ্লিকেটিভ মডেল (Multiplicative Model)

বর্ণনা: মাল্টিপ্লিকেটিভ মডেলটি এমন একটি টাইম সিরিজ ডিকম্পোজিশন মডেল যেখানে টাইম সিরিজের উপাদানগুলো একে অপরকে গুণ করে গঠিত হয়। এখানে, ট্রেন্ড, সিজনাল প্যাটার্ন এবং রেসিডুয়াল একে অপরের সাথে গুণিত হয় এবং তাদের মধ্যে একটি পরিমাণগত সম্পর্ক থাকতে পারে।

ফর্মুলা:

Yt=Tt×St×Rt

যেখানে:

  • Yt হলো টাইম সিরিজের প্রকৃত মান,
  • Tt হলো ট্রেন্ড,
  • St হলো সিজনাল প্যাটার্ন,
  • Rt হলো রেসিডুয়াল (অথবা এলোমেলো পরিবর্তন)।

ব্যবহার: মাল্টিপ্লিকেটিভ মডেলটি ব্যবহৃত হয় যখন সিজনাল পরিবর্তনগুলি ট্রেন্ডের সাথে সম্পর্কিত থাকে এবং তাদের প্রভাব একে অপরকে গুণের মাধ্যমে বৃদ্ধি বা হ্রাস পায়। সাধারণত যখন সিজনাল পরিবর্তন বা ট্রেন্ডের প্রভাব সময়ের সাথে বৃদ্ধি পায় বা সংকুচিত হয়, তখন এটি ব্যবহার করা হয়।

উদাহরণ:

  • বিক্রয়: একটি ব্যবসায়ের মাসিক বিক্রয় যেখানে গ্রীষ্মকালে সিজনাল বিক্রয় বৃদ্ধি পায়, এবং এটি বছরে পরিবর্তিত হয় (যেমন, ক্রিসমাসের সময় বিক্রয় অনেক বেশি হয়)।

অ্যাডিটিভ এবং মাল্টিপ্লিকেটিভ মডেল নির্বাচনের সময়

  • অ্যাডিটিভ মডেল: ব্যবহার করা হয় যখন সিজনাল পরিবর্তন বা ট্রেন্ডের প্রভাব সময়ের সাথে একরকম থাকে এবং তাদের আকারের উপর পার্থক্য নেই।
  • মাল্টিপ্লিকেটিভ মডেল: ব্যবহৃত হয় যখন সিজনাল পরিবর্তন বা ট্রেন্ডের প্রভাব সময়ের সাথে পরিবর্তিত হয় এবং আকারের উপর পারস্পরিক সম্পর্ক থাকে।

সারাংশ

টাইম সিরিজ ডিকম্পোজিশন হলো টাইম সিরিজের উপাদানগুলো আলাদা করার প্রক্রিয়া, যা ট্রেন্ড, সিজনাল প্যাটার্ন এবং রেসিডুয়ালকে চিহ্নিত করে। এটি দুই ধরনের মডেল ব্যবহার করে:

  • অ্যাডিটিভ মডেল, যেখানে উপাদানগুলো যোগ করা হয়,
  • মাল্টিপ্লিকেটিভ মডেল, যেখানে উপাদানগুলো গুণ করা হয়।

এই মডেলগুলির সাহায্যে টাইম সিরিজের প্রকৃত গঠন এবং ভবিষ্যত পূর্বাভাস সহজে নির্ধারণ করা যায়।

Content added By

Autocorrelation Function (ACF) এবং Partial Autocorrelation Function (PACF)

123
123

অটো-কোর্লেশন ফাংশন (ACF) এবং পারশিয়াল অটো-কোর্লেশন ফাংশন (PACF) হলো টাইম সিরিজ বিশ্লেষণের গুরুত্বপূর্ণ টুল যা টাইম সিরিজের ডেটার মধ্যে স্ব-সম্পর্ক (self-correlation) বা ল্যাগ (lag) সম্পর্ক বিশ্লেষণ করতে ব্যবহৃত হয়। এই দুটি ফাংশন টাইম সিরিজের ভবিষ্যত পয়েন্টের পূর্বাভাসে সহায়ক হতে পারে, কারণ এটি নির্ধারণ করে যে কোন অতীত ডেটা পয়েন্ট বর্তমান মানের সাথে সম্পর্কিত।


১. অটো-কোর্লেশন ফাংশন (ACF)

বর্ণনা: অটো-কোর্লেশন ফাংশন (ACF) টাইম সিরিজের মধ্যে একটি ডেটা পয়েন্টের বর্তমান মান এবং অতীত মানের মধ্যে সম্পর্ক বা কোরেলেশন নির্ধারণ করে। এটি ডেটার সময়ের সাথে স্ব-সম্পর্ক বিশ্লেষণ করে। ACF দ্বারা একটি নির্দিষ্ট ল্যাগ (lag) এর জন্য, বর্তমান মান এবং পূর্ববর্তী মানের মধ্যে সম্পর্কের শক্তি এবং দিক চিহ্নিত করা হয়।

ACF কী করে:

  • ACF টাইম সিরিজের ল্যাগ 1, ল্যাগ 2, ... পর্যন্ত অটো-কোর্লেশন চিহ্নিত করে, যেখানে ল্যাগ হল অতীত পয়েন্ট এবং বর্তমান পয়েন্টের মধ্যকার সময়ের ব্যবধান।
  • ACF একটি কোরেলেশন গ্রাফ তৈরি করে, যা ডেটার ট্রেন্ড এবং সিজনালিটি বুঝতে সহায়ক।

উদাহরণ:

  • যদি এক দিন আগের স্টক মূল্য বর্তমান মূল্য সাথে শক্তিশালী সম্পর্ক রাখে, তবে ল্যাগ 1 এর জন্য 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) হল একটি উন্নত ধরনের অটো-কোর্লেশন, যা শুধুমাত্র একটি নির্দিষ্ট ল্যাগ এর জন্য সোজাসুজি সম্পর্ক চিহ্নিত করে, অন্য ল্যাগের প্রভাবকে সরিয়ে ফেলে। PACF নিশ্চিত করে যে একটি নির্দিষ্ট ল্যাগের জন্য, অতীতের অন্যান্য পয়েন্টগুলি বর্তমান মানের সাথে সম্পর্কিত হতে পারে কিনা। এটি ACF থেকে আলাদা, কারণ PACF আগের ল্যাগের প্রভাবগুলি হিসাব থেকে বাদ দেয়।

PACF কী করে:

  • PACF শুধুমাত্র নির্দিষ্ট ল্যাগের জন্য কো-রিলেশন দেখায়, যেমন ল্যাগ 1, ল্যাগ 2 ইত্যাদি, কিন্তু পূর্ববর্তী ল্যাগের প্রভাব সরিয়ে দেয়।
  • PACF সাধারণত AR (AutoRegressive) মডেল নির্বাচন করার সময় সহায়ক হয়, কারণ এটি নির্দিষ্ট ল্যাগের প্রভাব চিহ্নিত করতে সহায়ক।

উদাহরণ:

  • PACF যদি ল্যাগ 1-এ শক্তিশালী সম্পর্ক দেখায় এবং ল্যাগ 2-এ কোনও সম্পর্ক না দেখায়, তবে এটি AR(1) মডেল প্রস্তাব করতে পারে, যেখানে শুধুমাত্র একদিন আগের ডেটা গুরুত্বপূর্ণ।

কোড উদাহরণ (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 এর মধ্যে পার্থক্য

বিষয়ACFPACF
অর্থটাইম সিরিজের মধ্যে একাধিক ল্যাগের মধ্যে সম্পর্ক।নির্দিষ্ট ল্যাগের জন্য সম্পর্ক, আগের ল্যাগের প্রভাব বাদ দিয়ে।
কী চিহ্নিত করেপ্রতিটি ল্যাগের জন্য মোট সম্পর্ক।শুধুমাত্র নির্দিষ্ট ল্যাগের জন্য সম্পর্ক।
ব্যবহারMA (Moving Average) মডেল নির্বাচন।AR (AutoRegressive) মডেল নির্বাচন।

সারাংশ

অটো-কোর্লেশন ফাংশন (ACF) এবং পারশিয়াল অটো-কোর্লেশন ফাংশন (PACF) হল টাইম সিরিজ বিশ্লেষণের গুরুত্বপূর্ণ টুল যা টাইম সিরিজের প্যাটার্ন, ট্রেন্ড এবং সম্পর্ক চিহ্নিত করতে সাহায্য করে। ACF ডেটার সাথে মোট সম্পর্কের একটি ভিউ প্রদান করে, যেখানে PACF শুধুমাত্র নির্দিষ্ট ল্যাগের জন্য সম্পর্ক দেখায়। ACF এবং PACF-এর ব্যবহারের মাধ্যমে উপযুক্ত টাইম সিরিজ মডেল নির্বাচন করা যায়, যেমন ARIMA মডেল।

Content added By

Stationarity Check (ADF Test, KPSS Test)

105
105

টাইম সিরিজ ডেটার স্টেশনারিটি যাচাই করা গুরুত্বপূর্ণ, কারণ স্টেশনারিটি ডেটার গড়, ভ্যারিয়েন্স এবং কোভেরিয়েন্স সময়ের সাথে অপরিবর্তিত থাকা নিশ্চিত করে, যা পূর্বাভাস তৈরির জন্য একটি প্রয়োজনীয় শর্ত। স্টেশনারিটি চেক করার জন্য দুটি জনপ্রিয় স্ট্যাটিস্টিক্যাল টেস্ট রয়েছে: ADF টেস্ট (Augmented Dickey-Fuller Test) এবং KPSS টেস্ট (Kwiatkowski-Phillips-Schmidt-Shin Test)


১. ADF টেস্ট (Augmented Dickey-Fuller Test)

বর্ণনা: ADF টেস্ট একটি স্ট্যাটিস্টিক্যাল টেস্ট যা টাইম সিরিজে স্টেশনারিটির উপস্থিতি বা অনুপস্থিতি যাচাই করতে ব্যবহৃত হয়। এটি ডিকি-ফুলার টেস্টের সম্প্রসারিত সংস্করণ, যা টাইম সিরিজে ট্রেন্ডের উপস্থিতি চেক করে। এই টেস্টটি মূলত নাল হাইপোথিসিস (Null Hypothesis) হিসেবে স্টেশনারিটি না থাকার ধারণা (i.e., টাইম সিরিজ ইউনিট রুট সহ) পরীক্ষা করে।

  • নাল হাইপোথিসিস (Null Hypothesis): টাইম সিরিজ স্টেশনারি নয় (অথবা ইউনিট রুট রয়েছে)।
  • বিকল্প হাইপোথিসিস (Alternative Hypothesis): টাইম সিরিজ স্টেশনারি (অথবা ইউনিট রুট নেই)।

কিভাবে কাজ করে:

  • ADF টেস্ট ডেটার ট্রেন্ড বা সিজনালিটি থাকার সম্ভাবনা নির্ধারণ করে।
  • p-value কম হলে (সাধারণত 0.05 বা তার কম), আমরা নাল হাইপোথিসিস প্রত্যাখ্যান করি এবং টাইম সিরিজ স্টেশনারি বলে ধরে নিই।

উদাহরণ (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 টেস্ট (Kwiatkowski-Phillips-Schmidt-Shin Test)

বর্ণনা: KPSS টেস্ট হল আরেকটি জনপ্রিয় টেস্ট, যা টাইম সিরিজের স্টেশনারিটি যাচাই করতে ব্যবহৃত হয়। KPSS টেস্ট ADF টেস্টের বিপরীতভাবে কাজ করে। এই টেস্টের নাল হাইপোথিসিস হল যে টাইম সিরিজ স্টেশনারি (অথবা এটি ট্রেন্ড-স্টেশনারি) এবং বিকল্প হাইপোথিসিস হল টাইম সিরিজে ইউনিট রুট রয়েছে, অর্থাৎ এটি স্টেশনারি নয়।

  • নাল হাইপোথিসিস (Null Hypothesis): টাইম সিরিজ স্টেশনারি।
  • বিকল্প হাইপোথিসিস (Alternative Hypothesis): টাইম সিরিজ স্টেশনারি নয় (অথবা ইউনিট রুট রয়েছে)।

কিভাবে কাজ করে:

  • KPSS টেস্ট p-value নির্ধারণ করে এবং p-value যদি কম হয় (0.05 এর নিচে), তাহলে নাল হাইপোথিসিস প্রত্যাখ্যান করা হয় এবং টাইম সিরিজ স্টেশনারি নয় বলে ধরে নেওয়া হয়।

উদাহরণ (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 টেস্টের মধ্যে পার্থক্য

  1. নাল হাইপোথিসিস:
    • ADF টেস্টের নাল হাইপোথিসিস হল "টাইম সিরিজ স্টেশনারি নয়"।
    • KPSS টেস্টের নাল হাইপোথিসিস হল "টাইম সিরিজ স্টেশনারি"।
  2. টেস্টের উদ্দেশ্য:
    • ADF টেস্ট ইউনিট রুটের উপস্থিতি চেক করে, অর্থাৎ ডেটার মধ্যে ট্রেন্ড বা সিজনাল প্যাটার্নের উপস্থিতি চিহ্নিত করে।
    • KPSS টেস্ট স্টেশনারিটি (ট্রেন্ড-স্টেশনারিটি) চেক করে।
  3. অপেক্ষিত ফলাফল:
    • ADF টেস্টে p-value কম হলে, স্টেশনারিটি অনুমোদিত হয়।
    • KPSS টেস্টে p-value কম হলে, স্টেশনারিটি প্রত্যাখ্যাত হয়।

সারাংশ

স্টেশনারিটি চেক করার জন্য ADF টেস্ট এবং KPSS টেস্ট দুটি জনপ্রিয় পদ্ধতি। ADF টেস্ট ইউনিট রুট চেক করে এবং KPSS টেস্ট স্টেশনারিটি চেক করে। দুটি টেস্টই স্টেশনারিটির উপস্থিতি বা অনুপস্থিতি যাচাই করার জন্য ব্যবহৃত হয়, তবে তাদের পদ্ধতি এবং হাইপোথিসিস ভিন্ন। এভাবে, টাইম সিরিজ ডেটার মডেলিং এবং পূর্বাভাস তৈরিতে স্টেশনারিটি নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ।

Content added By
Promotion