ANALIZA VREMENSKIH SERIJA

Analiza vremenskih serija se u društvenim znanostima koristi za proučavanje dinamike društvenih procesa. Dinamika se odnosi na promjene u društvenim odnosima (varijablama) u vremenu. Karakteristične varijable od interesa u analizi društvenih fenomena metodologijom vremenskih serija su nezaposlenost, BDP, inflacija, demografski pokazatelji, pretilost, pušačke navike, obrazovanje, stope kriminala, korištenje opojnih sredstava, broj samoubojstava, pokazatelji nasilja, terorizam, politički trendovi i sl. Metode analize vremenskih serija omogućavaju karakterizaciju navedenih varijabli (procesa) i predviđanje njihovih budućih trendova. Naredni grafikoni prikazuju neke vremenske serije društvenih varijabli.

Politički trendovi i ekonomska očekivanja.

Politički trendovi i ekonomska očekivanja.

Samoubojstva (iz vatrenog oružja) u Australiji.

Samoubojstva (iz vatrenog oružja) u Australiji.

Globalni teroristički napadi.

Globalni teroristički napadi.

Prikaz globalno-političkih odnosa u svijetu.

Prikaz globalno-političkih odnosa u svijetu.

Cilj analize vremenskih serija u društvenim znanostima je identifikacija i razumijevanje vremenske zavisnosti unutar i između društvenih procesa. Zavisnost unutar društvenih procesa se odnosi na činjenicu da je sadašnja vrijednost društvenog procesa (varijable) funkcija prethodnih vrijednosti istog procesa dok je zavisnost između društvenih procesa funkcija tog istog ali i drugih, povezanih procesa. Analiza vremenskih serija se zasniva na pretpostavci da se društveni procesi i sistemi sastoje od međusobno povezanih kratkoročnih, srednjoročnih i dugoročnih kretanja. Svrha analize vremenskih serija je identifikacija i dekompozicija tih procesa, najčešće u svrhu predviđanja budućih trendova i određivanja (smjera) kauzalnosti međusobnog utjecaja.

Implicitna pretpostavka kod primjene metodologije vremenskih serija na društvene fenomene je postojanje društvenog ekvilibrijuma (stacionarnog stanja). U ekvilibrijumu su društveni odnosi stabilni i moguće je ekstrapolirati njihovo kretanje i međusobne odnose. Također, analiza vremenskih serija omogućava dobivanje uvida u ponašanje društvenih aktera i odnosa izvan ekvilibrija, primjerice putanju vraćanja u stacionarno (društveno) stanje.

Tri su glavna pristupa u analizi vremenskih serija. Prvi pristup definira skup endogenih i egzogenih varijabli i koristi regresijske metode u cilju kvantifikacije međusobnog utjecaja varijabli. Drugi pristup koristi teoretski okvir (društvenu teoriju) za izgradnju strukturnog modela odnosa među varijablama (remenskim serijama) kako bi se odredio smjer kauzaliteta među varijablama, najčešće pomoću Granger testova kauzalnosti. Treći pristup je ateoretski i zaključke o društvenim procesima donosi isključivo na osnovi informacija sadržanih u podatcima (vremenskim serijama). Taj je pristup izrazito zanimljiv jer polazi od podataka i predstavlja izazov za teoriju koja mora objasniti empirijske nalaze ili ponuditi odgovor na odudaranje teorije od empirijskih nalaza.

OSNOVNI POJMOVI

  • Stacionarnost
  • Slučajni hod (Random Walk)
  • Rho
  • Dickey-Fuller test
  • Autoregresivni model
  • Pomični prosjek
  • Autokorelacijska funkcija
  • Predviđanje

Stacionarnost

Za vremensku seriju se kaže da je stacionarna ukoliko njena ključna statistička svojstva ostaju nepromijenjena kroz vrijeme. Ta se svojstva odnose na prosjek, varijancu i kovarijancu. Stacionarnost je bitna jer vremenska nepromjenjivost (stacionarnost) svojstava serije omogućava predviđanje (modeliranje) dinamike serije u budućnosti. Ukoliko vremenska serija nije stacinarna, potrebno ju je učiniti stacionarnom, a to se najčešće radi diferenciranjem ili uklanjanjem trenda iz serije.

  1. Prosjek serije ne smije biti funkcija vremena već mora biti konstantan.
Stacionarna(lijevo) i nestacionarna(desno) vremenska serija.

Stacionarna(lijevo) i nestacionarna(desno) vremenska serija.

  1. Varijanca serije ne smije biti funkcija vremena. Ovo svojstvo se naziva homoskedastičnost.
Stacionarna(lijevo) i nestacionarna(desno) vremenska serija.

Stacionarna(lijevo) i nestacionarna(desno) vremenska serija.

  1. Kovarijanca serije ne smije biti funkcija vremena.
Stacionarna(lijevo) i nestacionarna(desno) vremenska serija.

Stacionarna(lijevo) i nestacionarna(desno) vremenska serija.

