|

ساخت وبلاگ

|

|

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

graphic of a mind with clocks representing time series model

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

ثابت بودن چیست؟

ثابت بودن ویژگی مهم سری زمانی است. گفته می شود اگر خصوصیات آماری آن با گذشت زمان تغییر نکند ، یک سری زمانی ثابت است. به عبارت دیگر ، میانگین و واریانس ثابت دارد و کواریانس آن مستقل از زمان است.

نمونه ای از یک فرآیند ثابت.|تصویر: Marco Peixeiro

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

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

شاید متوجه شده باشید که عنوان طرح فوق "دیکی-فولر" است. این آزمایش آماری است که ما برای تعیین اینکه آیا یک سری زمانی ثابت است یا خیر ، انجام می دهیم.

تست دیکی مولفر چیست؟

0 ، سپس روند ثابت نیست. اگر p = 0 باشد ، روند ثابت در نظر گرفته می شود.

Example of an autocorrelation plot

بدون ورود به جزئیات فنی ، آزمایش دیکی-فولر فرضیه تهی را آزمایش می کند تا مشخص کند آیا یک ریشه واحد وجود دارد یا خیر.

0 ، و روند ثابت نیست.

در غیر این صورت ، P = 0 ، فرضیه تهی رد می شود و روند ثابت در نظر گرفته می شود.

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

نمونه ای از یک فرآیند غیر ثابت.|تصویر: Marco Peixeiro

example of a seasonality plot

نحوه ساخت یک مدل سری زمانی

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

میانگین حرکت

هموارسازی نمایی.

هموار سازی نمایی مضاعف.

example of stationarity

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

میانگین متحرک یکپارچه خود خودگردان فصلی (Sarima.)

میانگین متحرک

مدل متوسط در حال حرکت احتمالاً ساده لوحانه ترین روش برای مدل سازی سری زمانی است. این مدل به سادگی بیان می کند که مشاهده بعدی میانگین تمام مشاهدات گذشته است.

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

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

مثالی از میانگین متحرک در یک پنجره 24 ساعته.|تصویر: مارکو پیکسیرو

The Dickey-Fuller test is a statistical test used to evaluate whether a time series is stationary or not. It evaluates the null hypothesis to determine if a unit root is present. If the equation retus p>در نمودار بالا، مدل میانگین متحرک را برای یک پنجره 24 ساعته اعمال کردیم. خط سبز سری زمانی را هموار می کند و می بینیم که در یک دوره 24 ساعته دو قله وجود دارد.

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

If it is, then p>مثالی از میانگین متحرک در یک پنجره 12 ساعته.|تصویر: مارکو پیکسیرو

هموارسازی نمایی

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

example of a non-stationary plot

از نظر ریاضی، هموارسازی نمایی به صورت زیر بیان می شود:

بیان هموارسازی نمایی.|تصویر: مارکو پیکسیرو

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

  • مثالی از هموارسازی نمایی.|تصویر: مارکو پیکسیرو
  • از نمودار بالا، خط آبی تیره نشان دهنده هموارسازی نمایی سری زمانی با استفاده از ضریب هموارسازی 0. 3 است، در حالی که خط نارنجی از ضریب هموارسازی 0. 05 استفاده می کند.
  • همانطور که می بینید، هر چه ضریب هموارسازی کوچکتر باشد، سری زمانی هموارتر خواهد بود. این منطقی است، زیرا با نزدیک شدن ضریب هموارسازی به صفر، به مدل میانگین متحرک نزدیک می شویم.
  • هموارسازی دوگانه نمایی
  • هموارسازی نمایی دوگانه زمانی استفاده می شود که روندی در سری زمانی وجود داشته باشد. در آن صورت، ما از این تکنیک استفاده می کنیم، که به سادگی یک استفاده بازگشتی از هموارسازی نمایی دو بار است.

بیان هموارسازی نمایی دوگانه.|تصویر: مارکو پیکسیرو

در اینجا، بتا عامل هموارسازی روند است و مقادیری بین صفر و یک می گیرد.

در زیر می توانید ببینید که چگونه مقادیر مختلف آلفا و بتا بر شکل سری زمانی تاثیر می گذارد.

مثالی از هموارسازی نمایی دوگانه.|تصویر: مارکو پیکسیرو

example of a moving average on a 24 hour window

هموارسازی نمایی سه گانه

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

از نظر ریاضی، هموارسازی نمایی سه گانه به صورت زیر بیان می شود:

Example of a moving average in a 12 hour window

بیان هموارسازی نمایی سه گانه.|تصویر: مارکو پیکسیرو

جایی که گاما عامل صاف کننده فصلی است و L طول فصل است.

مدل میانگین متحرک یکپارچه خود خودگردان فصلی (SARIMA)

ساریما در واقع ترکیبی از مدل های ساده تر است که یک مدل پیچیده را ایجاد می کند که می تواند یک سری زمانی را ارائه دهد که دارای خواص غیر ثابت و فصلی است.

Exponential smoothing equation

اول ، ما مدل Autoregression ، AR (P) را داریم. این اساساً رگرسیون سری زمانی است که بر روی خود قرار می گیرد. در اینجا ، فرض می کنیم که مقدار فعلی به مقادیر قبلی آن با برخی از تاخیر بستگی دارد. این یک پارامتر P را می گیرد ، که حداکثر تاخیر را نشان می دهد. برای یافتن آن ، ما به طرح همبستگی جزئی نگاه می کنیم و تاخیر را که پس از آن بیشتر تاخیر قابل توجه نیست ، شناسایی می کنیم.

در مثال زیر ، P چهار خواهد بود.

example of exponential smoothing plot graph

نمونه ای از یک طرح همبستگی جزئی.|تصویر: Marco Peixeiro

در مرحله بعد ، ما مدل متوسط MA (Q) را اضافه خواهیم کرد. این یک پارامتر Q می گیرد که بزرگترین تاخیر را نشان می دهد که پس از آن سایر تأخیر در طرح همبستگی قابل توجه نیست.

در زیر ، Q چهار خواهد بود.

نمونه ای از یک طرح همبستگی.|تصویر: Marco Peixeiro

پس از آن ، ما ترتیب ادغام I (D) را اضافه خواهیم کرد. پارامتر D تعداد اختلافات مورد نیاز برای ایجاد سری را نشان می دهد.

double exponential smoothing equation

سرانجام ، ما مؤلفه نهایی را اضافه خواهیم کرد: Seasonality S (P ، D ، Q ، S) ، جایی که S به سادگی طول فصل است. این مؤلفه به پارامترهای P و Q نیاز دارد که همان P و Q هستند ، اما برای مؤلفه فصلی. سرانجام ، D ترتیب ادغام فصلی است که تعداد اختلافات مورد نیاز برای حذف فصلی از این سریال را نشان می دهد.

با ترکیب همه ، مدل Sarima (P ، D ، Q) (P ، D ، Q ، S) را دریافت می کنیم.

غذای اصلی این است: قبل از مدل سازی با Sarima ، ما باید تحولات را در سری زمانی خود اعمال کنیم تا فصلی و هرگونه رفتارهای غیر ثابت را از بین ببریم.

double exponential smoothing plot graph

این تئوری زیادی برای پیچاندن سر ما بود. بیایید تکنیک های مورد بحث در بالا را در اولین پروژه ما اعمال کنیم.

ما سعی خواهیم کرد قیمت سهام یک شرکت خاص را پیش بینی کنیم. اکنون ، پیش بینی قیمت سهام تقریباً غیرممکن است. با این حال ، این یک تمرین سرگرم کننده باقی مانده است ، و این یک روش خوب برای تمرین آنچه ما آموخته ایم خواهد بود.

مثال مدل سری زمانی: پیش بینی قیمت سهام

ما از قیمت سهام تاریخی صندوق جدید آلمان (GF) استفاده خواهیم کرد تا در پنج روز معاملاتی آینده قیمت بسته شدن را پیش بینی کنیم.(می توانید به همراه مجموعه داده و نوت بوک کد کنید.)

triple exponential smoothing equation

1. داده ها را وارد کنید

اول ، ما برخی از کتابخانه ها را وارد خواهیم کرد که در طول تجزیه و تحلیل ما مفید خواهند بود. همچنین ، ما باید میانگین میانگین درصد خطای درصد (MAPE) را تعریف کنیم ، زیرا این متریک خطای ما خواهد بود.

سپس ، ما مجموعه داده های خود و ده مدخل اول را وارد خواهیم کرد. شما باید دریافت کنید:

10 ورودی اول مجموعه داده.|تصویر: Marco Peixeiro

همانطور که مشاهده می کنید ، ما چند ورودی در مورد سهام متفاوت نسبت به صندوق جدید آلمان (GF) داریم. همچنین ، ما در مورد اطلاعات داخلی ، ورودی داریم ، اما ما فقط می خواهیم اطلاعات پایان روز (EOD) را داشته باشیم.

2. داده ها را تمیز کنید

partial autocorrelation plot

سپس ، ستون های ناخواسته را حذف خواهیم کرد ، زیرا ما فقط می خواهیم روی قیمت بسته شدن سهام تمرکز کنیم.

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

پیش نمایش مجموعه داده های تمیز.|تصویر: Marco Peixeiro

Example of an autocorrelation plot with ma(q) added

بدون ورود به جزئیات فنی ، آزمایش دیکی-فولر فرضیه تهی را آزمایش می کند تا مشخص کند آیا یک ریشه واحد وجود دارد یا خیر.

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

بسته شدن قیمت صندوق جدید آلمان (GF).|تصویر: Marco Peixeiro

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

4. میانگین حرکت

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

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

منحنی صاف شده تا هفته معاملاتی قبلی.|تصویر: Marco Peixeiro

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

تا ماه قبل (30 روز) صاف شده است.|تصویر: Marco Peixeiro تا سه ماهه قبلی (90 روز) صاف شده است.|تصویر: Marco Peixeiro

در حال حاضر روندها آسان تر است. توجه کنید که چگونه روندهای 30 روزه و 90 روزه در پایان یک منحنی رو به پایین نشان می دهد. این ممکن است بدان معنی باشد که سهام احتمالاً در روزهای بعد کاهش می یابد.

5. هموار سازی نمایی

first 10 entries of a data set in a table

حال ، بیایید از هموار سازی نمایی استفاده کنیم تا ببینیم آیا می تواند روند بهتری را انتخاب کند.

در اینجا ، ما از 0. 05 و 0. 3 به عنوان مقادیر برای ضریب هموار سازی استفاده می کنیم. احساس راحتی کنید که مقادیر دیگر را امتحان کنید و ببینید نتایج چیست.

هموار سازی نمایی اعمال شده به مدل.|تصویر: Marco Peixeiro

همانطور که مشاهده می کنید ، مقدار آلفا 0. 05 در حالی که بیشتر روندهای رو به بالا و رو به پایین را انتخاب می کند ، منحنی را صاف می کند.

اکنون ، بیایید از هموار سازی نمایی مضاعف استفاده کنیم.

cleaned data set table

6. هموار سازی نمایی مضاعف

هموار سازی دو نمایی اعمال شده به مدل.|تصویر: Marco Peixeiro

مجدداً با ترکیب های مختلف آلفا و بتا آزمایش کنید تا منحنی های بهتر به نظر برسید.

closing price plot graph of new germany fund

7. مدل سازی

همانطور که قبلاً بیان شد ، برای مدل سازی آن باید سری خود را به یک فرآیند ثابت تبدیل کنیم. بنابراین ، اجازه دهید آزمایش Dickey-Fuller را انجام دهیم تا ببینیم آیا این یک روند ثابت است:

تست Dicke-Fuller برای مدل آشکار مدل غیر ثابت اعمال می شود.|تصویر: Marco Peixeiro

