Sunteți pe pagina 1din 6

Serii de timp

1 Programe în Matlab

1.1 Determinarea tendinței

P. Să se determine tendint»a serie de timp


x = f 112; 118; 132; 129; 121; 135; 148; 148; 136; 119; 104; 118; 115; 126;
141; 135; 125; 149; 170; 170; 158; 133; 114; 140; 145; 150; 178; 163;
172; 178; 199; 199; 184; 162; 146; 166; 171; 180; 193; 181; 183; 218;
230; 242; 209; 191; 172; 194; 196; 196; 236; 135; 229; 243; 264; 272;
237; 211; 180; 201; 204; 188; 235; 227; 234g:
utilizând metoda polinomial¸a pentru k = 12, metoda mediei mobile de ordinul 3
»si de ordinul 6, medota netezirii exponențiale pentru ® = 0:2 »si alpha = 0:7.
Soluție.
Mai întâi introducem datele și le reprezent¸am gra¯c, dup¸a cum urmeaz¸a:
>> x=[112 118 132 129 121 135 148 148 136 119 104 118 115 126 141 135 125
149 170 170 158 133 114 140 145 150 178 163 172 178 199 199 184 162 146 166
171 180 193 181 183 218 230 242 209 191 172 194 196 196 236 135 229 243 264
272 237 211 180 201 204 188 235 227 234];
300
1. Programe ^³n Matlab 301
>> n=length(x);
>> t=1:n;
>> plot(t,x)
1. Metoda polinomial¸a
Matlab-ul dispune de funct»ii prede¯nite pentru aceast¸a metod¸a. La linia de
comand¸a vom scrie:
>> p=poly¯t(x,12);
>> y=polyval(p,t);
>> plot(t,x,t,y)
2. Metoda mediilor mobile.
Pentru mediile mobile de ordin impar vom scrie ^³ntr-un ¯»sier matlab:
function [t,m]=f(x,k)
n=length(x);
t=k+1:n-k;
for i=k:(n-2*k)
s=0;
for j=i-k+1:(k+i+1)
s=s+x(j);
end
m(i)=s/(2*k+1);
end
»si salv¸am cu numele medmob.m iar la linia de comand¸a putem scrie:
>> [tm1,m1]=medmob(x,3);
302 Capitolul VII. Serii de timp
>> plot(t,x,tm1,m1)
Pentru media mobil¸a de ordin par trebuie s¸a modi¯c¸am funct»ia medmob.m
astfel:
function [t,m]=f(x,k)
n=length(x);
t=k+1:n-k;
if mod(k,2)==0
for i=k:(n-2*k)
s=x(i-k+1)/2;
for j=i-k+2:(2*k+i-1)
s=s+x(j);
end
s=s+x(k+i+1)/2;
m(i)=s/(2*k+1);
end
else
for i=k:(n-2*k)
s=0;
for j=i-k+1:(k+i+1)
s=s+x(j);
end
m(i)=s/(2*k+1);
end
end
»si salv¸am cu numele medmobpar.m, iar la linia de comand¸a putem scrie:
>> [tm2,m2]=medmobpar(x,6);
1. Programe ^³n Matlab 303
>> plot(t,x,tm2,m2)
>> plot(t,x,tm1,m1,tm2,m2)
3. Metoda netezirii exponent»iale
Pentru metoda netezirii exponent»iale scriem un nou ¯»sier matlab, astfel:
function [t,s]=f(x,alfa)
n=length(x);
t=1:n;
s(1)=x(1);
for i=2:n
s(i)=alfa*x(i)+(1-alfa)*s(i-1);
end
»si salv¸am cu numele netexp.m, iar acum putem scrie:
>> [ts1,s1]=netexp(x,0.2);
>> plot(t,x,ts1,s1)
>> [ts2,s2]=netexp(x,0.7);
>> plot(t,x,ts2,s2)
>> plot(t,x,ts1,s1,ts2,s2)
>> plot(t,x,tm1,m1,ts1,s1)
>> plot(t,x,tm2,m2,ts2,s2)
>> plot(t,x,t,y,tm1,m1,tm2,m2,ts1,s1,ts2,s2)
304 Capitolul VII. Serii de timp
1.2 Spectrul unei serii de timp. Modele liniare
Pornind de la datele din problema de mai sus, pentru determinarea spectrului
unei serii de timp fYngn2N (unde Yn = Xn ¡ Tn, adic¸a seria f¸ar¸a tendint»¸a, even-
tual se elimin¸a »si componenta sezonier¸a), avem prede¯nit¸a o funct»ie ^³n
Matlab »si
putem scrie la linia de comand¸a urm¸atoarele:
>> y=x-ms2; >> Hs=spectrum.cov
>> psd(Hs,y,'NFFT',512)
Se deschide o fereastr¸a unde se poate vedea gra¯cul spectrului serii de timp
fYngn2N. din gra¯c se disting dou¸a v^arfuri esent»iale, la frecvent»ele ! = 0:27 »si
! = 0:8
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
0
2
4
6
8
10
12
14
Normalized Frequency (´ p rad/sample)
Power/frequency (dB/rad/sample)
Power Spectral Density Estimate via Covariance
Construim un model autoregresiv de ordinul 2, astfel:
1. Programe ^³n Matlab 305
>> m=ar(y,2)
Discrete-time IDPOLY model: A(q)y(t) = e(t)
A(q) = 1 + 0.06607 q^-1 - 0.008304 q^-2
Estimated using AR ('fb'/'now') from data set y
Loss function 23.2361 and FPE 24.7114
Sampling interval: 1
deci avem un model AR(2) de forma:
yn = ¡0:06607 ¤ yn¡1 + 0:008304 ¤ yn¡2 + "n
unde f"gn2IN este un zgomot alb (gaussian).
Pentru estimarea ordinului vom folosi metoda Criteriului Inofrmat»ional al lui
Akaike - AIC. Pentru acest criteriu avem o funct»ie prede¯nit¸a ^³n Matlab -
funct»ia
aic.m. Putem scrie la linia de comand¸a urm¸atoarele:
>> AIC=aic(ar(y,2))
AIC =
3.2072
>> AIC=aic(ar(y,3))
AIC =
3.2104
>> AIC=aic(ar(y,4))
AIC =
3.1195
>> AIC=aic(ar(y,5))
AIC =
3.1650
>> AIC=aic(ar(y,6))
AIC =
3.2021
>> AIC=aic(ar(y,7))
306 Capitolul VII. Serii de timp
AIC =
3.2325
>> AIC=aic(ar(y,8))
AIC =
3.0498
>> AIC=aic(ar(y,9))
AIC =
2.9840
>> AIC=aic(ar(y,10))
AIC =
3.0270
Adic¸a minimul se atinge pentru valoarea p = 9. Determin¸am parametrii modelu-
lui AR(9) utiliz^and funct»ia ar.m, »si avem:
>> m=ar(y,9)
Discrete-time IDPOLY model: A(q)y(t) = e(t)
A(q) = 1 + 0.3202 q^-1 + 0.04754 q^-2 + 0.2142 q^-3 + 0.5666 q^-4
+ 0.2593 q^-5 + 0.06896 q^-6 + 0.09674 q^-7 + 0.5088 q^-8
+ 0.3215 q^-9
Estimated using AR ('fb'/'now') from data set y
Loss function 14.9861 and FPE 19.8031
Sampling interval: 1
cu alte cuvinte avem modelul
yn = ¡0:3202 ¤ yn¡1 ¡ 0:04754 ¤ yn¡2 ¡ 0:2142 ¤ yn¡3 ¡ 0:5666 ¤ yn¡4
¡0:2593 ¤ yn¡5 ¡ 0:06896 ¤ yn¡6 ¡ 0:09674 ¤ yn¡7 ¡ 0:5088 ¤ yn¡8
¡0:3215 ¤ yn¡9 + "n
Pentru a compara gra¯c seria init»ial¸a cu modelul g¸asit vom scrie o funct»ie ^³n
Matlab astfel:
1. Programe ^³n Matlab 307
function z=f(y,p)
n=length(y);
for i=1:p
z(i)=y(i);
end
for i=p+1:n
z(i)=-0.3202*z(i-1)-0.04754*z(i-20-0.2142*z(i-3)-0.5666*z(i-4)-0.2593*z(i-5)
-0.06896*z(i-6)-0.09674*z(i-7)-0.5088*z(i-8)-0.3215*z(i-9);
end
pe care o salv¸am cu numele armodel.m, iar la linia de comand¸a vom scrie:
>> z=armodel(y,9);
>> subplot(2,1,1);plot(t,y)
>> subplot(2,1,2);plot(t,y,t,z)
308 Capitolul VII. Serii de timp
0 10 20 30 40 50 60 70
-20
-10
0
10
20
0 10 20 30 40 50 60 70
-20
-10
0
10
20
unde cu albastru este seria fyng iar cu verde seria fzng » AR(9). Diferent»a
dintre cele dou¸a serii reprezint¸a zgomotul alb f"ng. ^In practic¸a la modelul g¸asit
se mai adaug¸a un zgomot alb gaussian generat de calculator, de medie ¹ = 0 »si
abatere ¾, unde
¾2 =
1
n
Xn
i=1
(yi ¡ zi)2:
De exemplu, pentru ¾ = 1:1 avem:
>> sigma=1.1;
>> e=sigma*randn(1,n);
unde funct»ia randn.m genereaz¸a variabile aleatoare normale (gaussiene) X »
N(0; 1) adic¸a de medie ¹ = 0 »si abatere ¾ = 1. Pentru a genera o variabil¸a
1. Programe ^³n Matlab 309
aleatoare normal¸a Y » N(¹; ¾) adic¸a de medie ¹ »si abatere ¾ folosim
trasformarea
Y = mu + ¾ ¤ X:
Observat»ie. Pentru seria init»ial¸a fxng trebuie s¸a adun¸am la seria fzng
tendint»a dat¸a ^³n seria fsng (care este o funct»ie determinist¸a, adic¸a
nealeatoare):
>> w=s+z;
>> plot(t,x,t,w)
0 10 20 30 40 50 60 70
100
120
140
160
180
200
220
240
260
280
Xn
Wn

S-ar putea să vă placă și

  • Biografia Lui Bill Gates
    Biografia Lui Bill Gates
    Document10 pagini
    Biografia Lui Bill Gates
    Lăzărescu Andreia
    Încă nu există evaluări
  • Frisco
    Frisco
    Document4 pagini
    Frisco
    Lăzărescu Andreia
    Încă nu există evaluări
  • 4 Sunetulz
    4 Sunetulz
    Document1 pagină
    4 Sunetulz
    Lăzărescu Andreia
    Încă nu există evaluări
  • Scala PortageData Naşterii
    Scala PortageData Naşterii
    Document3 pagini
    Scala PortageData Naşterii
    Lăzărescu Andreia
    100% (1)
  • Programe
    Programe
    Document40 pagini
    Programe
    Lăzărescu Andreia
    Încă nu există evaluări
  • Programe
    Programe
    Document40 pagini
    Programe
    Lăzărescu Andreia
    Încă nu există evaluări
  • Iluziile Perceptive
    Iluziile Perceptive
    Document2 pagini
    Iluziile Perceptive
    Lăzărescu Andreia
    33% (3)
  • Proiect de Lectie
    Proiect de Lectie
    Document6 pagini
    Proiect de Lectie
    Lăzărescu Andreia
    Încă nu există evaluări
  • Scala GA
    Scala GA
    Document1 pagină
    Scala GA
    Lăzărescu Andreia
    Încă nu există evaluări