پیش بینی سری زمانی بر اساس روند و اجزای فصلی

ساخت وبلاگ

تجزیه و تحلیل روند و فصلی سری زمانی برای تجزیه سری زمان و اجرای مدل های پیش بینی

پیش بینی سری زمانی وظیفه پیش بینی های مبتنی بر داده های تاریخی با مهر و موم است. این شامل مدل های ساختمانی برای مشاهدات و هدایت تصمیم گیری در آینده در برنامه هایی مانند آب و هوا ، مهندسی ، اقتصاد ، امور مالی یا پیش بینی تجارت از جمله دیگران است.

این مقاله به عنوان مقدمه ای برای پیش بینی سری زمانی در نظر گرفته شده است. ساختار به شرح زیر است. اولا ، شرح دو الگوی اصلی (روند و فصلی) از هر سری زمانی. ثانیا ، تجزیه سری زمانی بر اساس آن الگوهای. سرانجام ، اجرای یک مدل پیش بینی به نام روش فصلی Holt-Winters که برای داده های سری زمانی با روند و/یا اجزای فصلی مناسب است.

برای پوشش همه این محتوا ، من یک مجموعه داده ایجاد کرده ام که دمای یک شهر نیمکره شمالی مانند سویا را بین سالهای 2010 تا 2020 شبیه سازی می کند. کد را می توان در مخزن زیر GitHub یافت.

1. وارد کردن کتابخانه ها و داده ها

در مرحله اول ، کتابخانه های زیر را که برای اجرای کد لازم است وارد کنید. جدا از معمولی ترین کتابخانه ها ، این کد بر اساس کارکردهای ارائه شده توسط کتابخانه Statsmodels است که کلاس ها و کارکردهایی را برای برآورد مدلهای آماری مختلف مانند تست های آماری و مدل های پیش بینی فراهم می کند.

در اینجا کد برای ایجاد مجموعه داده است. داده ها از دو ستون تشکیل شده است ، یکی برای تاریخ و دیگری برای دمای بین سالهای 2010 تا 2020.

2. تجسم مجموعه داده

قبل از شروع تجزیه و تحلیل الگوهای سری زمانی ، اجازه می دهیم داده هایی را که هر خط متراکم عمودی با شروع سال مطابقت دارد ، تجسم کنیم.

قبل از حرکت به بخش بعدی ، بیایید لحظه ای به داده ها نگاه کنیم. جالب اینجاست که به نظر می رسد که داده ها با افزایش دما در زمستان و در تابستان (نیمکره جنوبی) کاهش می یابد. همچنین ، به نظر نمی رسد که دما با گذشت زمان به میزان قابل توجهی افزایش یابد زیرا میانگین دما تقریباً بدون توجه به سال دارای همان ارزش است.

3. الگوهای سری زمانی

مدل های پیش بینی سری زمانی از معادلات (های) ریاضی برای یافتن الگوهای در یک سری از داده های تاریخی استفاده می کنند. سپس این معادلات برای طرح ریزی الگوهای زمانی تاریخی در داده ها به آینده استفاده می شوند [1].

چهار نوع الگوی سری زمانی وجود دارد:

  • روند: افزایش یا کاهش طولانی مدت در داده ها. این روند می تواند هر عملکردی مانند خطی یا نمایی باشد و می تواند با گذشت زمان جهت را تغییر دهد.
  • فصلی: چرخه تکرار در این سریال با فرکانس های ثابت (ساعت روز ، هفته ، ماه ، سال و غیره). یک الگوی فصلی از یک دوره شناخته شده ثابت وجود دارد.
  • چرخه: هنگامی که داده ها بالا می روند و سقوط می کنند ، اما بدون فرکانس و مدت زمان ثابت ، به عنوان مثال ، در شرایط اقتصادی ایجاد می شود.
  • سر و صدا: تغییر تصادفی در سری.

بیشتر داده های سری زمانی حاوی یک یا چند الگوی هستند ، اما احتمالاً همه آنها نیستند. در اینجا چند نمونه وجود دارد که می توانیم برخی از این الگوهای سری زمانی را شناسایی کنیم:

  1. مخاطبان سالانه ویکی پدیا (شکل چپ): در این شکل ، می توانیم روند فزاینده ای را شناسایی کنیم ، زیرا مخاطب هر سال به صورت خطی افزایش می یابد.
  2. طرح فصلی استفاده از برق ایالات متحده (شکل میانی): هر خط با یک سال مطابقت دارد ، بنابراین می توانیم یک فصلی سالانه را مشاهده کنیم زیرا مصرف سالانه تکرار می شود.
  3. بسته شدن روزانه IBEX 35 (شکل مناسب): این سری زمان با گذشت زمان روند فزاینده ای دارد و همچنین یک الگوی چرخه ای از آنجا که دوره هایی وجود دارد که IBEX 35 به دلایل اقتصادی کاهش یافته است.

شکل 2. از چپ به راست ، مخاطبان سالانه ویکی پدیا ، طرح فصلی استفاده از برق ایالات متحده ، بسته شدن روزانه IBEX 35. Ref: از چپ به راست ، [3] ، [4] ، [5]

اگر یک تجزیه افزودنی را برای این الگوها فرض کنیم ، می توانیم بنویسیم:

جایی که y [t] داده ها است ، t [t] مؤلفه چرخه روند ، S [T] جزء فصلی است و E [T] سر و صدا است ، همه در دوره t.

از طرف دیگر ، تجزیه چند برابر می شود:

تجزیه افزودنی مناسب ترین است که نوسانات فصلی با سطح سری زمانی متفاوت نیست. در مقابل ، هنگامی که به نظر می رسد تغییر در مؤلفه فصلی متناسب با سطح سری زمانی است ، پس تجزیه چند برابر مناسب تر است [2].

4- داده ها را تجزیه کنید

یک سری زمانی ثابت به عنوان یک سری زمانی تعریف شده است که خصوصیات آن به زمان مشاهده این سریال بستگی ندارد. بنابراین ، سری زمانی با روندها ، یا با فصلی ، ثابت نیستند در حالی که سری سر و صدای سفید ثابت است [6]. به معنای ریاضی تر ، گفته می شود اگر یک میانگین و واریانس ثابت داشته باشد ، یک سری زمانی ثابت است و کواریانس مستقل از زمان است. در [6] ، شما مثالهای مختلفی دارید که مقایسه می کنند و در مقابل سری زمانی غیر ثابت مقایسه می شوند. به طور کلی ، یک سری زمانی ثابت الگوهای قابل پیش بینی طولانی مدت نخواهد داشت.

اما ، چرا ثابت بودن مهم است؟

خوب ، ثابت بودن برای بسیاری از شیوه ها و ابزارها در تجزیه و تحلیل سری زمانی به یک فرض متداول تبدیل شده است. این موارد شامل تخمین روند ، پیش بینی و استنباط علیت در میان دیگران است. بنابراین ، در بسیاری از موارد ، شما باید تعیین کنید که آیا داده ها توسط یک فرآیند ثابت تولید شده و آن را تبدیل می کنند تا خواص نمونه تولید شده توسط آن فرآیند را داشته باشد [7].

اما ، چگونه می توان سریال های زمانی ثابت را بررسی کرد؟

ما می توانیم از دو طریق ثابت را بررسی کنیم. از یک طرف ، می توانیم با بررسی میانگین و واریانس سری زمانی ، آن را به صورت دستی بررسی کنیم. از طرف دیگر ، می توانیم با استفاده از یک عملکرد آزمایش ، ثابت بودن را ارزیابی کنیم [8].

برخی موارد ممکن است گیج کننده باشد. به عنوان مثال ، یک سری زمانی بدون روند و فصلی اما با رفتار چرخه ای ثابت است زیرا چرخه ها از طول ثابت نیستند.

4. 1بررسی روند

برای تجزیه و تحلیل روند و فصلی سری زمانی ، ابتدا میانگین را با استفاده از روش میانگین نورد با پنجره های 30 روزه و 365 روزه تجزیه و تحلیل می کنیم.

در شکل ، می توانیم ببینیم که نورد هنگام استفاده از یک پنجره 30 روزه به مرور زمان ناشی از الگوی فصلی داده ها به معنای نورد است. همچنین ، میانگین نورد هنگام استفاده از پنجره 365 روزه با گذشت زمان افزایش می یابد ، که نشانگر روند کمی در حال افزایش در طول زمان است.

این همچنین می تواند با استفاده از چندین آزمایش مانند Dickey-Fuller (ADF) و Kwiatkowski ، فیلیپس ، اشمیت و شین (KPSS) ارزیابی شود:

  • نتیجه آزمون ADF (مقدار p زیر 0. 05) نشان می دهد که فرضیه تهی از حضور ریشه واحد را می توان در سطح اطمینان 95 ٪ رد کرد. از این رو ، اگر مقدار p زیر 0. 05 باشد ، سری زمانی ثابت است.
  • نتیجه آزمون KPSS (مقدار P بالاتر از 0. 05) نشان می دهد که فرضیه تهی از عدم وجود ریشه واحد ریشه واحد را نمی توان در سطح اطمینان 95 ٪ رد کرد. از این رو ، اگر مقدار p زیر 0. 05 باشد ، سری زمانی ثابت نیست.

اگرچه به نظر می رسد این آزمایشات برای بررسی ثابت بودن داده ها توصیف شده است ، اما این موارد برای تجزیه و تحلیل روند سری زمانی به جای فصلی ، مفید هستند ، همانطور که در [9] نشان داده شده است.

Interestingly, the statistical results revealed an effect of the stationarity of the time-series. However, the null hypothesis for both tests is the opposite. While the ADF test indicates that the time-series is stationary (p-value> 0.05), the KPSS test reveals that it is not stationary (p-value>0. 05). این مجموعه داده با یک روند جزئی ایجاد شده است ، بنابراین نتایج مشخص می کند که آزمون KPSS برای تجزیه و تحلیل این مجموعه داده دقیق تر است.