Slučajni hod (Random Walk)

Slučajni hod je nestacionarni proces u kojem vrijednost (realizacija) serije u nekom trenutku ovisi o vrijednosti (realizaciji) serije u prethodnom trenutku (i standardnoj greški).

Formalni zapis slučajnog hoda(RW) je X(t) = X(t-1) + Er(t) pa je moguće rekurzivno zapisati sve realizacije RW kao X(t) = X(0) + Sum(Er(1),Er(2),Er(3)…..Er(t)). U terminima očekivanih vrijednosti je E[X(t)] = E[X(0)] + Sum(E[Er(1)],E[Er(2)],E[Er(3)]…..E[Er(t)]), a pošto je očekivana vrijednost reziduala 0 (slučajni proces), jasno je da je E[X(t)] = E[X(0)] = kostanta. U terminima varijance je moguće zapisati Var[X(t)] = Var[X(0)] + Sum(Var[Er(1)],Var[Er(2)],Var[Er(3)]…..Var[Er(t)]) pa je jasno da je proces zavisan o vremenu Var[X(t)] = t * Var(Error) = vremenski zavisan. Na osnovi toga je vidljivo da je varijanca procesa slučajnog hoda vremenski zavisna pa proces nije stacionaran. To se također odnosi i na kovarijancu RW procesa.

# Simulacija slučajnog hoda
X <- 0
Z <- rnorm(100, mean = 0.5, sd = 1.5)

for(i in 2:length(Z)){
  X[i] = X[i-1] + Z [i]
}
ts.plot(X, main = " Proces slučajnog hoda")

ts.plot(diff(X)) # Prikaži diferenciranu;stacionarnu seriju

Rho

Koeficijent Rho je definiran kao X(t) = Rho * X(t-1) + Er(t). Različite vrijednosti Rho koeficijenta određuju da li je serija stacionarna .

Rho = 0;stacionarna serija.

Rho = 0;stacionarna serija.

Rho = 0.5;stacionarna serija.

Rho = 0.5;stacionarna serija.

Rho = 1;ne-stacionarna serija.

Rho = 1;ne-stacionarna serija.

Vidljivo je da Rho = 1 (ili veći) čini seriju ne-stacionarnom. Ukoliko se uzmu očekivane vrijednosti od X(t) = Rho * X(t-1) + Er(t), dobivamo E[X(t)] = Rho *E[ X(t-1)]. Zbog toga ne postoji faktor koji će seriju “povući prema dolje” pa kažemo da je serija eksplozivna, odnosno nestacinarna.

Dickey-Fuller test stacionarnosti

Polazeći od jednažbe X(t) = Rho * X(t-1) + Er(t), moguće je provesti diferencijaciju pa dobivamo X(t) - X(t-1) = (Rho - 1) X(t - 1) + Er(t). DF test se odnosi na provjeru da li je Rho - 1 različit od nule pa ukoliko se odbaci nulta hipoteza, serija je stacionarna.

Prikaz vremenske serije u R

data(AirPassengers)       # Učitaj podatke
class(AirPassengers)      # Provjeri vrstu podataka
## [1] "ts"
AirPassengers             # Pogledaj podatke
##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
head(AirPassengers, 15)   # Pogledaj prvih 15 vrijednosti
##  [1] 112 118 132 129 121 135 148 148 136 119 104 118 115 126 141
summary(AirPassengers)    # Deskriptivna statistika
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   104.0   180.0   265.5   280.3   360.5   622.0
plot(AirPassengers)       # Vizualizacija podataka

plot(aggregate(AirPassengers,FUN=mean)) # Prikaži prosjek

boxplot(AirPassengers~cycle(AirPassengers)) # Box-plot po mjesecima

ARMA modeli

ARMA modeli su standarni način za modeliranje vremenskih serija. AR označava auto-regresiju, a MA označava pomični prosijek (moving average). Važno je znati da se ovi modeli ne mogu primjenjivati na ne-stacionarne vremenske serije. Ukoliko vremenska serija nije stacionarna, prije analize AR i MA modelima ju je potrebno stacionarizirati. To se (uglavnom) radi diferencijacijom ili uklanjanjem trenda.

AR model

U AR modelu je realizacija vremenske serije x(t) zavisna o realizaciji u prethodnom periodu x(t-1). Na primjeru bruto domaćeg prizvoda (BDP) to znači da je ukupni trošak proizvodnje u gospodarstvu u fiskalnoj godini zavisan o proizvodnim kapacitetma u prethodnoj godini.

Stoga je moguće formulirati AR model: x(t) = alpha * x(t – 1) + error (t). Model opisuje (1) trenutnu realizaciju u terminima prethodne, (2) alfa koeficijent je definiran na način da minimizira grešku relacije (error;rezidualnu strukturu modela), (3) x(t - 1) je u jednakom odnosu sa x(t - 2) kao i x(t) sa x(t - 1) pa je jasno da će bilo koji šok postupno nestati u budućnosti.

AR model.

AR model.

