پایتون - مدل ARIMA

پایتون | مدل ARIMA برای پیش بینی سری های زمانی

ARIMA برای پیش بینی سری های زمانی در پایتون

سری زمانی به عنوان مجموعه ای از نقاط داده که به ترتیب زمانی نمایه شده اند تعریف می شود. ترتیب زمانی می تواند روزانه، ماهانه یا حتی سالانه باشد. در زیر نمونه‌ای از سری زمانی وجود دارد که تعداد مسافران یک شرکت هواپیمایی در ماه از سال 1949 تا 1960 را نشان می‌دهد.

پایتون - مدل ARIMA

 

موارد استفاده پیش بینی سری زمانی

پیش‌بینی سری زمانی فرآیند استفاده از یک مدل آماری برای پیش‌بینی مقادیر آینده یک سری زمانی بر اساس نتایج گذشته است.

  • برای پیش بینی تعداد مشتریان جدید یا در حال افزایش.
  • برای توضیح الگوهای فصلی در فروش.
  • برای شناسایی رویدادهای غیرمعمول و تخمین میزان تأثیر آنها.
  • برای برآورد تأثیر یک محصول جدید معرفی شده بر تعداد واحدهای فروخته شده.

←برای خرید کرک لایسنس تبلو Tableau با تمام ویژگی ها کلیک کنید

 

اجزای یک سری زمانی:

  • روند: روند یک جهت کلی از داده های سری زمانی را در یک دوره زمانی طولانی نشان می دهد. یک روند می تواند افزایشی (به سمت بالا)، کاهشی (نزولی) یا افقی (ایستا) باشد.
  • فصلی بودن: جزء فصلی روندی را نشان می دهد که در زمان، جهت و بزرگی تکرار می شود. برخی از نمونه ها شامل افزایش مصرف آب در تابستان به دلیل شرایط آب و هوایی گرم یا افزایش تعداد مسافران در تعطیلات هر سال است.
  • جزء چرخه ای: اینها روندهایی هستند که در یک دوره زمانی معین تکرار نمی شوند. چرخه به دوره فراز و نشیب، رونق و رکود در یک سری زمانی اشاره دارد که بیشتر در چرخه های تجاری مشاهده می شود. این چرخه‌ها نوسانات فصلی را نشان نمی‌دهند، اما معمولاً بسته به نوع سری‌های زمانی در بازه‌ای بین 3 تا 12 سال رخ می‌دهند.
  • تغییرات نامنظم: اینها نوسانات در داده های سری زمانی هستند که با حذف تغییرات روند و چرخه ای قابل مشاهده می شوند. این تغییرات غیرقابل پیش بینی، نامنظم و ممکن است تصادفی باشند یا نباشند.
  • تجزیه ETS : تجزیه ETS برای جداسازی اجزای مختلف یک سری زمانی استفاده می شود. اصطلاح ETS مخفف خطا، روند و فصلی است.

کد: تفکیک مجموعه داده مسافران هوایی ETS:

# Importing required libraries 
import numpy as np 
import pandas as pd 
import matplotlib.pylot as plt 
from statsmodels.tsa.seasonal import seasonal_decompose 
# Read the AirPassengers dataset 
airline = pd.read_csv(‘AirPassengers.csv’, 
index_col =’Month’, 
parse_dates = True) 
# Print the first five rows of the dataset 
airline.head() 
# ETS Decomposition 
result = seasonal_decompose(airline[‘# Passengers’], 
model =’multiplicative’) 
# ETS plot 
result.plot() 

خروجی:

 

پایتون - مدل ARIMA پایتون - مدل ARIMA

 

مدل ARIMA برای پیش بینی سری های زمانی

ARIMA مخفف Autoregressive Integrated Moving Average Model است و با سه پارامتر مرتبه (p, d, q) مشخص می شود.

  • خودرگرسیون AR(p) – یک مدل رگرسیونی که از رابطه وابسته بین مشاهدات جاری و مشاهدات در دوره قبلی بهره برداری می کند. مولفه خودرگرسیون (AR(p)) به استفاده از مقادیر گذشته در معادله رگرسیون برای سری های زمانی اشاره دارد.
  • I(d) ادغام – از مشاهدات متمایز (کم کردن یک مشاهده از یک مشاهده در نقطه زمانی قبلی) برای ثابت کردن سری زمانی استفاده می کند. هنگام تشکیل اختلاف، مقادیر جاری یک سری d برابر از مقادیر قبلی آنها کم می شود.
  • MA(q) میانگین متحرک – مدلی که از وابستگی بین یک مشاهده و یک خطای باقیمانده از یک مدل میانگین متحرک اعمال شده برای مشاهدات با تاخیر استفاده می کند. یک جزء میانگین متحرک خطای مدل را به عنوان ترکیبی از عبارت های خطای قبلی نشان می دهد.

 

انواع مدل های ARIMA

  • ARIMA: میانگین متحرک یکپارچه اتورگرسیو غیر فصلی
  • SARIMA: برای ARIMA فصلی
  • SARIMAX:برای ARIMA فصلی با متغیرهای برون زا

 

هرمی خودکار ARIMA

تابع auto_arima از کتابخانه pmdarima به ما کمک می کند تا بهینه ترین پارامترها را برای یک مدل ARIMA تعیین کنیم و یک مدل ARIMA برازش شده را برمی گرداند.

 

کد: تجزیه و تحلیل پارامتر برای مدل ARIMA

# To install the library 
pip install pmdarima 
# Import the library 
from pmdarima import auto_arima 
# Ignore harmless warnings 
import warnings 
warnings.filterwarnings(“ignore”) 
# Fit auto_arima function to AirPassengers dataset 
stepwise_fit = auto_arima(airline[‘# Passengers’], start_p = 1, start_q = 1, 
max_p = 3, max_q = 3, m = 12, 
start_P = 0, seasonal = True, 
d = None, D = 1, trace = True, 
error_action =’ignore’, # we don’t want to know if an order does not work 
suppress_warnings = True, # we don’t want convergence warnings 
stepwise = True) # set to stepwise 
# To print the summary 
stepwise_fit.summary() 

خروجی:

پایتون - مدل ARIMA

 

کد: مدل ARIMA را در مجموعه داده های AirPassengers قرار دهید

 

# Split data into train / test sets 
train = airline.iloc[:len(airline)-12] 
test = airline.iloc[len(airline)-12:] # set one year(12 months) for testing 
# Fit a SARIMAX(0, 1, 1)x(2, 1, 1, 12) on the training set 
from statsmodels.tsa.statespace.sarimax import SARIMAX 
model = SARIMAX(train[‘# Passengers’], 
order = (0, 1, 1), 
seasonal_order =(2, 1, 1, 12)) 
result = model.fit() 
result.summary() 

خروجی :

پایتون - مدل ARIMA

 

کد: پیش بینی های مدل ARIMA در برابر مجموعه آزمایشی

 

start = len(train) 
end = len(train) + len(test) – 1
# Predictions for one-year against the test set 
predictions = result.predict(start, end, 
typ = ‘levels’).rename(“Predictions”) 
# plot predictions and actual values 
predictions.plot(legend = True) 
test[‘# Passengers’].plot(legend = True) 
خروجی :
پایتون - مدل ARIMA
کد: مدل را با استفاده از MSE و RMSE ارزیابی کنید

# Load specific evaluation tools
from sklearn.metrics import mean_squared_error
from statsmodels.tools.eval_measures import rmse

# Calculate root mean squared error
rmse(test[“# Passengers”], predictions)

# Calculate mean squared error
mean_squared_error(test[“# Passengers”], predictions)

 

خروجی:

پایتون - مدل ARIMA پایتون - مدل ARIMA

 

کد: پیش بینی با استفاده از مدل ARIMA

# Train the model on the full dataset 
model = model = SARIMAX(airline[‘# Passengers’], 
order = (0, 1, 1), 
seasonal_order =(2, 1, 1, 12)) 
result = model.fit() 
# Forecast for the next 3 years 
forecast = result.predict(start = len(airline), 
end = (len(airline)-1) + 3 * 12, 
typ = ‘levels’).rename(‘Forecast’) 
# Plot the forecast values 
airline[‘# Passengers’].plot(figsize = (12, 5), legend = True) 
forecast.plot(legend = True) 
خروجی:
پایتون - مدل ARIMA
امتیاز دهید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید