دادههای سری زمانی در R
دادههای سری زمانی (Time Series Data) به دادههایی گفته میشود که بهطور مرتب و در فواصل زمانی مشخص جمعآوری میشوند. تجزیه و تحلیل سریهای زمانی برای پیشبینی روندها و الگوهای موجود در دادهها از اهمیت زیادی برخوردار است. در R، ابزارهای قدرتمندی برای تحلیل دادههای سری زمانی وجود دارد که شامل بستههای مختلفی مانند ts, xts, zoo, و forecast است.
۱. ایجاد دادههای سری زمانی در R
برای کار با دادههای سری زمانی در R، ابتدا باید دادهها را به صورت سری زمانی (time series) تبدیل کنید. در R، از تابع ()ts برای ایجاد یک شیء سری زمانی استفاده میشود.
۱.۱. استفاده از تابع ()ts
تابع ()ts در R به شما این امکان را میدهد که دادههای خود را به فرمت سری زمانی تبدیل کنید.
نمونه:
data <- c(100, 105, 110, 120, 125, 130)
time_series <- ts(data, start=c(2020, 1), frequency=12) # شروع از ژانویه 2020 با فرکانس ماهانه
در این مثال، دادههای ماهانه از ژانویه 2020 به صورت یک سری زمانی با فرکانس 12 (12 ماه در سال) ایجاد میشود.
پارامترهای مهم تابع ()ts
- start: تاریخ شروع سری زمانی به صورت یک وکتور (سال, ماه) برای دادههای ماهانه یا (سال, روز) برای دادههای روزانه.
- frequency: تعداد مشاهدات در هر واحد زمان (مثلاً 12 برای دادههای ماهانه، 4 برای دادههای فصلی، و 365 برای دادههای روزانه).
۲. تجزیه و تحلیل دادههای سری زمانی
1.2. نمایش دادههای سری زمانی
برای مشاهده سری زمانی میتوان از تابع plot() برای ترسیم نمودار سری زمانی استفاده کرد.
نمونه:
plot(time_series, main="Time Series Plot", ylab="Values", xlab="Time")
۲.۲. تجزیه و تحلیل روندها و فصول
برای تجزیه و تحلیل روند و فصول دادههای سری زمانی، میتوانید از تابع decompose() استفاده کنید که دادهها را به اجزای روند، فصلی و خطای تصادفی تقسیم میکند.
نمونه:
decomposed <- decompose(time_series)
plot(decomposed)
این دستور سری زمانی را به سه قسمت تفکیک میکند: روند، فصلی و خطای تصادفی.
3.2. تجزیه و تحلیل اتورگرسیو (AR) و میانگین متحرک (MA)
مدلهای AR و MA در تحلیل سری زمانی برای پیشبینی استفاده میشوند. در R، میتوانید از بسته forecast برای ساخت و ارزیابی مدلهای پیشبینی استفاده کنید.
برای مدلهای ARIMA (Autoregressive Integrated Moving Average)، از تابع auto.arima() استفاده میشود.
نمونه:
install.packages("forecast")
library(forecast)
# ساخت مدل ARIMA و پیشبینی
fit <- auto.arima(time_series)
forecasted <- forecast(fit, h=12) # پیشبینی 12 ماه آینده
plot(forecasted)
در اینجا، مدل ARIMA به طور خودکار بهترین مدل را انتخاب کرده و پیشبینیهایی برای 12 دوره آینده انجام میدهد.
۳. بستههای مختلف برای کار با دادههای سری زمانی
1.3. بسته zoo
بسته zoo برای ذخیره و مدیریت دادههای سری زمانی نامنظم بسیار مفید است. این بسته توانایی کار با دادههای روزانه، هفتگی، ماهانه و سالانه را دارد.
نمونه:
install.packages("zoo")
library(zoo)
# ایجاد دادههای سری زمانی با zoo
time_series_zoo <- zoo(data, order.by=as.Date('2020-01-01') + 0:5)
plot(time_series_zoo)
2.3. بسته xts
بسته xts (eXtensible Time Series) نیز برای کار با دادههای سری زمانی توسعه یافته است. این بسته ویژگیهای اضافی مانند برچسبگذاری تاریخ را فراهم میکند.
نمونه:
install.packages("xts")
library(xts)
# ایجاد دادههای سری زمانی با xts
time_series_xts <- xts(data, order.by=seq.Date(from=as.Date('2020-01-01'), by='month', length.out=6))
plot(time_series_xts)
۳.۳. بسته forecast
بسته forecast شامل توابع و مدلهای آماری مختلف برای پیشبینی سریهای زمانی است. این بسته ابزارهای پیشرفتهای برای ساخت مدلهای ARIMA, ETS, و دیگر مدلهای پیشبینی فراهم میکند.
۴. پیشبینی دادههای سری زمانی
با استفاده از مدلهای آماری و بستههای مختلف، میتوانید دادههای سری زمانی را پیشبینی کنید. پس از ایجاد مدل مناسب، پیشبینیها میتوانند برای تحلیلهای آینده مفید باشند.
1.4. پیشبینی با مدل ARIMA
install.packages("forecast")
library(forecast)
# ایجاد مدل ARIMA
fit <- auto.arima(time_series)
# پیشبینی 6 ماه آینده
forecasted <- forecast(fit, h=6)
plot(forecasted)
2.4. پیشبینی با مدل ETS (Exponential Smoothing State Space Model)
مدلهای ETS برای پیشبینی سریهای زمانی با روند و فصلی استفاده میشوند.
fit_ets <- ets(time_series)
forecasted_ets <- forecast(fit_ets, h=6)
plot(forecasted_ets)
۵. ارزیابی مدلهای سری زمانی
پس از ایجاد مدل پیشبینی، باید دقت پیشبینیها را ارزیابی کنید. برخی از معیارهای ارزیابی مدلها شامل MAE (Mean Absolute Error)، RMSE (Root Mean Squared Error)، و MAPE (Mean Absolute Percentage Error) است.
نمونه:
accuracy(forecasted)
جمعبندی
کار با دادههای سری زمانی در R بسیار ساده است و ابزارهای قدرتمندی برای تجزیه و تحلیل و پیشبینی این نوع دادهها وجود دارد. با استفاده از توابع و بستههایی مانند ts(), forecast, zoo, و xts، میتوانید دادههای سری زمانی را تحلیل و پیشبینی کنید. همچنین با استفاده از مدلهای ARIMA, ETS, و دیگر مدلهای پیشبینی، میتوانید روندهای آینده را شبیهسازی و پیشبینی کنید.