# Simuliraj AR(1) proces

alpha = 0.5 # Konstanta

Z <- rnorm(100, mean = 0, sd = 1.5) # Reziduali modela


X <- rnorm(1) # seed

# Proces

for (i in 2:length(Z)) {
  X[i] <- 0.7*X[i - 1] + Z[i]
  
}

# Vizualiziraj

ts.plot(X)

MA model

Model pomičnog prosjeka je definiran x(t) = beta * error(t-1) + error (t) pa je vidljivo da šok u vremenskoj seriji ovisi o rezidualnoj strukturi i zadržava se puno kraće u vremenskoj seriji.

# Simuliraj MA proces

Z <- rnorm(100, mean = 0, sd = 1.5) # Reziduali modela

# Simulacija

X <- c()

for(i in 2:length(Z)){
  X[i] <- Z[i] - 0.45*Z[i - 1]
  }
# Vizualiziraj
ts.plot(X, main = " Pomični prosjek;MA(1)")

MA model.

MA model.

Razlika između AR i MA modela je u korelaciji između realizacija vremenske serije u različitim vremenskim trenutcima. Korelacija između x(t) i x(t-n) za n veći od MA(n) je uvijek 0 dok korelacija između x(t) i x(t-n) opada kako n raste u AR modelu.

ACF i PACF

ACF (auto correlation function) omogućava da se odredi da li je neka vremenska serija AR ili MA proces. ACF prikazuje ukupnu korelaciju između vremenskih realizacija (lag) vremenske serije. U MA modelu ne postoji korelacija izmedju realizacija nakon nekog vremenskog trenutka, x(t) i x(t - n - 1) pa će ACF pokazati pad korelacije u određenoj vremenskoj realizaciji (lag). U AR modelu ne dolazi do naglog pada korelacije pa će ACF funkcija pokazati postepeno opadanje korelacije. PACF (partial auto correlation function) pokazuje djelomičnu korelaciju između realizacija vremenske serije. U slučaju AR(1) modela se izostavlja efekt prvog vremenskog pomaka x(t-1) pa je drugi vremenski pomak x(t-2) nezavisan od x(t), a na PACF funkciji će se to odraziti u padu korelacije nakon prvog vremenskog pomaka.

ACF prikaz AR(2) modela.

ACF prikaz AR(2) modela.

PACF prikaz AR(2) modela.

PACF prikaz AR(2) modela.

ACF prikaz MA(2) modela.

ACF prikaz MA(2) modela.

PACF prikaz AR(2) modela.

PACF prikaz AR(2) modela.

Procedura provedbe (ARIMA) modela

  1. Vizualizacija vremenske serije
  2. Stacionarizacija
  3. ACF/PACF grafikon
  4. Napravi ARIMA model
  5. Predviđanje vremenske serije
plot(AirPassengers)

# Vidljiv je trend rasta
# Sezonalna komponenta sa ciklusom manjim od 12 mjeseci
# Varijanca postaje veća sa vremenom
library(aTSA)
# Provedi test stacionarnosti
adf.test(diff(log(AirPassengers)))
## Augmented Dickey-Fuller Test 
## alternative: stationary 
##  
## Type 1: no drift no trend 
##      lag   ADF p.value
## [1,]   0 -9.61    0.01
## [2,]   1 -8.82    0.01
## [3,]   2 -7.63    0.01
## [4,]   3 -8.75    0.01
## [5,]   4 -6.79    0.01
## Type 2: with drift no trend 
##      lag   ADF p.value
## [1,]   0 -9.63    0.01
## [2,]   1 -8.86    0.01
## [3,]   2 -7.71    0.01
## [4,]   3 -8.94    0.01
## [5,]   4 -6.98    0.01
## Type 3: with drift and trend 
##      lag   ADF p.value
## [1,]   0 -9.60    0.01
## [2,]   1 -8.83    0.01
## [3,]   2 -7.69    0.01
## [4,]   3 -8.92    0.01
## [5,]   4 -6.95    0.01
## ---- 
## Note: in fact, p.value = 0.01 means p.value <= 0.01
# ACF prikaz
acf(log(AirPassengers))

# ACF prikaz;diff serija
acf(diff(log(AirPassengers)))

# PACF prikaz
pacf(diff(log(AirPassengers)))

# Provedi ARIMA model
(fit <- arima(log(AirPassengers),
              c(0, 1, 1),
              seasonal = list(order = c(0, 1, 1),
                              period = 12)))
## 
## Call:
## arima(x = log(AirPassengers), order = c(0, 1, 1), seasonal = list(order = c(0, 
##     1, 1), period = 12))
## 
## Coefficients:
##           ma1     sma1
##       -0.4018  -0.5569
## s.e.   0.0896   0.0731
## 
## sigma^2 estimated as 0.001348:  log likelihood = 244.7,  aic = -483.4
pred <- predict(fit,n.ahead = 10+12)
ts.plot(AirPassengers,2.718^pred$pred, log = "y", lty = c(1,3))