Úvodné operácie

Nahratie balíkov na analýzu časových radov

<<"timeseri\\datasmoo.m"
<<"timeseri\\timeseri.m"
<<"timeseri\\userfunc.m"
<<"LinearRegression`"
<<"NonlinearRegression`"

Nastavenie pracovného  adresára

SetDirectory[NotebookDirectory[]];

Nastavenie podmienok pre ListPlot

SetOptions[ListPlot,PlotRange->All,BaseStyle->{11,FontFamily->"Arial"}];
popis=Table[{60+i*12,1999+i*1},{i,0,10}];

Načítanie dát (v prípade potreby odstránenie prvých dvoch údajov)

data=ReadList["SVKINFLACIA.txt"];
data=Flatten[data];
n=Length[data];

Základná analýza časového radu:

Vykresliť časový rad s popisom osí

gdata=ListPlot[data,Ticks->{popis,Automatic}, AxesOrigin->{0,0}, AxesLabel->{"time [month]","priemerná inflácia"},PlotLabel->"SVK Inflácia",Joined->True]

Vypočítať strednú hodnotu, smerodajnú odchýlku a rozptyl

μ=Mean[data]
σ=StandardDeviation[data]
σ2=Variance[data]

Príprava dát na modelovanie a prognózu:

Vytvoriť skúšobnú vzorku (5 posledných dát) a testovaciu vzorku (ostávajúce dáta)

skus=Take[data,-5]

test=Take[data,n-5]

Vykresliť skúšobnú aj testovaciu vzorku s popisom osí

gskus=ListPlot[skus,Ticks->{popis,Automatic}, AxesOrigin->{0,0}, AxesLabel->{"time [month]","priemerná inflácia"},PlotLabel->"skusobna vzorka",Joined->True]

gtest=ListPlot[test,Ticks->{popis,Automatic}, AxesOrigin->{0,0}, AxesLabel->{"time [month]","priemerná inflácia"},PlotLabel->"testovacia vzorka",Joined->True]

Uložiť skúšobnú aj testovaciu vzorku spolu s ich grafmi do definičného súboru

Save["skus.def",skus]
Save["test.def",test]

Vypočítať strednú hodnotu, smerodajnú odchýlku a rozptyl testovacej vzorky

μ = Mean[test]
σ = StandardDeviation[test]
σ2 = Variance[test]

Vypočítať ACF a PACF pre testovaciu vzorku

ntest=Length[test]

corrtest=CorrelationFunction[test,40];
myplotcorr1[corrtest,2/Sqrt[n],AxesLabel->{k,(Subscript[ρ, k])},PlotLabel->"Autocorrelation Function"]

parcorrtest=PartialCorrelationFunction[test,40];
myplotcorr1[parcorrtest,2/Sqrt[n],AxesLabel->{k,(Subscript[ρ, k])},PlotLabel->"Partial Correlation Function"]

Na základe PACF určiť pomocou LevinsonDurbinEstimate a informačných kritérií AIC, BIC vhodný rád p pre model AR(p)

armodels=LevinsonDurbinEstimate[test,40];

dis=Map[#[[-1]]&,armodels];

ListPlot[dis,Joined->True,AxesLabel->{"p","sigma2"}]

nn=20;

mod=LevinsonDurbinEstimate[test,nn];
Do[Print["p = ", p,"   AIC= ",AIC[mod[[p]],n],"   BIC= ",BIC[mod[[p]],n]],{p,nn}]

p1=Flatten[Position[Table[AIC[mod[[i]],n],{i,1,nn}],Min[Table[AIC[mod[[i]],n],{i,1,nn}]]]];
p2=Flatten[Position[Table[BIC[mod[[i]],n],{i,1,nn}],Min[Table[BIC[mod[[i]],n],{i,1,nn}]]]];
If[p1==p2,Print["Vysledny model je AR"p1],Print["Vysledny model je AR",Max[p1,p2]]
]