برای کاهش روند مجموعه داده ها ، می توانیم روش کاهش زیر را پیاده سازی کنیم:

4. 2بررسی فصلی

همانطور که قبلاً از Rolling Std مشاهده شد ، یک الگوی فصلی در سری زمانی ما وجود دارد. از این رو ، ما باید یک روش متفاوت را اجرا کنیم تا الگوهای فصلی یا چرخه ای اساسی در سری زمانی را حذف کنیم. از آنجا که مجموعه داده های نمونه دارای فصلی 12 ماهه است ، من از تفاوت 365-LAG تفاوت استفاده کردم:

اکنون ، هر دو نورد میانگین و STD با گذشت زمان کم و بیش ثابت باقی می مانند ، بنابراین ما یک سری زمانی ثابت داریم.

اجرای ترکیبی از روشهای محروم و متفاوت به شرح زیر خواهد بود:

شکل 6. نورد میانگین و STD پس از محاصره و تفاوت در سری زمان. Ref: تصویر توسط نویسنده.

4. 3تجزیه

تجزیه بر اساس الگوهای ذکر شده می تواند با یک عملکرد مفید پایتون به نام Seasonal_Decompose در بسته "statsmodels" اجرا شود:

پس از بررسی چهار بخش نمودارهای تجزیه شده ، می توان گفت که یک جزء قوی از فصلی سالانه در سری زمانی ما و همچنین الگوی روند فزاینده ای در طول زمان وجود دارد.

5. مدل سازی

مدل مناسب برای داده های سری زمانی شما به ویژگی های خاص داده ها بستگی دارد ، به عنوان مثال ، اگر مجموعه داده دارای روند کلی یا فصلی باشد. لطفاً حتماً مدلی را انتخاب کنید که مناسب داده های شما باشد.

مدل مناسب برای داده های سری زمانی شما به ویژگی های خاص داده ها مانند روند و فصلی بستگی دارد [10]. حتماً مدلی را انتخاب کنید که مناسب داده های شما باشد:

  1. Autoregression (AR)
  2. میانگین متحرک (MA)
  3. میانگین متحرک خودکار (ARMA)
  4. میانگین متحرک یکپارچه خودکار (ARIMA)
  5. میانگین متحرک یکپارچه خود خودجوش فصلی (SARIMA)
  6. میانگین متحرک یکپارچه اتورگرایی فصلی با رگرسیون های اگزوژن (Sarimax)
  7. Autoregression بردار (VAR)
  8. وکتور Autoregression متوسط حرکت (Varma)
  9. وکتور Autoregression میانگین حرکت با رگرسیون های اگزوژن (Varmax)
  10. هموار سازی نمایی ساده (SES)
  11. هموار سازی نمایی هولت وینتر (HWES)

از آنجا که در داده های ما فصلی وجود داشت ، مدل اجرا شده روش هموار سازی نمایی Holt-Winters بوده است زیرا برای داده های سری زمانی با روند و/یا اجزای فصلی مناسب است.

این روش از هموار سازی نمایی برای رمزگذاری مقادیر زیادی از گذشته استفاده می کند و از آنها برای پیش بینی مقادیر "معمولی" برای حال و آینده استفاده می کند. هموار سازی نمایی به استفاده از یک میانگین متحرک با وزنه برداری (EWMA) برای "صاف کردن" یک سری زمانی اشاره دارد [11].

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

در اینجا اجرای با استفاده از خطای root-yean-square (RMSE) به عنوان متریک برای ارزیابی خطای مدل ارائه شده است.

از این شکل ، می توانیم مشاهده کنیم که چگونه مدل فصلی و روند سریال های زمانی را ضبط می کند و در پیش بینی Outliers خطایی دارد.

6. نتیجه گیری

دانستن الگوهای اصلی سری زمانی و یادگیری نحوه اجرای مدل های پیش بینی سری زمانی به دلیل بسیاری از کاربردهای آنها ضروری است.

در طول این مقاله ، ما روند و فصلی را با یک مثال مفید بر اساس یک مجموعه داده دما پوشش داده ایم. جدا از بررسی روند و فصلی ، ما دیده ایم که چگونه آن را کاهش دهیم و چگونه می توان یک مدل اساسی را ایجاد کرد که از این الگوهای برای استنباط دمای چند روز آینده استفاده می کند.

از اینجا ، مراحل بعدی به سمت درک سایر مدل های پیش بینی مانند موارد ذکر شده در بخش 5 می رود. در اینجا من دو پیوند [10 ، 12] را به مقالات دیگری می گذارم که می تواند پسوند این مقاله در نظر گرفته شود.

اگر از این پست لذت بردید ، لطفاً مشترک شوید. شما به همه مطالب من + هر مقاله دیگر در رسانه از سازندگان عالی دسترسی خواهید داشت!

استراتژی برای تجارت گزینه های...
ما را در سایت استراتژی برای تجارت گزینه های دنبال می کنید

برچسب : نویسنده : فریبا کامران بازدید : 36 تاريخ : دوشنبه 22 خرداد 1402 ساعت: 20:46