Určenie systematických zložiek časového radu

Úvodné operácie

Trend

Pre modelovanie časového radu priemerných mesačných prietokov sme vybrali  lineárny trend.

reztrend=ReadList["rezlintrend.dat"];
trend=ReadList["lintrend.def"]

Sezónna zložka

rezsz=ReadList["rezszmf.dat"];
sz=ReadList["szmf.def"]

ZOBRAZENIE  POZOROVANÝCH   DÁT  A  FUNKCIE, KTORÁ JE SÚČTOM TRENDU A SEZÓNNEJ ZLOŽKY

Cyklická zložka

1. Odhad výberového spektra a vykreslenie periodogramu:

spec=Spectrum[rezsz];

Length[spec]

gs=plotspectrum[spec,AxesLabel->{"ω","f(ω)"},Joined->True]

2. Vypísanie 20 najväčších hodnôt spektra (spolu s frekvenciami):

dvojice=Transpose[{spec,Table[j,{j,0,n-1}]}];
Take[Sort[dvojice],-20]

3. Určenie vyznamných frekvencií  pomocou Fisherovho testu :

m=Round[n/2];
α=0.05;

Normované výberové spektrum:

mF=m;
Y[j_]:=dvojice[[j,1]]/Sum[dvojice[[i,1]],{i,m}]

Usporiadať a vybrať poslednú dvojicu:

Sort[Table[{Y[j],j-1},{j,m}]];
sY1=Take[Sort[Table[{Y[j],j-1},{j,m}]],{-1}]

Odhad kritickej hodnoty:

1-(α/mF)^(1/(mF-1))

Rozhodnúť, či je daná frekvencia na základe Fisherovho testu významná alebo nie.
Opakovať, až kým nezistíme, že nasledujúca frekvencia nie je významná.

4.  Priradiť významné frekvencie do premennej vf a pomocou regresnej analýzy určiť funkciu  modelujúcu cyklickú zložku, výslednú funkciu priradiť  do premennej cz :

Vypočítať  časový ekvivalent významných frekvencií , t.j. dlzku periody:

n/142

Časový ekvivalent významnej frekvencie je 6 mesiacov.

Významné funkcie:

vf={2π*142/n,....};

Zobrazenie periodogramu s vyznačenými významnými funkciami:

gs=plotspectrum[spec,AxesLabel->{"ω","f(ω)"},Ticks->{vf,Automatic},Joined->True]

Určenie cyklickej zložky regresiou:

funkcie=Flatten[Table[{Sin[vf[[i]]*t],Cos[vf[[i]]*t]},{i,Length[vf]}]];
regcz=Regress[rezszmf,funkcie,t,RegressionReport->{  BestFit,FitResiduals}, IncludeConstant->False]

cz=BestFit/.regcz

5. Určiť rezíduá,  priradiť do premennej rez, vykresliť a vypočítať rozptyl rezíduí:

rez=FitResiduals/.regcz;

6. Všetky tri systematické zložky priradiť do premennej syz a zobraziť  spolu s pôvodným časovým radom  pre celé obdobie:

syz=trend+sz+cz

7. Vykresliť priebeh systematických zložiek počas desiatich rokov:

8. Uložiť časový rad reziduí po systematických zložkách do dátového súboru:

DeleteFile["rezPoprad.dat"]
Save["rezPoprad.dat",rez]

Funkciu pre systematické zložky uložiť do definičného súboru:

DeleteFile["syzPoprad.def"]
Save["syzPoprad.def",syz]

Testovanie nulovosti autokorelačnej funkcie

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

Z grafu je zrejmé, že reziduá sú ešte korelované, teda má zmysel ich ďalej modelovať napr. lineárnymi ARMA modelmi.