عنوان کتاب: رهیافتی بر حل سری های زمانی در نرم افزار Rو پایتون
نویسنده: امیر علی اقتصاد
ویراستار: سید فخرالدین طاهرزاده موسویان
کتاب رهیافتی بر حل سری های زمانی در نرم افزار R و پایتون نوشته امیر علی اقتصاد میباشد. امروزه، استفاده از رایانهها برای انجام تحلیل دادهها، امری اجتناب ناپذیر است. دهه ۹۰ میلادی تحولاتی باورنکردنی در فناوری رخ داده که آنها میتوان به اینترنت اشاره کرد که جهان را برای همیشه تغییر داد. همچنین دو زبان برنامهنویسی پایتون و آر نیز در همین دهه به دنیا معرفی شد.
این دو زبان برنامهنویسی به دانشمندان داده قدرت فراوانی را برای عملی کردن مدلهای ریسک داد و بحث توانایی و تفاوت بین پایتون و آر نیز از آن زمان براه افتاد که البته هنوز هم بعد از گذشت ۳۰ سال ادامه دارد.
زبانهای برنامهنویسی برای انجام عملیات محاسباتی، توسعه یافتند، به طوری که هر روز دارای امکانات بیشتری شده و بروز میشوند. در این بین زبانهای برنامهنویسی محاسباتی مانند R و پایتون Python از محبوبیت زیادی برخوردار شدند.
چکیده ای از کتاب:
داده های سری زمانی
ارزش و اهمیت مجموعه داده ها و انواع مختلف داده به دلیل کاربردهای فراوان بر کسی پوشیده نیست. یکی از مهمترین و پرکاربردترین انواع داده، داده های سری زمانی است. مجموعه داده هایی وجود دارد که در آنها ویژگی هدف وابسته به زمان است، زیرا با دنباله ای از دوره های متوالی در طول بعد زمان مرتبط است.
در چنین شرایطی گفته میشود که مقادیر متغیر هدف نشان دهنده یک سری زمانی است. از این نوع داده بمنظور پیشبینی استفاده میشود در واقع سری زمانی منجر به کشف الگو رفتار داده ها درگذشته و پیش بینی رفتار آینده میشود.
داده های سری زمانی دارای ویژگیهایی مثل: حجم بالای داده، ابعاد بالا و بروزرسانی مداوم است؛ علاوه بر این، داده های سری زمانی که با ماهیت عددی و پیوسته مشخص میشوند و به عنوان یک کل در نظر گرفته میشود. افزایش استفاده از داده های سری زمانی تلاشهای تحقیق و توسعه زیادی را در زمینه داده کاوی آغاز کرده است.
اخیراً، استفاده روز افزون از داده های زمانی باعث افزایش فعالیتهای تحقیق و توسعه مختلفی در زمینه داده کاوی شده است. به عنوان نمونه هایی از سری زمانی میتوان از ثبت دمای روزانه هوا، مجموع فروش هفتگی یک فروشگاه و قیمت صندوق های سرمایه گذاری و سهام نام برد. حجم بالای این داده ها در طول زمان، برای داده کاوی بسیار اهمیت دارد. استخراج الگوها و اطلاعات مفید از دل این حجم اطلاعات اهمیت سری زمانی را نشان میدهد.
تعریف سری زمانی
دنبالهای از اطلاعات و داده ها که در یک بازه ی زمانی مشخص که مربوط به یک موضوع جمعآوری شدهاند، یک سری زمانی را میسازند. داده های تشکیل دهنده سری زمانی نمایانگر تغییرات پدیدهی مورد بررسی در طول زمان است؛ بنابراین میتوانیم داده های سری زمانی را، داده هایی وابسته به زمان بدانیم. این دادهها تغییراتی که پدیده در طول زمان دچار شده را منعکس میکنند.
بنابراین میتوانیم این مقدارها را یک بردار وابسته به زمان بدانیم. در این حالت اگر X یک بردار باشد، سری زمانی را میتوان به صورت زیر نشان داد؛ که در آن t، بیانگر زمان و X نیز یک متغیر تصادفی است.
طبق این تعریف زمان t=0 نیز قابل تعریف است. این لحظه میتواند زمان تولد یک پدیده یا هنگامی باشد که اولین اطلاعات در آن لحظه ثبت شده است. به این ترتیب X(t)- متغیر تصادفی X را در زمان t نشان میدهد. مقدارهای مشاهده شده این متغیر تصادفی دارای ترتیبی هستند که زمان وقوع هر داده را نشان میدهند.
اگر متغیر تصادفیX، یک بعدی باشد، یعنی از بین ویژگیهای مختلف یک پدیده فقط از یکی ویژگی برای ایجاد مدل سری زمانی استفاده شود، مدل را یک متغیره (Univariate) مینامند. ولی اگر از چندین ویژگی برای ایجاد مدل سری زمانی استفاده شود، مدل سری زمانی را چند متغیره (Multivariate) میگویند. البته اگر علاوه بر زمان، مکان یا مختصات را (یا هر اطلاعاتی که مقدار دادهها به آن وابسته باشند) به مدل اضافه کنیم، وارد مبحث آمار فضایی (Spatial Statistic) خواهیم شد.
انواع متغیرها در سری زمانی
انواع متغیر سری زمانی: اگر متغیر سری زمانی از بین ویژگیهای یک پدیده، دارای فقط یک ویژگی باشد به آن یک متغیر “تک متغیره Univariate ” گفته میشود که در ایجاد سری زمانی به کار رفته است. به طور مثال ثبت شاغل بودن یا بیکار بودن افراد فقط بر اساس جنسیت یا فقط بر اساس سن که باعث ایجاد یک سری زمانی با یک ویژگی میشود.
ولی اگر متغیر از چندین ویژگی پدیده مورد نظر استفاده کرده باشد برای ایجاد سری زمانی به آن سری زمانی “چند متغیره Multivariate ” گفته میشود. به عنوان مثال ثبت اطلاعات افراد شاغل با استفاده از ویژگیهایی چون سن، تحصیلات، جنسیت، ملیت و غیره با یک دیگر باعث ایجاد یک سری زمانی چند متغیره میشود.
همچنین اگر تغییرات پدیده را در مدل سری زمانی برای زمانهای منقطع در نظر بگیریم، سری را زمان-گسسته (Discreet Time) و برعکس اگر زمان را به صورت پیوسته در مدل فرض کنیم، سری را زمان-پیوسته (Continuous Time) مینامند. برای مثال ثبت دما، دبی رودخانه و … از گروه سریهای زمان-پیوسته هستند و تعداد جمعیت، تولیدات کارخانه و … از نوع سری زمان- گسسته محسوب میشوند.
معمولا در سری زمان-گسسته، دادهها در مقاطع مشخصی از زمان مثل ساعت، روز یا هفته و حتی سال جمعآوری میشوند. غالباً ایجاد مدلها برای سریهای زمان-گسسته انجام میشود زیرا با استفاده از گروهبندی و ایجاد فاصلههای زمانی ترتیبی، امکان تبدیل سریهای زمانی-پیوسته به زمان-گسسته وجود دارد.
انواع سری زمانی
سری زمانی به دو نوع گسسته و پیوسته تقسیم میشود. در واقع سری زمانی یک سری گسسته است که تغییرات پدیده و موضوع مورد مطالعه را برای قطعه زمانهایی مشخص در نظر بگیریم؛ مثلاً ثبت اطلاعات بر اساس روز، ساعت، ماه و غیره نشان دهنده سری زمانی گسسته است. برای مثال، تعداد جمعیت، تولیدات کارخانه و … از نوع سری زمانی گسسته محسوب میشوند.
سری زمانی پیوسته به سری گفته میشود که زمان به صورت پیوسته در مدل در نظر گرفته میشود برای مثال ثبت دما، دبی رودخانه و … از گروه سریهای زمانی پیوسته است.
سری زمانی ایستا یا سری زمانی مانا
سری زمانی که توانایی پیشبینی برای آن وجود دارد، یک سری زمانی “ایستا Stationary ” است. منظور از یک سری زمانی ایستا، در حقیقت یک سری زمانی است که قوانین حاکم بر تغییرات مقدارها، وابسته به زمان نباشد. قوانین احتمالی حاکم بر فرایند، با زمان تغییر نمیکند یا به عبارتی فرایند در تعادل آماری است و این به معنی ثابت سازی واریانس و میانگین در طول زمان است.
سری زمانی ناایستا
سری زمانی ناایستا Non- Stationary ، سری زمانی است که تغییرات آن در طول زمان متفاوت باشد و به زمان وابسته باشد، بنابراین اطلاعات آماری ثابتی نخواهد داشت.
برای درک بهتر به تصویرهای زیر توجه کنید. در همه آنها محور افقی بیانگر زمان و محور عمودی متغیری است که وابسته به زمان تغییر میکند. این متغیر میتواند میزان بارش، حرارت، درآمد و غیره باشد. مطمئن هستیم که تغییرات این متغیر وابسته به زمان است و قرار است مقدار آن را برای زمان آینده پیشبینی کنیم. سری زمانی که با رنگ سبز نشان داده است، سری ایستا و در مقابل سری زمانی قرمز رنگ، بیانگر سری زمانی ناایستا است. در ادامه به بررسی عواملی میپردازیم که یک سری زمانی را ناایستا میکنند.
روند (Trend)
اگر میانگین سری زمانی وابسته به زمان نباشد، آن را سری زمانی ایستا (Stationary Time Series) مینامیم. در این صورت تغییرات میانگین سری زمانی برحسب زمان باعث ناایستایی سری زمانی
(Non-Stationary Time Series) خواهد شد. تغییرات میانگین در طول دوره یا بازه زمانی سری را روند (Trend) مینامند. ممکن است الگوی تغییرات به صورت صعودی یا نزولی باشد.
ثابت بودن واریانس
اگر واریانس پدیده سری زمانی در طول زمان ثابت نباشد، باز هم سری را ناایستا مینامند. در سری زمانی ایستا، پراکندگی یا واریانس نباید تابعی از زمان محسوب شود. این خاصیت را گاهی «یکنواختی» (Homoscedasticity) مینامند. در تصویر زیر به خوبی نابرابری واریانس در بازههای مختلف زمانی در نمودار قرمز رنگ دیده میشود. در حالیکه در نمودار سبز رنگ، میزان تغییرات یکسان به نظر میرسد. توجه داشته باشید که منظور از واریانس میانگین مربعات نوسانات نسبت به خط مرکزی روی محور عمودی است.
یکنواختی در واحدهای زمانی
برای اینکه نشان دهیم میزان تغییرات سری زمانی در طولهای مشخصی از زمان نیز مستقل از زمان است، از مفهوم کوواریانس کمک میگیریم. در یک سری زمانی ایستا، در بازههای زمانی به طول m یعنی فاصله زمانی i تا i+m دادههای سری نباید وابسته به زمان باشند. در تصویر زیر، نمودار قرمز رنگ، نشانگر عدم چنین خاصیتی است، پس سری زمانی با توجه به اینکه دارای واریانس و میانگین ثابتی است، باز هم سری زمانی ایستا نخواهد بود.
ولی شاید این سوال به ذهن برسد که چرا سری زمانی باید ایستا باشد؟ آیا برای سریهای زمانی ناایستا نمیتوان تحلیل مناسبی انجام داد و به پیشبینی دقیقی رسید؟ با توجه به اینکه بسیاری از پدیدههای مرتبط با سری زمانی ایستا نیستند، چگونه تحلیل سری زمانی روی آنها صورت خواهد گرفت؟
علت اصلی تحلیل سری زمانی روی دادههای زمانی ایستا، سادگی انجام محاسبات است. از طرفی وجود چنین خاصیتی امکان برآورد شاخصهای دیگر مانند میانگین و واریانس و … را فراهم میآورد. به علاوه روشهای دقیق و مناسبی برای ایستا کردن سریهای زمانی ناایستا نیز وجود دارد.
تحلیل یک سری زمانی
تحلیل سری زمانی در مورد یک پدیده، ایجاد یک مدل آماری برای دادههای وابسته به زمان براساس اطلاعات گذشته ی آن پدیده را گویند. با این کار امکان پیشبینی در مورد آینده پدیده مورد بحث میسر میشود. به بیان دیگر تحلیل سری زمانی، ایجاد مدلی گذشته نگر است تا امکان تصمیمات آیندهنگر را فراهم سازد.
ایجاد و به کارگیری مدلهای آماری و تصادفی در قالب تحلیل سری زمانی، امروزه به کمک رایانههای پرسرعت، بسیار فراگیر شده و حاصل آن مدلهایی است که با داشتن پارامترهای بسیار انعطافپذیر، میتوانند آینده نرم افزار را برای هر پدیدهای (در صورت وجود دادههای مناسب در گذشته) پیشبینی کنند. کاربردهای تحلیل سریهای زمانی، در زمینههای مختلف نظیر، کسب و کار، امور مالی، بورس، مهندسی و نرم افزار … دیده میشود.
برای پیشبینی روند داده های آینده، در یک سری زمانی اگر داده ها نرم افزار دارای فواصل مناسب باشند بسیار مفید است و نیز وابستگی داده ها موضوع بسیار مهمی است .در یک سری زمانی تحلیل اساسی نرم افزار بررسی وابستگی داده ها به همدیگر است برای اینکه اگر داده ها مستقل از یک دیگر باشند نتایج مطلوبی حاصل نخواهد شد. دیتاستی که دارای داده های از دست رفته زیادی باشد یعنی داده هایی که به هر نحوی (خطای انسانی یا سیستمی) ثبت نشده باشد قطعا نمیتواند پیشبینی درستی برای ادامه روند داشته باشد.
از اهداف اصلی سری های زمانی میتوان ابتدا به توضیح و تفسیر پدیده ها و در نهایت به پیش بینی نرم افزار پدیده ها اشاره کرد. با تحلیل یک سری زمانی ابتدا اطلاعاتی از روند یک پدیده می توان بدست آورد و سپس اینکه متغیرها در هر شرایطی چه وضعیتی دارند و بعد از تفسیر یک پدیده می توان با توجه به شرایط موجود آینده نرم افزار پدیده را نیز پیشبینی کرد.
روش تحلیل سری زمانی
روشهای تحلیل سری زمانی به دو دسته تقسیم میشوند: روشهای دامنه فرکانس و روشهای دامنه زمان. دسته اول شامل تحلیل طیفی و تحلیل موجک و دسته دوم شامل تحلیلهای خودهمبستگی و همبستگی متقابل است.
افزون بر این میتوان روشهای تحلیل سری زمانی را به دو دسته پارامتری و ناپارامتری تقسیم کرد. در روشهای پارامتری چنین انگاشته میشود که فرایند نرم افزار مانای احتمالاتی دارای ساختاری مشخص است که میتوان آن را با تعداد اندکی نرم افزار پارامتر (از جمله با استفاده از مدل خودهمبسته یا میانگین متحرک)توصیف کرد. در این روشها هدف تخمین پارامترهای مدلی است که فرایند احتمالاتی را توصیف میکند.
در مقابل، روشهای ناپارامتری صریحاً کوواریانس یا طیف فرایند را بدون در نظر گرفتن ساختاری مشخص برای آن تخمین میزنند. همچنین میتوان روشهای تحلیل سری زمانی را به دسته روشهای خطی و غیر خطی یا روشهای تک متغیره و چند متغیره تقسیم کرد و نیز اگر تغییرات پدیده را در مدل سری زمانی برای زمانهای منقطع در نظر بگیریم.
سری را زمان-گسسته (Discreet Time) و برعکس اگر زمان را به صورت پیوسته در مدل فرض کنیم، سری را زمان-پیوسته (Continuous Time) مینامند. برای مثال ثبت دما، دبی رودخانه و … از گروه سریهای زمان-پیوسته هستند و تعداد جمعیت، تولیدات کارخانه و … از نوع سری زمان- گسسته محسوب میشوند.
معمولا در سری زمان-گسسته، دادهها در مقاطع مشخصی از زمان مثل ساعت، روز یا هفته و حتی سال جمعآوری میشوند. غالباً ایجاد مدلها برای سریهای زمان-گسسته انجام میشود زیرا با استفاده از گروهبندی و ایجاد فاصلههای زمانی ترتیبی، امکان تبدیل سریهای زمانی-پیوسته به زمان-گسسته وجود دارد.
بعد از شناسایی و حذف مولفههای اصلی سری زمانی، وقت آن رسیده که بتوانیم عمل پیشبینی را انجام دهیم، یعنی مدل ریاضی برای ارتباط بین مقدارهای سری زمانی را پیدا کنیم. در اینجا به دو مدل پیشبینی سری زمانی به نام میانگین متحرک (Moving Average) و اوتورگرسیو (Autoregressive) میپردازیم.
پیشبینی میانگین متحرک
برای پیشبینی سری زمانی ایستا که نرم افزار روند از آن خارج شده است، میتوان از مدل میانگین متحرک استفاده کرد. در این مدل سری زمانی X(t)به صورت زیر نوشته میشود:
X(t)=θ0+Z(t)+θ1Z(t−1)+…+θqZ(t−q)
که در آن Z(t)، همان خطای تصادفی با میانگین صفر و واریانس ثابت است. به این مدل، میانگین متحرک مرتبه q گفته و به صورت MA(q)، نمایش داده میشود. در این مدل مقدار سری زمانی در زمان t یک ترکیب خطی از خطاها تا زمان t است.
با توجه به تعریف مدل و صفر بودن میانگین Z(t)، مشخص است که میانگین سری زمانی ایستا برابر است با θ0. برای محاسبات راحتتر در مدل، میتوان این میانگین را از سری زمانی ایستا کم کرد تا مدل به صورت زیر نوشته شود، که در آن θ0 و θ1 پارامترهای مدل هستند.
X(t)=Z(t)+θ1Z(t−1)+…+θqZ(t−q)
استفاده از این مدل باید با در نظر گرفتن یک شرط صورت پذیرد. شرطی که در این مدل باید رعایت شود، آن است که میبایست قدرمطلق ضرایب مدل کوچکتر از یک باشند.