سری زمانی()ts

1402/06/14

دسترسی سریع


sdata.ir   به نام خدا نام دانشجو:فرنوش اکبری نام استاد:آقای خاورزاده درس R  sdata.ir سری زمانی()ts ساخت سری زمانی: داده های سری زمانی،بردار ها با ماتریس هایی از داده های عددی هستند که ستون آن،یک سری زمانی مجزا را تشکیل میدهد؛این داده ها در فواصل زمانی بدست آمده است و ترتیب زمانی در جمع آوری داده ها اهمیت دارد.برای ساختن یک سری زمانی در R،از تابعts() استفاده می کنیم که فرم کلی این تابع به صورت زیر است:  

ts(data,start,end,frequency)

  که درآن شناسه ی data،داده های سری زمانی است.شناسه یstart ،زمان مشاهده ی اول است.شناسه یend ،زمان مشاهده ی آخر است و شناسه یfrequency،تعداد مشاهدات در هر واحد زمانی است.             مثال: تابع زیر،سری زمانی را برای داده های 1:12، از سال1364 تا سال 1376 تشکیل می دهند؛

>  x<-ts(1:12,start=1364,end=1376,frequency=1)

> x

Time Series:

Start = 1364

End = 1376

Frequency = 1

[1]  1  2  3  4  5  6  7  8  9 10 11 12  1

توجه کنید که تابع نیز همان سری زمانی را تولید میکند.   نکته: تابع time()،سری زمانی جدید را روی همان واحد های زمانی موجود ایجاد می کند که در این صورت،مقادیر آن زمان های ثبت مشاهدات است.(برداری از زمان هایی که در آن ها سیزمانی به دست آمده است.) نکته: تابع cycle()،سری زمانی به وجود می آورد که مقادیر آن،موقعییت هر مشاهده در تناوب مربوط به سری زمانی را نشان می دهد. نکته: تابعfrequency، تعداد نمونه ها در هر واحد زمان را نشان می دهد. نکته: تابعdeltat، فاصله ی زمانی بین مشاهدات را نمایش می دهد. سری زمانی علاوه بر ویژگی طول و حالت،دارای ویژگی  tspاست،به طوری که با این ویژگی می توان"زمان شروع سری"،"زمان پایان سری"و"دوره ی تناوب مشاهدات "را مشخص کرد.برای مثال،برای سری زمانی x،مثالی که در بالا ذکر شد،داریم:

> tsp(x)

[1] 1364 1376    1

  بررسی نموداری سری زمانی برای رسم یک نمودار سری زمانی درR،از تابع ts.plotاستفاده میکنیم.   برای رسم نمودار های پراکندگی تاخیر،که در تشخیص خود هم بستگی کمک می کند،از تابع lag.plot() استفاده میکنیم.   تابعacf() ،به صورت نموداری برآوردی از تابع اتوکواریانس با تابع خود هم بستگی (ACF)را نشان میدهد.   تابع pacf()،برای خود هم بستگی های جزیی(PACF) مورد استفاده قرار میگیرد.   تابع هم بستگی()ccf ،هم بستگی متقاطع (با مواریانس متقاطع) دو سری یک متغییره را بررسی می کند.   همانطور که می دانیم و با توجه به آنچه گفته شد،با استفاده از نمودار سری زمانی،نمودار پراکندگی تاخیر و نمودار تابع خود هم بستگی،می توان تصویری از هم بستگی پیاپی سری زمانی را نمایش داد.                       مثال: برای داده های ،که داده های مربوط به مرگ و میر تصادفی در ایالات متحده بین سال های 1973 تا 1978  است.نکات گفته شده در بالا را بررسی می کنیم:

USAccDeaths

       Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec

1973  9007  8106  8928  9137 10017 10826 11317 10744  9713  9938  9161  8927

1974  7750  6981  8038  8422  8714  9512 10120  9823  8743  9129  8710  8680

1975  8162  7306  8124  7870  9387  9556 10093  9620  8285  8466  8160  8034

1976  7717  7461  7767  7925  8623  8945 10078  9179  8037  8488  7874  8647

1977  7792  6957  7726  8106  8890  9299 10625  9302  8314  8850  8265  8796

1978  7836  6892  7791  8192  9115  9434 10484  9827  9110  9070  8633  9240

                      زمانی که دستور مقابل را میزنیم در نرم افزار پلات زیر را به ما میدهد که خود این پلات برای ما نمایانگر یه تفسیر هایی می باشد. مثلا نشان میدهد که مقدار مرگ و میر در زمان های مختلف چگونه بوده است.به طور مثال در نیمه ی اول سال 1973 مقدار تصادفاتی که منجر به مرگ شده است به بالاترین میزان خود رسیده است.وهم چنین در اوایل سال 1974 و1977 و1978 کمترین میزان تصادفات منجر به مرگ داشته ایم.این  دستور پلات مربوط به سری زمانی را به مانشان میدهد که ما از روی ان تقریبا متوجه شدیم که در چه زمان هایی بیشترین و کمترین مقدار تصلدف منجربه مرگ رخ داده است.  

ts.plot(USAccDeaths)

      f         تابعdeltat، فاصله ی زمانی بین مشاهدات را نمایش می دهد.  

>  deltat(USAccDeaths)

[1] 0.08333333

به طور مثال deltat(1973,1974) را  اگر ما بخواهیم یعنی اینکه فاصله ی زمانی مشاهده ی اول و دوم.این بدان معنی است که مشاهده ی اول از ماه اول منهای مشاهده ی دوم از ماه دوم.که اینجا مقدارش تقریبا برابر 0.08 شده است.     سری زمانی علاوه بر ویژگی طول و حالت،دارای ویژگی tsp است،به طوری که با این ویژگی می توان"زمان شروع سری"،"زمان پایان سری"و"دوره ی تناوب مشاهدات "را مشخص کرد.   همانطور که در مثال رو برو مشاهده میکنید زمان شروع سری 1973 است و زمان پایان سری 1978 است و دوره ی تناوب مشاهداتمون 12 است این یعنی 12 ماه سال دوره ی تناوب ما در اینجا به حساب آمده است.

> tsp(USAccDeaths)

[1] 1973.000 1978.917   12.000

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

> frequency(USAccDeaths)

[1] 12

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

lag.plot(USAccDeaths)

sdata.ir   درنمودار های تاخیر،اگر توده ی نقاط دایره ای شکل باشند،هم بستگی کمی درآن تاخیر وجود دارد.اگر شکل توده ی نقاط بیضی باشد،نشان دهنده ی هم بستگی مثبت یا منفی است. ما در این پلات این جریان را به وضوح میبینیم که شکل توده به صورت دایره ای نیست و چون به صورت دایره ای نیست متوجه میشویم که زمان یعنی روزها و ماه های سال در میزان تصادفات مبجر به مرگ و میر هم بستگی داشته است. تابعacf: تابعacf() به صورت نموداری برآورد تابع اتو کواریانس یا تابع خود هم بستگی را می دهد.   دستور مقابل نمودار ،نمودار تابع خود هم بستگی برای داده های تصادفات منجر به مرگ ومیر ایالات متحده است.که دارای دوره ی تناوب 12 است.

acf(USAccDeaths)

sdata.ir   این نمودار به ما نشان میدهد که میزان خود هم بستگی چه قدر بوده است.به طور مثال ما این موضوع را میدانیم که هم بستگی هر چیزی با خودش یک است. با استفاده از این دستور می توانیم تابع اتو کواریانس و تابع هم بستگی و تابع خود هم بستگی جزیی را بدست آوریم البته شایان ذکر است که بگویم در دوقسمت این دستور ها با یکدیگر متفاوت است. تابع اتو کواریانس : دستور تابع اتو کواریانس به صورت زیر می باشد.

acf(x,lag.max=N/4,typ="cov",main="ACVE")

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

acf(x,lag.max=N/4,typ="par",main="PACF")

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

acf(x,lag.max=N/4,typ="cor",main="ACF")

که در آن دستور به معنای هم بستگی است.که هرگاه یک معادله ی خطی نوشتیم و علامت X,Yهر دو مثبت بودند هم بستگی آن ها 1 است و هرگاه هر یکی از آنها منفی باشد و دیگری مثبت باشد هم بستگی 1- می شود.           به طور مثال داده های تصادفات منجر به مرگ ایلات متحده را در این دستور ها وارد میکنیم تا ببینم خروجی به ما چه چیزی می دهد.    

Acf(USAccDeaths,lag.max=100/4,typ=”cov”,main=”ACVE”)

sdata.ir این نمودار ،نمودار تابع خود هم بستگی می باشد.که نشان می دهد هر متغییر با خودش چه میزان هم بستگی دارد.  

acf(USAccDeaths,lag.max=100/4,typ="par",main="PACF")

  sdata.ir sdata.ir این نمودار ،نمودار خود هم بستگی جزیی است.      

acf(USAccDeaths,lag.max=100/4,typ="cor",main="ACF")

sdata.ir این نمودار ،نمودار هم بستگی است.میزان تصادفات با میزان مرگ و میر هم بستگی دارد.حال باید توجه کنیم که ایا هم بستگی آن ها مستقیم است یا معکوس که در اینجا شایان ذکر است که هم بستگی مستقیمی دارد.         کاربا مدل ARIMA(): برای برازش مدل به داده ها arima() ،از تابع arima()استفاده می کنیم.فرم کلی این تابع به صورت زیر است: این دستور کلی از برازش مدل است:

arima(x,order=c(0,0,0),seasonal=list(order=c(0,1,1)),method=c("ML"))

  که در آن یکx سری زمانی یک متغییره است.orderشامل سه مولفه ی (p,d,q)است که رتبه یp ، رتبه ی AR ،dمرتبه ی تفاضل گیری  و qرتبه یMA است،seasonal به همراه period (که به طور پیش فرض برابر با فراوانی در نظر گرفته می شود)قسمت فصلی مدل arima را مشخص می کندو در شناسه یmethod  نوع روش محاسبه ی ضرایب رگرسیونی مشخص می شود. پس از برازش مدل به داده ها ،باید مناسب بودن برازش داده شده بررسی شود. یکی از روش های تشخیص مناسب بودن مدل برازش داده شده،رسم نمودار های باقی مانده های استاندارد شده = در مقابل زمان است. اگر مدل مناسبی برازش شده باشد و داده ها نرمال باشدآنگاه  تقریبا یک فرآیند خالص نرمال  با میانگین  صفر و واریانس یک است. روش دیگر برای تشخیص مناسب بودن مدل برازش داده شده،آزمون خود هم بستگی باقی مانده ها است. اگر مدل مناسب باشد خود هم بستگی های باقی مانده ها بید متغییر های تصادفی ناهمبسته و نرمال با میانگین صفر و واریانس باشد.         پس از این که مدل مناسب به داده ها برازش شد،با استفاده از تابع  ،predict() نقاط بعدی مدل را پیش بینی می کنیم.فرم کلی این تابع به صورت زیر است: Predict(مدل برازش داده شده ,n.ahead=تعداد گام لازم یرای پیش بینی ,newxreg=تعداد گام جدید)   دقت کنیدکه newxreg باید حداقل تعداد سطر های n.ahead را داشته باشد. برای شبیه سازی از یک مدل arimaاز تابع arima.sim()استفاده می کنیم.فرم این تابع به صورت زیر است: arima.sim(مدل,n=طول سری خروجی)   پس از اینکه مدل مناسب به داده ها برازش شد،با استفاده از تابع نقاط بعدی مدل را پیش بینی میکنیم.   برای رسم نمودار تشخیصی سری زمانی ،از تابع tsdiag()استفاده میکنیم.که خروجی این تابع شامل نمودار باقی مانده سری زمانی ،نمودار تابع خود هم بستگی باقی مانده، و مقادیر  pمقدار برای آماره ی یانگ باکس است.   از تابع عمومی summary() برای تولید خلاصه ی نتایج حاصل ار تابع برازش مدل استفاده میکنیم.   از تابع عمومی resuduals() برای استخراج باقی مانده های مدل برازش  داده شده به وسیله ی تابع برازش استفاده می کنیم.         مثال: باتوجه به نمودار برای داده های مرگ ومیر تصادفی در ایلات متحده  ملاحظه کردید که این داده ها دارای دوره ی 12 هستند.بنابراین برای اینکه بتوانیم از مدل ARIMAاستفاده کنیم باید تفاضل گیری مرتبه ی یک فصلی داشته باشیم تا مانایی در داده ها حاصل شود در نتیجه مدل پیشنهادی می تواندARIMA(0,1,1)(0,1,1) باشد.بنابراین داریم:  

> arima(USAccDeaths,order=c(0,1,1),seasonal=list(order=c(0,1,1)))

Call:

arima(x = USAccDeaths, order = c(0, 1, 1), seasonal = list(order = c(0, 1, 1)))

Coefficients:

          ma1     sma1

      -0.4303  -0.5528

s.e.   0.1228   0.1784

sigma^2 estimated as 99347:  log likelihood = -425.44,  aic = 856.88

  با این دستور،برداری از براورد ضرایب  MAوSMA  به همراه انحراف معیار آن ها را به دست می آوریم.هم چنین برآورد ماکسیمم درست نمایی واریانس و مقدار AICرا محاسبه می کند.         به طور خیلی ساده (4و1و4) اگر بخواهیم توضیح بدم این گونه است که، وابستگی به مقدار واقعی قبل است و وابستگی به مقدار خطای مرحله ی قبل و اختلاف بعدی و فبلی. مثلا 4 اولی:4 جمله ی مقدار قبل(4تا وابستگی داره که از اصل داده ها دریافتش میکند.). مثلا1: یک  بار اختلاف میگیریم که سری زمانی جدید به سری سری زمانی مانایی تبدیل شود. مثلا 4 دومی:4 تا از مقدار باقی مانده های مرحله قبل                               پس از برآورد پارامتر های مدل باید مناسب بودن مدل را بررسی کنیم.بنابراین با الستفاده از دستور زیر پلات زیر بدست می آید:  

tsdiag(arima(USAccDeaths,order=c(0,1,1),seasonal=list(order=c(0,1,1))))

  sdata.ir اولین پلات ، پلات نمودار باقی مانده سری است که از الگوی خاصی ندارد.دومین نمودار،نمودار تابع خود هم بستگی باقی مانده هاست که باقی مانده ها معنی دار است. خروجی تابع شامل نمودار باقی مانده ی سری،نمودار تابع خود هم بستگی باقی مانده ها و Pمقدار آماره ی یانگ-باکس   دستور کاربردیatuo.arima : این دستور به طور خودکار در نرم افزار می گرده و با توجه به داده ای  که در اختیارش قرار داده ایم به طور خودکار  و اتو ماتیک را انجام میده و و بهترین را معرفی میکند، به طور خودکار و لزومی نداره که شما بهترین  را پیدا کنید. فرم کلی آن به صورت زیر است:

Atuo.arima(data,x)

       

نظرات

هیچ نظری وجود ندارد.


افزودن نظر

Sitemap
Copyright © 2017 - 2023 Khavarzadeh®. All rights reserved