با استفاده از آزمون Dickey-Fuller ، سری زمانی به طرز شگفت آور غیر ثابت است. همچنین ، با نگاهی به طرح همبستگی ، می بینیم که بسیار زیاد است ، و به نظر می رسد که فصلی مشخصی وجود ندارد.

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

Smoothed curve plot graph of new german fund from past week

ساخت مدل سری زمانی ثابت.|تصویر: Marco Peixeiro

سری ما اکنون ثابت است و می توانیم مدل سازی را شروع کنیم.

8. ساریما

اکنون ، برای Sarima ، ابتدا باید چند پارامتر و طیف وسیعی از مقادیر را برای سایر پارامترها تعریف کنیم تا لیستی از تمام ترکیبات ممکن P ، Q ، D ، P ، Q ، D ، S ایجاد کنیم.

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

پس از اتمام این کار ، خلاصه ای از بهترین مدل را چاپ خواهیم کرد ، و شما باید ببینید:

نتایج چاپ شده مدل سری زمانی.|تصویر: Marco Peixeiro

exponential smoothing of the new german fund model

در نهایت می توانیم قیمت پایانی پنج روز معاملاتی آینده را پیش بینی کنیم و میانگین خطای مطلق (MAPE) مدل را ارزیابی کنیم.

در این حالت ، ما 0. 79 درصد از 79 درصد داریم که بسیار خوب است.

9. قیمت پیش بینی شده را با داده های واقعی مقایسه کنید

اکنون ، برای مقایسه پیش بینی خود با داده های واقعی ، می توانیم داده های مالی را از Finance Yahoo بگیریم و یک DataFrame ایجاد کنیم.

Double exponential smoothing applied to the model

سپس ، ما یک نقشه تهیه می کنیم تا ببینیم که ما از قیمت های واقعی بسته شدن تا چه حد فاصله داشتیم:

مقایسه قیمت های بسته شده پیش بینی شده (خط نارنجی) و واقعی (خط آبی).|تصویر: Marco Peixeiro

به نظر می رسد که ما در پیش بینی های خود کمی خاموش هستیم. در حقیقت ، قیمت پیش بینی شده اساساً مسطح است ، به این معنی که مدل ما احتمالاً عملکرد خوبی ندارد.

باز هم ، این به دلیل رویه ما نیست ، بلکه به این واقعیت است که پیش بینی قیمت سهام اساساً غیرممکن است.

dickey fuller test applied to the model

از اولین پروژه ، ما قبل از استفاده از Sarima برای مدل سازی ، کل روش ساخت یک سری زمانی ثابت را آموختیم. این یک روند طولانی و خسته کننده است و با استفاده از بیش از حد دستی.

حالا بیایید پیامبر فیسبوک را معرفی کنیم. این یک ابزار پیش بینی است که هم در پایتون و هم در R موجود است. این ابزار به افراد متخصص و غیرمتخصص اجازه می دهد تا پیش بینی هایی با کیفیت بالا و با حداقل تلاش تولید کنند.

پیش بینی کیفیت هوا با پیامبر

tk

عنوان گویای همه چیز است: ما از پیامبر برای کمک به پیش بینی کیفیت هوا استفاده خواهیم کرد.

1. داده ها را وارد کنید

مثل همیشه، ما با وارد کردن چند کتابخانه مفید شروع می کنیم. سپس پنج ردیف اول را چاپ خواهیم کرد:

پنج ورودی اول مجموعه داده.|تصویر: مارکو پیکسیرو

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

اگر مجموعه داده را کمی بیشتر بررسی کنید، متوجه خواهید شد که چندین نمونه از مقدا ر-200 وجود دارد. البته، داشتن غلظت منفی منطقی نیست، بنابراین قبل از مدل سازی باید داده ها را تمیز کنیم.

Summary print of the time series model

بنابراین، ما باید داده ها را پاک کنیم.

2. پاکسازی داده ها و مهندسی ویژگی

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

سپس، تمام اندازه گیری ها را به شناور تبدیل می کنیم.

پس از آن، میانگین هر اندازه گیری را می گیریم تا داده ها را در روز جمع آوری کنیم.

در این مرحله، ما هنوز مقداری NaN داریم که باید از شر آن خلاص شویم. بنابراین، ستون هایی را که بیش از هشت NaN دارند حذف می کنیم. به این ترتیب، می توانیم ردیف های حاوی مقادیر NaN را بدون از دست دادن داده های زیادی حذف کنیم.

Comparison of actual and predicted close prices graph

در نهایت، داده ها را به صورت هفته جمع آوری می کنیم، زیرا روند هموارتری برای تجزیه و تحلیل ایجاد می کند.

ما می توانیم روند هر ماده شیمیایی را ترسیم کنیم. در اینجا، NOx را نشان می دهیم.

غلظت NOx در نمودار رسم شده است.|تصویر: مارکو پیکسیرو

اکسیدهای نیتروژن بسیار مضر هستند، زیرا برای تشکیل دود و باران اسیدی واکنش نشان می دهند و همچنین باعث تشکیل ذرات ریز و ازن سطح زمین می شوند. اینها اثرات نامطلوبی بر سلامتی دارند، بنابراین غلظت NOx یک ویژگی کلیدی کیفیت هوا است.

3. مدل سازی

ما فقط بر مدل سازی غلظت NOx تمرکز خواهیم کرد. بنابراین، همه ستون های نامربوط دیگر را حذف می کنیم.

سپس پیامبر را وارد می کنیم.

تا ماه قبل (30 روز) صاف شده است.|تصویر: Marco Peixeiro تا سه ماهه قبلی (90 روز) صاف شده است.|تصویر: Marco Peixeiro

در این مرحله، داده های ما به این صورت است:

data in a table

نتایج جدول داده ها|تصویر: مارکو پیکسیرو

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

شما باید موارد زیر را ببینید:

پیش بینی های مبتنی بر مجموعه آموزش.|تصویر: Marco Peixeiro

در اینجا ، YHAT پیش بینی را نشان می دهد ، در حالی که YHAT_LOWER و YHAT_UPPER به ترتیب مرز پایین و بالایی پیش بینی را نشان می دهند. پیامبر به شما اجازه می دهد تا به راحتی پیش بینی را ترسیم کنید ، و ما دریافت می کنیم:

پیش بینی غلظت NOX.|تصویر: Marco Peixeiro

همانطور که می بینید ، پیامبر به سادگی از یک خط مستقیم به سمت پایین برای پیش بینی غلظت NOX در آینده استفاده کرد.

سپس ، می توانیم بررسی کنیم که آیا سری زمانی از ویژگی های جالبی مانند فصلی برخوردار است:

پیش بینی روند نزولی برای NOX بدون فصلی.|تصویر: Marco Peixeiro

در اینجا ، پیامبر فقط یک روند نزولی و بدون فصلی را مشخص کرد.

ارزیابی عملکرد مدل با محاسبه میانگین خطای مطلق درصد (MAPE) و میانگین خطای مطلق (MAE) ، می بینیم که MAPE 13. 86 درصد و MAE 109. 32 است که بد نیست. به یاد داشته باشید که ما مدل را خوب تنظیم نکردیم.

chemical trends plot

سرانجام ، ما فقط پیش بینی را با مرزهای بالا و پایین آن ترسیم می کنیم:

پیش بینی میانگین غلظت هفتگی NOX.|تصویر: Marco Peixeiro

اکنون آموخته اید که چگونه یک سری زمانی را با استحکام و الگوبرداری کنید و دانش خود را در دو پروژه مختلف به کار بگیرید.

 

 

 

 

ds and y table results

 

 

 

data results in table

 

 

nox concentration in plot graph

 

 

 

downward trend prediction for nox in seasonality

 

 

 

 

Forecast for average weekly nox

 

 

بهترین استراتژی معاملات...
ما را در سایت بهترین استراتژی معاملات دنبال می کنید

برچسب : نویسنده : صدرا ذوالریاستین بازدید : 57 تاريخ : سه شنبه 22 فروردين 1402 ساعت: 20:54