U ovom tekstu, nastavljamo se baviti vremenskim nizovima - kronološki uređenim podacima. Razmatramo komponente vremenskih nizova, a potom detaljnije razmatramo jednu komponentu vremenskog niza: trend - preciznije, linearni trend.




Komponente vremenskog niza


Vremenski niz mora biti homogen kako bismo mogli pristupiti daljnjim analizama - osobito analizama kojima će se govoriti u ovom štivu. Osim toga, vremenski niz može biti intervalni ili trenutačan - o tome je bilo govora u prošlom štivu.

No, kad vremenske nizove prikažemo grafički, mogu se uočiti razlike u oblicima krivulja koje poprimaju, a to također sugerira da će biti potrebni različiti pristupi analizi.

Da bismo odabrali odgovarajući model, najbrži i najintuitivniji korak jest: pogledati krivulju. Već prvi pogled otkriva barem tri razine kretanja koje ćemo razdvojiti u ovom poglavlju:

  • Trend - sustavno, monotono, dugoročno kretanje pojave.

  • Ciklička kretanja - oscilacije koje se ponavljaju u višegodišnjim periodima i često su povezani s gospodarskim fazama ili šokovima.

  • Sezonalnost - oscilacije koje se ponavljaju u periodu kraćem od godine dana.


Komponente vremenskog niza najčešće možemo barem donekle uočiti vizualno, temeljem linijskog grafikona.

Komponenta Što znači Kako izgleda na grafu Tipični period
Trend Dugoročno kretanje pojave (stalni rast ili pad). Monotona linija bez oscilacija koja prolazi kroz podatke. \(\geq 5\) godina (često i 10+)
Sezonska komponenta Ponavljajući obrazac unutar godine dana Valovi približno jednakog razmaka koji osciliraju oko trenda. \(\leq 12\) mjeseci (rjeđe 4 mjeseca ili 6 mjeseci)
Ciklička komponenta Višegodišnja kretanja pojave, najčešće povezana s poslovnim ciklusom Šire oscilacije koje nadilaze trend i sezonu. \(2 - 8\) godina

  • Lijeva skica prikazuje samo trend - nema periodičnosti.
  • Srednja skica dodaje sezonske oscilacije na trend.
  • Desna skica, uz trend i sezonu, uključuje i cikličke oscilacije koje traju nekoliko godina.

Ponekad sličnosti između sezonske i cikličke komponente otežavaju prepoznavanje razlika. Ova usporedba bi trebala pomoći u tome:

  Sezonalnost Cikličnost
Period Fiksan i poznat unaprijed (npr. 12 mj.) Nije fiksan; duljina “vala” varira
Uzrok Kalendarski, klimatološki ili institucionalni raspored (blagdani, praznici) Širi gospodarski utjecaji, agregatna potražnja, cijene sirovina
Predvidljivost Lako se modelira jer je gotovo deterministička Teže; valove otkrivamo tek kad se pojave


Grafovi u nastavku ilustriraju koliko se ove tri komponente mogu razlikovati od primjera do primjera, kako po pitanju prisutnosti, tako i po pitanju izraženosti.


Zastanite na svakom grafu i sami pokušajte odgovoriti: što je ovdje trend, uočavate li ciklus i postoji li sezona?


Izvor: DZS (2024) Dolasci i noćenja turista


Što uočavate?


  • podaci su iskazani na godišnjoj razini i prate period od 2010. do 2019. godine
  • podaci donekle prate linearan trend, osobito u periodu od 2014. do 2019. godine
  • s obzirom da su podaci prikazani na godišnjoj razini, nije moguće procijeniti sezonalnost
  • ne uočava se izražena cikličnost pojave

Implikacije za analizu

  • trend (možda i linearni trend) mogao bi biti prikladan i dovoljan za analizu ovog niza podataka.

Izvor: DZS (2024) PROSJEČNE MALOPRODAJNE CIJENE DOBARA I USLUGA U KUNAMA I U EURIMA


Što uočavate?


  • Krivulja je kratka - tek 15 mjesečnih opažanja

  • Nema vidljivu godišnju sezonu

  • Između prosinca 2022. i siječnja 2023. nastupa strukturni skok od oko 4 centa. Nakon toga slijedi stabilan rast od približno 0,01 € mjesečno

  • Za ovako kratak i “glatki” niz bit će dovoljan jednostavni linearni trend (možda uz dummy-varijablu za jednokratni skok). Sezonska ili ciklička komponenta ovdje vjerojatno nisu potrebne.

\(*\) dummy variajbla (indikatorska ili binarna varijabla) je varijabla koja poprima samo dvije vrijednosti, 0 ili 1, radi obilježavanja prisutnosti/ odsutnosti nekog svojstva u regresijskom modelu ili modelu trenda.

Izvor: DZS. Poljoprivreda, šumarstvo i ribarstvo: Kravlje mlijeko i mliječni proizvodi


Što uočavate?


  • Dugačak niz (više od 200 mjesečnih opažanja) s jasnim silaznim trendom - od 55-60 tisuća tona u početnim mjesecima do ~30 tisuća u posljednjima

  • osim izraženog opadanja vrijednosti, iz mjeseca u mjesec ponavljaju se oscilacije koje prate obrazac

  • ljetni minimum i jesensko‐zimski maksimum - klasična godišnja sezona.

  • osim sezone vidi se i višegodišnje valovito gibanje (npr. periodi privremenog oporavka 2014.-2015. i 2020.-2021.).

Implikacija za analizu

  • ovdje nam treba model koji istodobno može prikazati dugoročni pad (trend), ponavljajuću sezonu (12 mj.), mogući ciklus (3-5 g.).

  • za takvo što, potrebni su modeli koji spadaju u nešto naprednije gradivo, kao na primjer, STL-dekompozicija ili ARIMA + sezonski diferencijal.

Izvor: Kultura


Što uočavate?


  • trend se dijeli u dvije faze: pad do kraja 1990-ih, potom relativno stabilan rast do rekordne 2019. godine

  • ciklički valovi traju 4-7 godina i čini se da prate poslovne cikluse

  • ekstremni šok (COVID-19) - dramatičan pad na oko 1 milijun, a potom nagli povrat

  • sezonu ne vidimo i ne možemo vidjeti, jer je niz godišnji (a sezonalnost možemo uočiti samo za opažanja mjerena unutar godine dana)

Implikacija za analizu

  • Linearni trend ovdje neće biti dovoljan; razmišljamo o segmentiranom trendu (tzv. breakpoint, i to za 1999./2000. ili 2019./2020.), cikličkoj komponenti (Baxter-King / Christiano-Fitzgerald filter) ili modelu sa dummy-varijablom za kriznu 2020. godinu.

Izvor: DZS (2025) Robna razmjena s inozemstvom


Što uočavate?


  • dugoročni trend
    • gotovo eksponencijalan rast uvoza, posebno od ljeta 2021. godine
    • postojan izvoz, ali s blažim rastom
    • jaz među linijama se širi, a to znači da trgovinski deficit raste.
  • sezonalnost
    • dva ponavljajuća vrha na krivulji uvoza: kasno proljeće i prosinac; pad u siječnju/veljači
    • naglašene oscilacije-vrhovi izvoza oko kraja zimskog kvartala
    • amplituda raste s razinom, što znači da je sezona vjerojatno multiplikativna
  • ciklus
    • stabilan period uvoza od 2016-18, pad u periodu od 2019-20, izraženi rast od 2021-23
    • izvoz pokazuje sličan obrazac, ali s manje izraženim oscilacijama
    • upućuje na poslovni ciklus i moguću povezanost s cijenama sirovina
  • šok
    • uvoz - travanj 2020. (COVID-19) -35 %; nagli skok cijena energenata 2021-2022.
    • analogan pad izvoza u travnju 2020., ali blaži; slabiji skok 2021.
    • ukazuje na mogućnost strukturnog loma u nizu
  • oscilacije (volatilnost)
    • oscilacije uvoza 2022-24 bitno izraženije nego u ranijim periodima
    • izvoz prati slične obrasce oscilacija, ali manje su oscilacije nešto manje izražene
    • u ovakvim situacijama, često se niz logaritmira prije modeliranja.




Pogledajte ponovo graf i razmislite:

  • Kako i kuda biste povukli liniju trenda? Kako bi izgledala linija trenda za period od 2011. - 2019. godine, a kako za čitav niz? Što biste mogli zaključiti temeljem toga?

  • Koji mjesec najčešće predstavlja lokalni minimum u oba niza?

  • Odaberite mjesec u 2020. ili 2021. koji biste koristili kao “breakpoint” i obrazložite zašto.

  • Koliko je otprilike bio prosječan jaz između najmanje i najveće vrijednosti u 2015., a koliko u 2023. godini?





U nastavku ćemo se detaljnije baviti vremenskim nizom izvoza RH i prikazati rezultate dekompozicije vremenskog niza.

Kako iščitati komponente vremenskog niza iz ovog grafa

Graf A prikazuje izvorne (sirove) mjesečne vrijednosti izvoza. Ispod njega nalaze se tri odvojene krivulje - trend, sezona i ciklus - koje zajedno “grade” izvorni niz. Najčešći oblici su aditivni i multiplikativni.

Ako je u pitanju aditivni model vremenskog niza, onda je to:

\[ \widehat{y}_t = Trend_t + Sezonalnost_t + Ciklus_t + \varepsilon_t \]

ili

\[ \widehat{y}_t = T_t + S_t + C_t + \varepsilon_t \]

gdje \(\varepsilon_t\) (“epsilon te”) označava slučajnu komponentu vremenskog niza. Odnosi se na pojave koje nisu predvidive trendom, sezonalnom komponentom ni ciklusom. U grafu je izostavljena.

Ako je u pitanju multiplikativni model, onda je to:

\[ \widehat{y}_t = T_t \times S_t \times C_t \times \varepsilon_t \]

Napomena: U praksi često radimo \(\log\)-transformaciju i tada se multiplikativni model pretvara u aditivni zapis: \(\log \widehat{y}_t = \log T_t + \log S_t + \log C_t + \varepsilon_t\).


Graf B - Trend — dugoročno kretanje pojave (graf B, plava linija na kompozit-grafu)

  • Što vidimo? Glatka rastuća linija od ~800 mil. € do ~2 000 mil. €.

  • Kako ju prepoznati? Glatka monotona linija, bez izraženih oscilacija (može, ali ne mora biti pravac).

  • Što znači s obzirom na kontekst? Dugoročni rast izvoza, koje može biti posljedica širenja proizvodnje, otvaranja novih tržišta, ulazak u EU itd. (sjetite se - to ne možemo vidjeti na grafu, ali poznavanje konteksta i ovi uvidi pomažu nam postaviti bolja, ciljana pitanja)


Graf C - Sezonalnost — ponavljajuće oscilacije unutar jedne godine (graf C, plava linija)

  • Prikazana je kao faktor (npr. 1,08 znači +8 % iznad trenda).

  • Vizualni trag: oštre, pravilne oscilacije s periodom ponavljanja od točno 12 mjeseci.

  • Ljetni i prosinački vrhovi sugeriraju sezonsku potražnju (turizam, blagdani).

  • Siječanjski pad sugerira zastoj u industriji i logistici tijekom zime (vjerojatno zbog neradnih dana tijekom blagdana i zimskih praznika).

  • Amplituda raste zajedno s razinom izvoza, pa je prikladnije reći “5 % iznad trenda” nego “+50 mil. €” i zbog toga će se u ovakvim grafovima sezonalnost prikazivati kao postotno povećanje, a ne u apsolutnoj vrijednosti.


Graf D - Ciklus — oscilacije koje se ponavljaju u višegodišnjim periodima (graf D, plava linija)

  • Također prikazan u relativnom odnosu prema trendu (% trenda), gdje \(>1\) označava kretanja iznad trenda (ekspanzija), a \(<1\) kretanja ispod trenda (usporavanje). Može se uočiti da, iako oscilacije postoje, vrlo su malene i slabo izražene, osobito u odnosu na sezonske utjecaje.

  • periodične oscilacije u periodu od 3-5 godina - primijetite dugačak val oko 2015. godine, pad 2019./20., zatim snažan uzlet 2021.-23.

  • ciklus odražava šire gospodarske uvjete, cijene sirovina, globalnu potražnju.


Sljedeći graf prikazuje te komponente vremenskog niza (osim slučajne komponente) svedene na istu mjernu jedinicu (mil. eura) i prikazane uz izvorne podatke. Na taj način možemo jasnije uočiti koji su dijelovi opaženih vrijednosti sadržani u kojoj komponenti.




Prepoznajte komponente vremenskog niza na ovom grafu.

Izvor: DZS (2019) Statistički ljetopis 2018


Prepoznajte komponente vremenskog niza na ovom grafu.

Izvor: DZS (2023) GODIŠNJI BRUTO DOMAĆI PROIZVOD ZA RAZDOBLJE 1995. - 2022., revidirani podaci


Ishodište vremenskog niza


Postoji općenito slaganje da je globalna prosječna temperatura 1998. bila 58,3 stupnja Fahrenheita (približno 14,6°C), prema NASA-inom Goddard institutu za istraživanja svemira. Ali, 2012. godine izmjerena je globalna prosječna temperatura od 58,2 stupnja.

Protivnici globalnog zatopljenja stoga tvrde da je globalno zatopljenje time opovrgnuto, budući da je došlo do smanjenja prosječne globalne temperature za 0,1 stupanj u razdoblju od 14 godina. U prilog tom stavu, često se koristi sljedeća slika:



Vrijedi spomenuti da je 1998. bila jedna od najtoplijih zabilježenih godina zbog nenormalno jakog vjetra El Niño. Također vrijedi napomenuti da, budući da postoji veliki stupanj varijabilnosti unutar klimatskog sustava i temperature se obično mjere s ciklusom od najmanje 30 godina.



Prvi isječak (1998 - 2012.) doista izgleda kao da se globalna temperatura ne povećava, čak malo i opada. Međutim, čim proširimo obuhvat, slika se potpuno mijenja:

Isječak niza Što se vizualno događa Nagib trend-linije
1998 - 2012. Početna godina je ekstremno topla (jak El Niño); slijedi nekoliko prosječnih i hladnijih godina. Gotovo ravan nagib → zaključak: nema zatopljenja
1980 - 2012. Uključene su “obične“ godine prije El Niña. Blag, ali vidljiv porast → zaključak: zatopljenje
1900 - 2012. Hvata se cijelo industrijsko doba. Jasno strma uzlazna linija → zaključak: zatopljenje

Zašto je to tako?

  • El Niño je prirodna, ciklička anomalija koja jednokratno podiže globalnu temperaturu ~0,2 °C.
  • Odaberemo li povišenu vrijednost kao početak niza, sve kasnije točke nužno izgledaju hladnije

Pouke za analizu vremenskih nizova

  1. Ekstremno ishodište ⇒ veća šansa za pogrešan zaključak
    • U klimatologiji se zato koriste nizovi od najmanje 30 godina da se “ispeglaju“ kratkoročne oscilacije.
    • U ekonomiji je poželjno promatrati periode duže od 10 godina.
  2. Sezona vs. trend
    • Oscilacije unutar godine spadaju u sezonsku komponentu.
    • Dugoročno zagrijavanje je trend - s malim nagibom, ali postojan.
  3. Ciklus ≠ trend
    • El Niño je ciklički val od 3-7 g.; treba ga tretirati poput cikličke komponente.
  4. Cherry-picking (odabir “zgodnog” razdoblja)
    • Nesvjesno ili svjesno vodi do krivog narativa.
    • rješenje: prikazati cijeli dostupni niz.

Promotrimo ulogu ishodišne godine vremenskog niza za niz dolazaka turista. Mijenjat ćemo raspon podataka koji se uzima u obzir pri utvrđivanju linearnog trenda i promatrati kako to utječe na liniju trenda i zaključke do kojih bi se na takav načim moglo doći.

Izvor: DZS (2024) Dolasci i noćenja turista

Iako se ishodišna godina vremenskog niza crta u ishodištu, ovdje je to prekršeno kako bi se ujednačili grafovi po osima i kako bi se nagibi pravaca trenda mogli vizualno usporediti. Važno je napomenuti da je to samo vizualni trik, model se svejedno računa ispravno (više o tome u narednim poglavljima). Neovisno o tome, inače nećemo kršiti to pravilo.

Promotrite prikazane grafove i razmislite:

  1. Uočava se strmi nagib samo u grafu (d). Što se dogodilo 2020. pa tako dramatično povećava godišnji rast u idućim godinama?

  2. Zašto se graf (b) ponaša suprotno - nagib je negativan? Koliko toga možemo pripisati lockdownu 2020. i sporom povratku 2021.?

  3. Graf (c) ima gotovo ravan nagib. Zašto dodavanje samo dvije “normalne” godine (2018-2019) i dvije post-COVID godine (2022-2023) skoro anulira trend?

  4. Usporedite grafove (e) i (f). Kako uključivanje pandemijskog šoka (2020-2021) utječe na prosječni godišnji rast? Koji biste od ta dva nagiba smatrali reprezentativnim za dugoročni trend i zašto?

  5. U grafu (b), trend počinje s ~18000 dolazaka (u tisućama dolazaka - 18 milijuna), a u grafu (d) s ~9000 - oba u razmaku svega četiri godine. Što nas to uči o interpretaciji odsječka na y-osi kad je ishodišna godina ekstremna?*

Oznaka Razdoblje Procijenjena jednadžba trenda Nagib (β₁) Odsječak (β₀)
a 2014 - 2019 \(y = 12 890,5 + 1 391,5·t + \varepsilon_t\) +1 391,5 12 890,5
b 2016 - 2021 \(y = 18 281,1 − 1 252,2·t+ \varepsilon_t\) −1 252,2 18 281,1
c 2018 - 2023 \(y = 15 556 + 129,5·t+ \varepsilon_t\) + 129,5 15 556
d 2020 - 2024 \(y = 8 816,8 + 3 320,7·t+ \varepsilon_t\) +3 320,7 8 816,8
e 2010 - 2019 \(y = 9 600,4 + 1 059,1·t+ \varepsilon_t\) +1 059,1 9 600,4
f 2010 - 2024 \(y = 11 033,4 + 528,1·t+ \varepsilon_t\) + 528,1 11 033,4


Najzanimljiviji uvid daje usporedba nagiba. Počnimo s grafom d (2020-2024). Linija ima najstrmiji nagib, ali to nije znak iznenadnog procvata turizma - naprotiv, rast starta u pandemijskoj, 2020. godini. Kad ishodište leži u ekstremno niskoj točki, svako naknadno naglo približavanje normalnim vrijednostima napuhuje nagib. Takvu liniju stoga valja shvatiti isključivo kao priču o oporavku, a ne koristiti ju za projekciju daljnjeg rasta istim tempom.

Suprotan efekt vidimo u grafu b (2016-2021). Ovdje je trend negativan jer obuhvaća vrhunac u 2019. godini i spušta se preko pandemijskog perioda 2020-2021. Uočavamo da ovakav odabir početne godine može potpuno okrenuti znak nagiba. To je upozorenje koliko lako linija trenda može prevariti ako joj nedostaje kontekst.

Graf c (2018-2023) prikazuje gotovo ravan trend. U njemu se podjednako nalaze i rekordne i krizne godine, pa ih jednadžba - zbrajajući iznimno visoke i iznimno niske vrijednosti - prosječno poništava. Takav prosjek izravna ekstreme, ali istodobno prikriva stvarne oscilacije.

Naposljetku, graf f (2010-2024) prikazuje trend s drugim najmanjim nagibom (od pozitivnih). Što je segment duži, to se više šumova i šokova “ispegla“ u blagi nagib. Dugi vremenski period stoga služi kao konzervativna mjera - pouzdana za strateške rasprave i dugoročne prognoze, ali nedovoljno precizna za kratkoročnu prognozu.

Pouka ovih primjera:

Linearni trend nije fiksno svojstvo vremenskog niza; trend je funkcija točke u kojoj započinjemo i opažanja koje obuhvatimo. Pomakom ishodišta možemo pad pretvoriti u rast i obrnuto. Zato prije modeliranja treba:

  • pogledati cijeli raspoloživi niz,

  • isprobati trend na više početnih godina,

  • svjesno odlučiti o odabiru ishodišta vremenskog niza.

Pri odabiru ishodišne godine niza u praksi, prvi kriterij bit će homogenost vremenskog niza. To znači da postoji isti koncept mjerenja (pojam/ podaci), ista metodologija, jednake jedinice u jednakim vremenskim razmacima. Često se niz skraćuje na prvu godinu u kojoj sve varijable zadovoljavaju isti standard (ostatak ide u fusnotu ili se homogenizira korekcijama). Ako je, npr. mjerenje prorjeđeno, recimo, s mjesečne na kvartalnu razinu, onda se mogu iskoristiti svi podaci pod pretpostavkom svođenja na kvartalnu razinu.

Ulogu će igrati i tzv. strukturni lomovi - rat, pandemija, promjena definicije, tehnološki skok i slični disruptivni događaji. Ako analiza traži mirno razdoblje, počinjemo poslije loma; ako je lom predmet istraživanja, niz dijelimo (prije/poslije).

Također, važno je imati na umu cilj analize. Ako nas zanima trend, potreban nam je što duži niz podataka i tad, u pravilu, koristimo sve dostupne podatke niza (uz uvjet homogenosti). Ako nas zanima sezonalnost ili ciklička komponenta, uz usmjerenost na kratkoročne prognoze, onda će fokus biti na nedavnim podacima.

Domena / Primjer niza Standardni horizont
(najkraći raspon koji u praksi daje pouzdanu procjenu)
Fokus modeliranja
(Trend / Sezona / Ciklus / Šok)
Zašto baš taj horizont?
Klimatologija
(globalna T°)
30-godišnji prosjek
(WMO norma, npr. 1991-2020)
Trend, sezona, (ciklus ≥ 30 god.) Pokriva barem jedan cijeli klimatološki “vijek”: El Niño + solarni ciklus.
BDP i inflacija (ESA-2010) od 1995./2000. nadalje (kvartalno) Trend, ciklus, šok Harmonizirana metodologija EU; omogućuje promatranje recesijskih ciklusa (~8 god.) bez strukt. neslaganja.
Cijena dionice / kripto “od IPO-a” ili zadnjih 252 trg. dana trend, šok, sezona (dan u tjednu) Najdulji homogeni raspon za evaluaciju; kratki horizont za volatilnost (1 trg. godina).
Proizvodna logistika 3 - 5 god. dnevnih podataka sezona (dnevna, tjedna), trend Dulje bi uključilo zastarjelu tehnologiju i promjene potražnje; kraće ne hvata punu (multi-)sezonu.
E-commerce / web promet 2 - 3 god. dnevni ili satni sezona (dnevna, tjedna, godišnja), trend, šok Online kanali ubrzano evoluiraju; više od 3 god. umanjuje efekt novih kampanja/algoritama.
Plaće i nezaposlenost 20 + god. (mjesečnih/kvartalnih podataka) Trend, ciklus (radni ciklus), šok Prati poslovne cikluse (2-8 god.) i strukturne promjene na tržištu rada.
Prihvaćanje tehnologija
(npr. pametni telefoni)
Cijela S-krivulja: 10-20 god. Trend (S-curve), šok (regulatorni) Glavni cilj je procijeniti saturaciju; sezona i kratki ciklusi manje važni.
Energetsko opterećenje
(električna mreža)
2 - 4 god. satnih podataka Sezona (dnevna, tjedna, godišnja), trend Potrebno za pouzdanu procjenu dnevno-tjednih uzoraka; stariji podaci nose drukčiju strukturu potrošnje/tehnologije.
Retail prodaja (POS) 5 god. tjednih podataka Sezona (tjedan, blagdani), trend Obuhvaća dvije-tri blagdanske sezone + promjene portfelja; dulje razdoblje riskira strukturne promjene formata trgovine.
HDI / indeks kvalitete života 30 + godišnjih podataka Trend, (ciklus ≥ 10 god.) Društveno-ekonomski indikatori mijenjaju se sporo; za smislenu analizu potreban je barem (više)desetljetni niz.


Aditivni model vremenskog niza


U prethodnim smo poglavljima naučili prepoznati trend, sezonalnost i ciklus na grafu, kao i uvidjeti važnost ishodišne godine niza.

Sada prelazimo na formalni opis i procjenu kad su te tri komponente — Trend, Sezona, Ciklus — aditivne (zbrajaju se).

\[ y_t \;=\; T_t \;+\; S_t \;+\; C_t \;+\; \varepsilon_t \]

  • Vremenski niz mora biti homogen
  • Aditivni pristup pretpostavlja da sezona ne mijenja amplitudu kad razina niza raste ili pada.
  • Ako amplituda raste s razinom, koristi se multiplikativni model, ali uz primjenu log(y) model opet postaje aditivni.

Nastavljamo s primjerom izvoza RH, zabilježenog na mjesečnoj razini od siječnja 2012. godine do veljače 2025. godine i iskazanom u milijunima eura prema fiksnom tečaju. Ranije su komponente izdvojene koristeći multiplikativni model, zbog toga što se oscilacije povećavaju kako vrijeme odmiče. No, kako bi se prikazao aditivni model, ovdje će se koristiti drugačiji pristup, pa će rezultati izgledati donekle drugačije.

Svaka od ovih komponenti ima i svoju pripadajuću jednadžbu. Za trend je to:

\[T_t=597,05+8,96 \cdot t\]

Za sezonsku komponentu, to je:

\[ S_t = - 35,38 \cdot sin \Bigl( \frac{2 \cdot \pi\cdot t}{12} \Bigr) - 30,75 \cdot cos \Bigl( \frac{2\cdot \pi \cdot t}{12} \Bigr) \]

Jednadžba cikličke komponente je:

Za ilustraciju aditivnog modela ovdje smo iz pune Christiano-Fitzgerald dekompozicije (raspon 24-96 mj.) izdvojili samo periodične oscilacije s periodom od 60 mjeseci. Time dobivamo jednu, “prosječnu”, petogodišnju sinusoidu koja dovoljno dobro prikazuje dugoročne cikličke oscilacije, a izbjegavamo složenost višestrukih harmonika - upravo radi jasnoće i jednostavnosti prikaza. Ovaj je pristup koristan kada želimo istaknuti osnovnu strukturu ciklusa bez ulaska u detalje cijelog frekvencijskog spektra.

\[ C_t = 2,5716 \cdot sin \Bigl( \frac{2 \cdot \pi\cdot t}{60} \Bigr) +3,5825 \cdot cos \Bigl(\frac{2\cdot \pi \cdot t}{60} \Bigr) \]

Stoga je aditivni model vremenskog niza jednak zbroju tih komponenti, uz dodavanje slučajne pogreške:

\[ \widehat{y}_t=597,05+8,96 \cdot t - 35,38 \cdot sin \Bigl(\frac{2 \cdot \pi\cdot t}{12} \Bigr) -30,75 \cdot cos \Bigl(\frac{2\cdot \pi \cdot t}{12} \Bigr) + 2,5716 \cdot sin \Bigl(\frac{2 \cdot \pi\cdot t}{60}\Bigr) +3,5825 \cdot cos \Bigl(\frac{2\cdot \pi \cdot t}{60} \Bigr) + \varepsilon_t \]

Koeficijent Vrijednost Komponenta Što nam govori
\(\alpha\) (odsječak) 597,05 Trend Prosječna razina izvoza u prvom mjesecu niza (mil. EUR).
\(\beta\) + 8,96 Trend Dugoročni rast: ≈ 8,96 mil. EUR svaki mjesec (≈ 108 mil. EUR godišnje).
\(A_{S\!\sin}\) − 35,38 Sezonalnost (12 mj) Čini prvu polovicu godišnjeg vala. Zajedno s kosinusom daje ukupnu sezonsku amplitudu.
\(A_{S\!\cos}\) − 30,75 Sezonalnost (12 mj) Drugi dio vala. Apsolutna amplituda sezone: \(\sqrt{35,38^2 + 30,75^2} ≈ 46,88\) mil. EUR
\(A_{C\!\sin}\) + 2,5716 Ciklus (60 mj) Dijelovi petogodišnjeg vala; vrlo mala vrijednost - ciklus je tek blaga oscilacija.
\(A_{C\!\cos}\) + 3,5825 Ciklus (60 mj) Zajedno sa sinus-dijelom daje amplitudu ciklusa: \(A_C ≈ 4.4099\) mil. EUR

Kompaktan zapis modela vremenskog niza:

\[ \widehat{y}_t=597,05+8,96 \cdot t - A_S sin \Bigl(\frac{2πt}{12}+\phi_S \Bigr) + A_C sin \Bigl(\frac{2πt}{60}+ \phi_C\Bigr) + \varepsilon_t \]

odnosno,

\[ \widehat{y}_t=597.05+8.96 \cdot t - 46.88 \cdot sin \Bigl(\frac{2πt}{12}+2.42 \Bigr) + 4.4099 \cdot sin \Bigl(\frac{2πt}{60}+ 2.23 \Bigr) + \varepsilon_t \]

Na ovom smo primjeru vidjeli kako mogu izgledati komponente vremenskog niza, ali kako ih odrediti?

Metoda Što radi Kada je najprikladnija Skupina metoda
Linearni / polinomni trend Utvrđuje pravac \(T_t=\alpha+\beta t\) ili polinom \(T_t=\sum\beta_k t^{\,k}\) metodom najmanjih kvadrata (OLS - Ordinary Least Squares). Dugoročni nizovi gdje je cilj procijeniti jednadžbu trenda (npr. turizam, plaće). parametrijska
Pomični prosjek Izravnava niz pomicanjem prosjeka tri, pet ili sedam godina što izravnava krivulju i daje uvid u trend. Brza procjena trend-linije kada formalni model nije potreban ili je nelinearan. neparametrijska
Segmentirani trend (piece-wise OLS) Istodobno fitira dva ili više linearnih trendova s točkama prijeloma (breakpoint) (Chow test, Bai-Perron). Nizovi s poznatim lomom (npr. COVID-19, promjena metodologije 2015. i sl.). parametrijska
Monotoni (spline) trend (cubic spline, loess-trend) Fleksibilniji način utvrđivanja trenda; čvorove bira informacijski kriterij (GCV/AIC). Dugi niz s postupnim promjenama nagiba; ne želimo pretpostaviti pravac. polu-parametrijska
Klasična dekompozicija
(pomični prosjek + fiksni dummy-mjeseci)
Izravnava trend pomičnim prosjekom, potom računa sezonu kao prosjek ostataka. Jednostavni mjesečni ili kvartalni nizovi s fiksnom sezonom i stabilnim trendom. polu-parametrijska
(trend - neparam.; sezona - param.)
STL
(Seasonal-Trend by Loess)
Lokalno izgladi trend i sezonu; sezona ne mora biti cijeli broj i može blago klizati. Dugi, neprekinuti nizovi do jedne sezone (12 ili 4 mjeseca) kad želimo glatku, robustnu dekompoziciju i ručnu kontrolu. neparametrijska
ARIMA (Box-Jenkins, AutoRegressive Integrated Moving Average) Diferencira niz \((1-B)^d\) i \((1-B^s)^D\) da ukloni trend/sezonu, pa modelira AR (autoregresivni dio) i/ili MA (moving average - pomične prosjeke) dinamiku na stacioniranom nizu. Kad je primarni cilj prognoza; ili kad želimo jedinstven, parametrijski opis bez dodatnih filtera. parametrijska
X-13ARIMA-SEATS / TRAMO-SEATS Nadograđuju ARIMA model za sezonsku prilagodbu: uključuju kalendarske varijable, automatski pronalaze outliere i daju sezonski očišćen niz. Službena makro- i inflacijska statistika gdje se traži standardiziran SA-output (Eurostat, IMF). parametrijska
State-space / Kalman (UCM, BSTS) Latentni trend, sezona, ciklus + šokovi u Bayesian/Kalman okviru; ekvivalentno ARIMA u matrici. Neravnomjerni ili kratki nizovi, online (real-time) filtriranje, analiza strukturnih lomova. parametrijska
ETS / exponential smoothing Procjenjuje trend (N, A, Ad, M) i sezonu (N, A, M) unutar jedne optimizacije; daje i prognozu. Kratki do srednje dugi nizovi kada primarni cilj nije samo dekompozicija nego i kratkoročna prognoza. parametrijska (state-space)
Multiplikativni log-STL Log-transformacija + STL, pa komponente radimo u postotcima. Nizovi gdje amplituda sezone raste s vrijednosti varijable (uvoz, cijene). neparametrijska
Harmonička regresija
(Fourierova serija)
Sezonu opisuje trigonometrijskim parovima \(\sin\)/\(\cos\); lako dodaje više harmonika. Složene ili višestruke sezone (npr. energetsko opterećenje sa 24 h + 168 h ciklusom). parametrijska
HP / Baxter-King / Christiano-Fitzgerald (band-pass filtri) Numerički odvaja ciklus određene valne duljine (2-8 g) od trenda. Makroekonomski nizovi gdje je ciklus jednako važan kao i trend (BDP, nezaposlenost). neparametrijska
Piece-wise linear GAM (Generalized Additive Model) s Fourier-sezonom i indikatorima šoka (popularna implementacija: Prophet) Trend + sezona (Fourier) + “ručni” blagdanski šokovi, optimirano za primjene u poslovanju. E-commerce i web-promet s više sezona (godina + tjedan) i poznatim promotivnim/holiday šokovima. polu-parametrijska
(trend spline - semi; Fourier dijelovi - param.)

Većina ovih metoda nabrojana je kao putokaz za daljnje istraživanje. U nastavku ćemo se detaljnije baviti sa samo dvije metode, jednostavnim linearnim trendom (parametrijska metoda) i metodom pomičnih prosjeka (neparametrijska metoda).

Skupine metoda označavaju sljedeće:

  • Parametrijska - pretpostavlja fiksan funkcionalni oblik s konačnim brojem koeficijenata (OLS-trend, ARIMA, ETS, harmonici).

  • Neparametrijska - koristi klizno uglađene vrijednosti/ filtere bez eksplicitne formule (STL-loess, HP-filter).

  • Polu-parametrijska - kombinira oba pristupa: dio se procjenjuje izglađivanjem, dio eksplicitnim koeficijentima (npr. spline-trend + Fourier-sezona, klasična dekompozicija MA-trend + dummy-sezona).


Metoda najmanjih kvadrata za utvrđivanje linearnog trenda


Ovo je parametrijska metoda primjerena za opisivanje kretanja dugoročno linearnih pojava u vremenu. Cilj je utvrditi parametre \(a\) i \(b\) jednadžbe trenda:

\[ \widehat{y}_c=𝑎+𝑏\cdot t+\varepsilon_t \] Metoda najmanjih kvadrata = Ordinary Least Squares (OLS)

Slično kao kod linearne regresije, metoda najmanjih kvadrata procjenjuje parametre modela tako da su udaljenosti opaženih i pravcem procijenjenih vrijednosti što manje. Manje razlike vode do boljeg pristajanja pravca opaženim vrijednostima i manjim rezidualima.

Ipak, važno je voditi računa o tome da postoje određene razlike, zbog toga što u linearnoj regresiji imamo dvije varijable, a kod vremenskih nizova zapravo imamo samo jednu varijablu dok vrijeme služi za utvrđivanje redoslijeda opažanja pojave koja se promatra.

Dakle, između linearne regresije i određivanja pravca trenda postoji konceptualna razlika, koja se dalje može razložiti:

Jednostavna linearna regresija Trend-regresija na vremenskom nizu
Dvije slučajne varijable: \(Y\) i \(X\) Jedna varijabla: \(Y_t\); druga “varijabla” je deterministički niz \(t = 0,1,2,\dots\)
Poznata veza između dvije varijable Nepoznat uzrok kretanja pojave
Cilj: objašnjenje i predikcija Cilj: prognoza
Pogreške \(\varepsilon\) moraju biti međusobno neovisne, ali mogu korelirati s \(X\)-om Pogreške \(\varepsilon_t\) ne smiju biti autokorelirane (što je često kršeno u vremenskim nizovima)
Iz \(X\) možemo birati nasumične ili eksperimentalne vrijednosti Vrijeme nije kontrolirana kovarijata, nego samo “oznaka položaja” opažanja
Standardni OLS-testovi (t, F) oslanjaju se na neovisne i jednako distribuirane pogreške Često moramo korigirati standardne pogreške (Newey-West) ili modelirati ARMA strukturu reziduala

Što to praktično znači?

  • Procjena \(\alpha\) i \(\beta\) metodom najmanjih kvadrata ostaje nepristrana (unbiased).
  • Serijska (auto)korelacija znači da pogreška u trenutku \(t\) korelira s pogreškom u \(t ± k\)
  • Testovi (t-statistike, p-vrijednosti, intervali) mogu dati pogrešne rezultate ako reziduali pokazuju serijsku korelaciju
  • Kad trend‐linija služi samo za determinističku dekompoziciju, preciznost testova obično nije presudna; ali kad želimo statistički zaključak o nagibu, treba voditi računa o autokorelaciji.
  • dakle, provedba metode najmanjih kvadrata za trend izgleda isto kao u “običnoj” regresiji, ali početne pretpostavke o pogreškama (i interpretacija “druge varijable”) razlikuju se, jer je vrijeme deterministički “brojač”, a ne slučajni kovarijat.

Pri utvrđivanju parametara modela trenda koriste se sljedeći izrazi:

\[ \widehat{y}_{ct}=a+bx_t\; \]

\[ b=\frac{\displaystyle\sum x_t\,y_t-\bar x\sum y_t}{\displaystyle\sum x_t^{2}-\bar x\sum x_t} \qquad\Longleftrightarrow\qquad b=\frac{\displaystyle\sum x_t\,y_t-n\bar x\bar y}{\displaystyle\sum x_t^{2}-n\bar x^{2}} \]

\[ a=\bar y-b\bar x \]

Utvrđivanje linearnog trenda na primjeru dolazaka turista

Tablica 1. Prikaz izračuna pomoćnih koraka pri utvrđivanju jednadžbe linearnog trenda

Godina Dolasci turista (tis.) \(x_t\) \(x_t\,y_t\) \(x_t^{2}\) \(Y_{ct}\)
2010. 10 405,00 0 0 0 9 600,44
2011. 11 211,00 1 11 211 1 10 659,54
2012. 11 599,00 2 23 198 4 11 718,64
2013. 12 233,00 3 36 699 9 12 777,75
2014. 12 914,00 4 51 656 16 13 836,85
2015. 14 175,00 5 70 875 25 14 895,95
2016. 15 463,00 6 92 778 36 15 955,05
2017. 17 431,00 7 122 017 49 17 014,16
2018. 18 667,00 8 149 336 64 18 073,26
2019. 19 566,00 9 176 094 81 19 132,36
Ukupno 143 664,00 45 733 864 285 143 664,00

Izvor: DZS (2024) Dolasci i noćenja turista




Prvi, i vrlo važan korak (jer bez njega nećemo dobiti točne parametre modela) je prekodiranje varijable vrijeme. Prva godina vremenskog niza je ishodište vremenskog niza i poprima vrijednost 0. Svaka sljedeća godina poprima sljedeću cjelobrojnu vrijednost u nizu.




\[b=\frac{\displaystyle\sum x_t\,y_t-n\bar x\bar y}{\displaystyle\sum x_t^{2}-n\bar x^{2}}= \frac{733 864 - 10 \cdot 4.5 \cdot 14366.4}{285 - 10 \cdot 4.5^2}=1059.103\]

\[a=\bar y-b\bar x= 14366.4 - 1059.103 \cdot 4.5 = 9600.4364\]

\[\widehat{y}_{ct}= 9600.4364+1059.103 \cdot x_t + \varepsilon_t\]

Obratite pozornost da su sume opaženih i teorijskih vrijednosti jednake; štoviše, moraju biti jednake. Pri ručnom izračunavanju, tolerira se odstupanje u decimalama koje nastaje zbog zaokruživanja.

Tumačenje izračunatih parametara jednadžbe trenda

Jednadžba trenda: \(\widehat{y}= 9600.4364+1059.103 \cdot x_t + \varepsilon_t\) \(\widehat{y}_{ct}\) - zavisna varijabla: dolasci turista u tisućama \(x_t\) - oznaka za vrijeme: 1 godina Ishodište: 2010. Godina


Prema trendu, u razdoblju 2010. - 2019. godine, u 2010. godini bilo je 9 600 436 turista, uz prosječno godišnje povećanje od 1 059 103 turista.


Procjena reprezentativnosti modela linearnog trenda

Ovo je još jedna razlika u odnosu na model linearne regresije. Model se procjenjuje koeficijentom varijacije - ali će se taj koeficijent varijacije računati malo drugačije nego što smo naučili u deskriptivnoj statistici.

Varijanca reziduala

\[ \hat{\sigma}^{2} = \frac{\displaystyle\sum_{t=1}^{n}\bigl(y_{t}-y_{ct}\bigr)^{2}}{\,n-2} \]

Standardna devijacija reziduala

\[ \hat{\sigma} = \sqrt{\frac{\displaystyle\sum_{t=1}^{n}\bigl(y_{t}-y_{ct}\bigr)^{2}}{\,n-2}} \]

Koeficijent varijacije trenda

\[ V_{yc} = \frac{\hat{\sigma}}{\bar{y}}\;\times\;100 \]

Za prikazni primjer dolazaka turista, to je:

Tablica 2. Pomoćne radnje za izračun koeficijenta varijacije

Godina Dolasci turista (tis.) (\(y_t\)) \(y_{ct}\) \(y_t-y_{ct}\) \((y_t-y_{ct})^{2}\)
2010. 10 405 9 600,436 804,564 647 322,645
2011. 11 211 10 659,539 551,461 304 108,800
2012. 11 599 11 718,642 −119,642 14 314,310
2013. 12 233 12 777,745 −544,745 296 747,610
2014. 12 914 13 836,848 −922,848 851 649,326
2015. 14 175 14 895,952 −720,952 519 771,087
2016. 15 463 15 955,055 −492,055 242 117,676
2017. 17 431 17 014,158 416,842 173 757,607
2018. 18 667 18 073,261 593,739 352 526,468
2019. 19 566 19 132,364 433,636 188 040,496
Ukupno 143 664 143 664,000 0,000 3 590 356,024

\[ \hat{\sigma} = \sqrt{\frac{\displaystyle\sum_{t=1}^{n}\bigl(y_{t}-y_{ct}\bigr)^{2}}{\,n-2}} = \sqrt{\frac{\displaystyle\sum_{t=1}^{n}\bigl(3 590 356,024\bigr)}{\,10-2}}= \sqrt{448794,503}=669,92127 \]

\[ V_{yc} = \frac{\hat{\sigma}}{\bar{y}}\;\times\;100 = \frac{669,92127}{14366,40}\;\times\;100 = 4,663\% \]

Koeficijent varijacije 4,663 % upućuje na visoku reprezentativnost modela trenda, te se linearni trend ocjenjuje primjerenim modelom za analiziranje ovog niza podataka.

Inače, za vrijednosti koeficijenta varijacije do 25%, uobičajeno se zaključuje da je linearni trend primjereni model za analizu tog niza podataka. U suprotnom, potrebno je odabrati neki drugi oblik analize. U uvodu u vremenske nizove, alternativa će biti jednostavne metode, kao što su pomični prosjeci.

Ekstrapolacija trenda

Ekstrapolacija je stručni naziv koji podrazumijeva prognoziranje temeljem trenda i to za vrijednosti x-a izvan promatranog razdoblja. Po tome se ekstrapolacija razlikuje od predviđanja modelom jednostavne linearne regresije, gdje se u takva predviđanja pouzdamo samo ako ispitujemo vrijednosti x-a unutar izvornog raspona varijable.

Na primjer, temeljem prikazanog modela trenda, možemo se pitati koji će broj dolazaka biti ostvaren u 2020. godini ili u 2025. godini?

Na to pitanje možemo odgovoriti tako što ćemo uvrstiti odgovarajuću vrijednost x-a u izračunatu jednadžbu trenda.

Tablica 3. Prekodirane vrijednosti x-a

Godine 2010. 2011. 2012. 2013. 2014. 2015. 2016. 2017. 2018. 2019. 2020. 2021. 2022. 2023. 2024. 2025.
\(x_t\) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

\[\widehat{y}_{2020}= 9600.4364+1059.103 \cdot 10 = 20191,467\]

\[\widehat{y}_{2025}= 9600.4364+1059.103 \cdot 15 = 25486,982\]

Ako prognozu za 2020. godinu izračunatu temeljem trenda usporedimo s pripadajućim opažanjem za tu godinu, uočit ćemo veliko odstupanje. Naime, te godine ostvareno je 7 001 000 dolazaka, a ne 20 191 467 predviđenih dolazaka.

Dakle, ovakve prognoze treba pratiti oprezno tumačenje. Prikladno tumačenje prognoze je:

Uz pretpostavku kako će svi čimbenici koji su utjecali na kretanje pojave u periodu od 2010.- 2019. godine nastaviti razvijati se u istom smjeru, istim intenzitetom uz prosječno godišnje povećanje od 1 059 103 turista, broj dolazaka turista u 2020. iznosit će 20 191 467 turista.


Zašto je ovakvo tumačenje prikladno, čak i za pandemijsku godinu?

  • iz tumačenja je jasno da prognoza ovisi o različitim čimbenicima
  • jasno je da će se prognoza realizirati samo pod određenim uvjetima
  • ako ti uvjeti nisu ispunjeni, neće biti ostvarena niti prognoza
  • s obzirom da su pandemijski uvjeti onemogućili kretanje čimbenike koji utječu na kretanje pojave, pojava se nije nastavila kretati u istom smjeru ni istim intenzitetom
  • ovakvim tumačenjem pokazujemo ispravno razumijevanje ograničenja modela, ali štitimo čitatelja (i sebe) od pogrešnog razumijevanja prognoze

Digresija. Na primjer, ako pomoću trenda izračunamo vrijednost za 2024. godinu, dobit ćemo 24 427 879 dolazaka turista. Ostvareni broj dolazaka u toj godini je 20 246 000. Iako postoji očita (i velika) razlika u izračunatoj i procijenjenoj vrijednosti, razlika je manja nego za vrijednosti iz 2020. godine. Možemo li govoriti o povratku “u normalu”? Odgovor ovisi o tome kakvu je vrstu loma šok uzrokovao. Na primjer, šokovi mogu biti:

Vrsta promjene Kako izgleda na grafu Posljedica za trend-model
Privremeni šok
npr. kratki štrajk, vremenska nepogoda
Niz se naglo spusti, a zatim se vrati na prijašnji pravac. Dovoljno je u model ubaciti dummy-varijablu za pogođeno razdoblje. Dugoročni nagib ostaje isti.
Strukturni lom u razini
(“step shift”)
Nakon šoka niz nastavlja paralelno starom trendu, ali s nižom (ili višom) razinom. Model mora imati dummy za razinu ili se procjenjuje novi odsječak \(a\).
Strukturni lom u nagibu Šok mijenja smjer ili veličinu nagiba trenda (npr. sporiji oporavak). Potreban je segmentirani (piece-wise) trend s različitim \(\beta\) prije i poslije loma.
  • Gdje se pandemija uklapa?
      1. je očigledan negativan šok (pad na 7 milijuna dolazaka)
    • 2021.- 2023. pokazuju brzi, ali nepotpuni oporavak
      1. i dalje nije na razini na kojoj bi bila prema starom trendu (cca - 4 mil.), pa se čini da je šok promijenio razinu, možda i nagib
    • Ako se svi uvjeti vrate na pretpandemijske (pravila pri putovanju, navike turista, kapacitet smještaja), niz se može vratiti paralelno starom trendu, ali gubi jednu ili dvije godine rasta (“povratak na staro”)
    • Ako se dio uvjeta trajno promijeni (rad na daljinu, skuplji letovi, nedostatak radne snage), niz će nastaviti po novom trendu, s manjim koeficijentom smjera i usporenim rastom (“novo normalno”)


Nalik na prethodni primjer - tumačimo i izračunatu vrijednost za 2025. godinu.

Uz pretpostavku kako će svi čimbenici koji su utjecali na kretanje pojave u periodu od 2010.- 2019. godine nastaviti razvijati se u istom smjeru, istim intenzitetom uz prosječno godišnje povećanje od 1 059 103 turista, broj dolazaka turista u 2025. iznosit će 25 486 982 turista.

Uobičajeno se linearni trend koristi za prognozu 2-3 vremenske jedinice u budućnosti, jer prediktivna sposobnost slabi kako se udaljavamo od posljednje godine u nizu. Osim toga, niz je potrebno rekalibrirati po dodavanju svakog novog opažanja. U ovom slučaju, uočen je i specifična anomalija, pa će biti zanimljivo usporediti prognoziranu vrijednost s ostvarenom i temeljem toga zaključivati o “povratku na staro” ili “novo normalno”.

Ako bismo ovdje razmotrili ranije analizirani primjer s izvozom RH, koji osim trenda sadrži i druge komponente, ekstrapolacija i prognoziranje trendom iziskuju naprednije metode. Ovdje je brzi prikaz kako takvi rezultati mogu izgledati (možda vas zainteresira za daljnje istraživanje).

Crna linija prikazuje povijesne mjesečne vrijednosti izvoza: od 2012. do kraja 2024. vidimo postupno ubrzavanje rasta i sve izraženije sezonske valove. Od trenutka kada opaženi podaci završavaju, model - kombinacija STL-dekompozicije i eksponencijalnog izglađivanja ETS(M,A,N) iscrtava prognozu.

Središnja tamnoplava traka prognoziranih vrijednosti predstavlja najvjerojatniji raspon kretanja - prati dosadašnji sezonski obrazac i polagano se penje, što odražava procijenjeni rastući trend. Što idemo dalje u budućnost, traka se blago uspinje i širi - do kraja prognoziranog perioda procijenjene vrijednosti dostižu interval od 1,5 pa do preko 3 mlrd €.

Plavo sjenčanje oko središnje linije govori koliko su prognozirane vrijednosti neizvjesne. Tamniji pojas pokriva otprilike 80 %, a svjetliji 95 % očekivanih ishoda. Raspon se s vremenom širi. U prvim mjesecima prognoze interval je relativno uzak - model prognozira da će izvoz ostati u relativno uskom intervalu od 1,9-2,4 mlrd €. Nakon dvije-tri godine neizvjesnost raste: gornja granica prelazi 3 mlrd €, dok donja pada ispod 1,5 mlrd €. Drugim riječima, što dalje prognoziramo, to je veća vjerojatnost da neki neočekivani šok (promjene cijena energenata, rat, nova regulativa) odvuče niz u drugom smjeru. Dakle, ako se gospodarsko okruženje radikalno promijeni, stvarna kretanja mogu iskočiti iz prikazanog raspona. Stoga graf treba čitati kao raspon vjerojatnih ishoda pod status-quo pretpostavkama, a ne kao zadanu razinu izvoza u iduće tri godine.


Metoda pomičnih prosjeka za utvrđivanje trenda


Pomični prosjeci računaju se temeljem neparnog broja redoslijednih opažanja vremenskog niza, a potom se prikazuju grafički

Za trogodišnji pomični prosjek, to će biti niz računat temeljem izraza:

\[ PP3_t = \frac{y_{t-1}+y_t + y_{t+1}}{3} \]

Dakle, trogodišnji pomični prosjek za godinu (ili kvartal, mjesec i sl.) \(t\), dobiva se zbrajanjem vrijednosti pojave u promatranoj, prethodnoj i sljedećoj godini (ili kvartalu, mjesecu i sl.) podijeljen s tri. S obzirom na to da uključuje prethodnu godinu (ili kvartal, mjesec i sl.) u izračun, nije ga moguće izračunati za prvu godinu (ili kvartal, mjesec i sl.) niza. Slično, s obzirom da iziskuje sljedeću godinu (ili kvartal, mjesec i sl.), neće ga biti moguće izračunati ni za posljednju godinu (ili kvartal, mjesec i sl.) niza.

Za petogodišnji pomični prosjek, to će biti niz računat temeljem izraza:

\[ PP5_t = \frac{y_{t-2} +y_{t-1}+y_t + y_{t+1} + y_{t+2}}{5} \]

Slično kao i za trogodišnji prosjek, petogodišnji pomični prosjek za godinu \(t\), dobiva se zbrajanjem vrijednosti pojave u promatranoj, dvije prethodne i dvije sljedeće godine podijeljeno s pet. S obzirom na to da uključuje dvije prethodne godine u izračun, nije ga moguće izračunati za prve dvije godine niza. Slično, neće ga biti moguće izračunati ni za posljednja dva opažanja niza.

Brojnici pomičnih prosjeka su pomični totali.

Za primjer dolazaka turista, to izgleda ovako:

Godina Dolasci_tis Trogodisnji_pomicni_total Trogodisnji_pomicni_prosjek Petogodisnji_pomicni_total Petogodisnji_pomicni_prosjek
2010 10405 NA NA NA NA
2011 11211 33215 11071.67 NA NA
2012 11599 35043 11681.00 58362 11672.4
2013 12233 36746 12248.67 62132 12426.4
2014 12914 39322 13107.33 66384 13276.8
2015 14175 42552 14184.00 72216 14443.2
2016 15463 47069 15689.67 78650 15730.0
2017 17431 51561 17187.00 85302 17060.4
2018 18667 55664 18554.67 NA NA
2019 19566 NA NA NA NA

Pomični prosjek “gleda unatrag i unaprijed” pa hvata promjenu nakon što se već dogodila. Što je raspon dulji, linija je glađa - ali i kasnije “reagira”. PP-5 će tek 2 godine nakon eventualnog zaokreta pokazati novu putanju.

Također, nastupa gubitak podataka na rubnim dijelovima niza. Kod kratkih nizova to može biti osjetan udio. Za prognoze rubnih godina morat će se posegnuti za drugim metodama.

Ako niz ima sezonske skokove, prvo ih treba ukloniti. U suprotnom, prosjek može obuhvatiti sezonu u trend i iskriviti ga. Standardna praksa je desezonirati, pa potom računati pomične prosjeke.

Kao neparametrijska metoda, ne omogućuje određivanje parametara i prvenstveno se koristi za vizualne prikaze. Ne omogućuje no ekstrapolaciju. Osim toga, pomični prosjek je osjetljiv na ogromne šokove. Jedan izvanredni podatak utječe na više uzastopnih vrijednosti niza promičnih prosjeka. Zbog svega navedenog, u praksi će se koristiti uz, a ne umjesto, parametarskog trenda ili naprednijih modela.


Desezoniranje


Ovdje ćemo se pozabaviti s dvije najjednostavnije metode desezoniranja vremenskog niza.

Sezonsko razlikovanje

\[y_t=y_t−y_{t−s}\] (ili \(y_t=\frac{y_t}{y_{t−s}}\) kod multiplikativne sezone)

  • radi se o oduzimanju vrijednosti istog mjeseca (ili tromjesečja) godine dana ranije od promatrane vrijednosti

  • sezonsko razlikovanje je zapravo oblik apsolutne stope promjene, rezultira nizom godišnjih promjena. Više nemamo razinu izvoza, nego koliko se izvoz povećao / smanjio u odnosu na isti mjesec lani.

  • na ovaj način se utvrđuju razlike koje vjerojatno proizlaze iz sezonskih oscilacija, ali ne dobivamo promjenu u nizu trenda

Klasična dekompozicija

  • ratio-to-moving-average

  • izračuna se centrirani pomični prosjek (npr. 12-mj)

  • izvorni podaci dijele se s pomičnim prosjekom ⇒ to daje sezonu+šum

  • računa se prosječni sezonski indeks za svaki mjesec (skaliran da prosjek bude 1)

  • izvorni podaci podijeljeni sa sezonskim indeksima daju desezonirani niz.

Primjer na podacima o izvozu RH

Desezoniranje mjesečnog izvoza - prikaz pomoćnih stupaca za 2024.
Mjesec y_t y_{t-12} y_t - y_{t-12} PP_{12} y_t / PP_{12} Sezonski_indeks Desezonirani_niz
sij 2024 1741 1681 60 1958.9 0.89 0.86 2027
vlj 2024 1879 1777 102 1951.5 0.96 0.94 1997
ožu 2024 2005 2397 -392 1960.3 1.02 1.05 1910
tra 2024 2019 1807 212 1974.7 1.02 0.95 2117
svi 2024 2030 1923 107 1980.7 1.02 1.01 2009
lip 2024 1891 1917 -26 2004.6 0.94 1.00 1885
srp 2024 2388 1839 549 2021.6 1.18 1.08 2205
kol 2024 1577 1666 -89 2033.8 0.78 0.88 1788
ruj 2024 1994 1888 106 NA NA 1.06 1882
lis 2024 2261 2089 172 NA NA 1.09 2071
stu 2024 2182 2110 72 NA NA 1.09 1999
pro 2024 2088 1801 287 NA NA 0.98 2141

Dva pristupa čišćenju sezone

  • Razlika - dobra za stacioniranje prije naprednijih modela, ali gubi mjernu jedinicu.

  • Omjer & indeks - vraća se na izvorne jedinice, pa je praktičnije za ekonomsku interpretaciju.

  • Indeksi moraju biti normirani tako da njihov prosjek u godini bude točno 1 (ili 100 %). Time ukupna razina niza ostaje nepromijenjena.

Sljedeći graf prikazuje prvi i posljednji stupac prethodne tablice.

Kad desezoniramo, ne bismo trebali očekivati potpuno ravnu liniju - dobit ćemo sve ono što u nizu nije kalendarski predvidljivo sezonom:

  • Trend (dugoročna putanja)

  • Ciklički valovi i jednokratni šokovi (npr. promjene cijena energenata, udar logističkih troškova, politički događaji)

  • Slučajni šum mjerenja.


Pitanja za ponavljanje


  1. Koje su osnovne komponente vremenskog niza?
    1. Trend, autokorelacija, šum
    2. Trend, sezona, ciklus
    3. Sezona, heteroskedastičnost, šum
    4. Trend, autokorelacija, sezona


  1. Kako definiramo trend?
    1. Ponavljajući obrazac unutar godine dana
    2. Nasumične oscilacije oko središnje razine
    3. Sustavno, monotono, dugoročno kretanje pojave (porast ili pad)
    4. Višegodišnje oscilacije povezane s gospodarstvom


  1. Koja komponenta vremenskog niza ima periodičnost kraću od godine dana?
    1. Sezonska komponenta
    2. Trend
    3. Ciklička komponenta
    4. Šum


  1. Kako se u općem zapisu aditivnog modela vremenskog niza označava sezonska komponenta?
    1. \(C_t\)
    2. \(\varepsilon_t\)
    3. \(S_t\)
    4. \(T_t\)


  1. Koja je najjednostavnija metoda parametrijskog utvrđivanja linearnog trenda?
    1. Fourierova analiza
    2. Metoda najmanjih kvadrata
    3. Autoregresijski model
    4. STL-dekompozicija


  1. Kod izračuna trenda metodom najmanjih kvadrata, zašto vrijeme tretiramo kao varijablu \(x_t\)?
    1. Jer je vrijeme nasumična varijabla
    2. Jer autokorelacija podataka mora biti nula
    3. Jer je svako opažanje redom kronološki određeno i nema druge varijable
    4. Jer se težine harmonički definiraju kroz \(x_t\)


  1. Koja je formula za nagib \(b\) linearne trend-linije u vremenskom nizu (drugi oblik)?
    1. \(b = \frac{\sum (y_t - \bar y)(t - \bar t)}{\sum (t - \bar t)^2}\)
    2. \(b = \frac{\sum x_t^2 - n\bar x^2}{\sum x_t y_t - n\bar x\,\bar y}\)
    3. \(b = \frac{\sum x_t y_t - n\bar x\,\bar y}{\sum x_t^2 - n\bar x^2}\)
    4. \(b = \frac{\sum x_t - \sum y_t}{n}\)


  1. Kako interpretiramo odsječak \(a\) iz jednadžbe trenda \(\hat y_t = a + b\,t\)?
    1. Kao vrijednost šuma u nizu
    2. Kao prosjek svih sezonskih oscilacija
    3. Kao procijenjenu vrijednost \(y\) u prvoj (ili osnovnoj) vremenskoj jedinici, kad je \(t=0\)
    4. Kao prosječnu godišnju stopu rasta


  1. Što pokazuje koeficijent varijacije \(V_{yc} = \frac{\hat\sigma}{\bar y}\times100\) kod trenda?
    1. Koliki je udio ciklusa u odnosu na trend
    2. Koliki je godišnji rast u postocima
    3. Kolika je prosječna sezonalna oscilacija
    4. Koliko rezidualnih oscilacija (reziduala) u postocima ima u odnosu na prosječnu vrijednost pojave


  1. Tvrdi se da je linearni trend primjeren model ako je \(V_{yc}\) manji od približno 25 %. Znači li to da je niz dobro obuhvaćen prevcem trenda?
    1. Ne, jer \(V_{yc}\) uvijek mora biti manji od 5 %
    2. Da, ako je \(V_{yc} < 25\,\%\), rezidualna varijanca je relativno mala u odnosu na prosjek
    3. Ne, jer se mora izračunati AIC za provjeru
    4. Da, ali samo za mjesečne podatke


  1. Što znači sezonsko razlikovanje u kontekstu desezoniranja?
    1. Oduzimanje vrijednosti iz iste sezone (isti mjesec) prethodne godine od promatrane vrijednosti: \(\Delta y_t = y_t - y_{t-12}\)
    2. Dijeljenje niza s 12-mjesečnim pomičnim prosjekom
    3. Uzimanje trigonometrskih harmoničkih elemenata
    4. Primjena HP-filtera s \(\lambda = 12\)


  1. Ako je izračunata jednadžba linearnog trenda \(\widehat{y}_{ct} = 1000 - 50\,x_t\) za godišnju pojavu \(y\), koje je ispravno tumačenje tog modela?
    1. U prvoj godini (\(x_t = 0\)) vrijednost je 1000, a svake sljedeće godine vrijednost se smanjuje za 50 jedinica.
    2. U prvoj godini (\(x_t = 1\)) vrijednost je 1000, a svake sljedeće godine vrijednost se smanjuje za 50 jedinica.
    3. U prvoj godini (\(x_t = 0\)) vrijednost je 50, a svake sljedeće godine vrijednost se povećava za 1000 jedinica.
    4. U prvoj godini (\(x_t = 1\)) vrijednost je 950, a svake sljedeće godine vrijednost se povećava za 50 jedinica.


  1. Kod sezonskog razlikovanja mjesečnih podataka, što znači izraz \(y_t - y_{t-12}\)?
    1. Razlika između vrijednosti u mjesecu \(t\) i prosjeka istog mjeseca kroz cijelu godinu.
    2. Razlika između vrijednosti u mjesecu \(t\) i prosjeka posljednjih 12 mjeseci.
    3. Razlika između vrijednosti u mjesecu \(t\) i vrijednosti u istom mjesecu prethodne godine.
    4. Razlika između vrijednosti u mjesecu \(t\) i vrijednosti u mjesecu \(t-1\).


  1. Zašto centriramo pomični prosjek kod klasične dekompozicije?
    1. Da bismo izravno uklonili autokorelaciju
    2. Da se “prosjek” odnosi na točan srednji mjesec (ili tromjesečje) u godini, dakle da se zadrži pravilno poravnanje
    3. Da bismo ubrzali izračun u Excelu
    4. Da se sezonski indeksi uvijek skaliraju na 100 %


  1. Koja tvrdnja točno opisuje trend \(\hat y = 5000 + 10.5x\) izračunat na višegodišnjim mjesečnim podacima o prodaji, ako je \(x\) broj mjeseci od početka niza, a \(\hat y\) predstavlja predviđenu mjesečnu prodaju (u eurima)?
    1. U prvom mjesecu promatranog razdoblja ( \(x = 0\) ) očekujemo prodaju od 10,5 €, uz prosječno mjesečno povećanje prodaje za 5000 €.
    2. U prvom mjesecu promatranog razdoblja ( \(x = 1\) ) očekujemo prodaju od 5000 €, uz prosječno mjesečno povećanje prodaje za 10,5 €.
    3. U prvom mjesecu promatranog razdoblja ( \(x = 0\) ) očekujemo prodaju od 5000 €, uz prosječno mjesečno povećanje prodaje za 10,5 €.
    4. \(y\) je broj godina od početka niza, a \(x\) predstavlja godišnju prodaju (u €).


  1. Što se događa s formulom za aditivni model ako radimo log-transformaciju?
    1. Multiplikativni model se pretvara u aditivni: \(\log y_t = \log T_t + \log S_t + \log C_t + \varepsilon_t\)
    2. Sezona se izbacuje iz modela
    3. Ciklus nestaje jer \(\log\) uništava period
    4. Trend postaje eksponencijalan


  1. Koja je posljedica autokorelacije reziduala kod trenda utvrđenog metodom najmanjih kvadrata?
    1. Rezultati t-testova i p-vrijednosti nisu pouzdani (pretpostavke o neovisnim pogreškama su prekršene).
    2. To nikad nije problem - OLS je uvijek nepristran.
    3. Znači da trend nije linearan.
    4. Znači da je sezona prevelika.


  1. Što je strukturni lom u kontekstu vremenskih nizova?
    1. Kraj sezonalnosti
    2. Neočekivana promjena razine ili nagiba niza zbog šoka (pandemija, rat, novi propisi…)
    3. Prirodan pad ciklusa nakon 4 godine
    4. Uvijek znači trend-break u točki podatka nula


  1. Kod kojih podataka je klasična dekompozicija (ratio-to-moving-average) najprikladnija?
    1. Dugački godišnji nizovi bez sezone
    2. Kratki do srednjeročni mjesečni ili kvartalni nizovi sa stabilnom, fiksnom sezonom
    3. Samo dnevni i satni visoko-frekvencijski podaci
    4. Kad su ciklusi važniji od sezone


  1. Koja tvrdnja najbolje opisuje što analiza vremenskih nizova može, a što ne može?
    1. Analiza vremenskih nizova može automatski prognozirati buduće vrijednosti bez ikakvih pretpostavki o podacima, ali ne može prikazati sezonalnost.
    2. Analiza vremenskih nizova identificira uzročnu vezu između oscilacija i vanjskih događaja, no ne može prikazati trend.
    3. Analiza vremenskih nizova prikazuje kretanje pojave kroz vrijeme i omogućuje nam postaviti bolja pitanja (osobito ako nam je poznat kontekst), ali ne uključuje razloge tih promjena.
    4. Analiza vremenskih nizova omogućuje zaključke zašto se nešto događa u budućnosti, ali ne može prikazati povijesne podatke.


Repliciranje analize koristeći različite alate


U grafičkim prikazima u poglavlju Komponente vremenskog niza korišteni su linijski grafovi, a postupci su ranije prikazani u Štivu 9, pa se čitatelj upućuje na to štivo za referencu. Ostali postupci prikazat će se s obzirom na to u kojoj mjeri u kojoj su softveri prilagođeni za takve prikaze.

R i povezani paketi omogućuju sve grafičke prikaze i izračune prikazane u ovom tekstu. Ako ne koriste R, ali se snalazite u MS Excelu i JASPu, vidjet ćete da MS Excel ima više ugrađenih mogućnosti analize vremenskih nizova (bilo ručno ili putem ugrađenih funkcija) nego JASP. Naime, MS Excel je kreiran za upotrebu u poslovanju i ekonomiji, pa je smisleno da će nuditi olakšani pristup za primjenu metoda koje se u tom području intenzivnije koriste. JASP, s druge strane, iako se konstantno razvija, još uvijek nema toliko posvećenih opcija za rad s vremenskim nizovima - prikladniji je za korištenje za klasičnu i Bajezijansku statističku analizu te neke oblike strojnog učenja (dakle, prema ponuđenim naprednim paketima, više je usmjeran za korištenje u podatkovnim znanostima).

Kratka usporedba rada s vremenskim nizovima u MS Excelu i JASPu

  • Linijski graf niza
    • Excel: može se lako napraviti ručno (Insert → Charts → Line).
    • JASP: postoji gumb (Time Series → Plot).
  • Dodavanje linearne trend‐linije
    • Excel: postoji ugrađena funkcija “Add Trendline” u grafu (klik na plus/dodavanje elemenata → Trend /crta Trenda).
    • JASP: treba pokrenuti korelaciju i koristiti dijagram rasipanja (Correlation → Plot).
  • Tro- ili petogodišnji pomični prosjeci
    • Excel: može se izračunati ručno (npr. =AVERAGE(B2:B4) za PP3) ili odabrati ugrađene funkcije (Data → Data Analysis → Moving Average).
    • JASP: nema izravnog gumba—treba se pozvati R skriptom ili izračunati ručno (Compute → “Compute New Variable” uz odgovarajuće reference).
  • Sezonsko razlikovanje
    • Excel: može se izračunati ručno formulom (=B13-B1 ili =B13/B1).
    • JASP: nema izravnog gumba—treba se pozvati R skriptom ili izračunati ručno (Compute → Compute New Variable: Dolasci_tis - lag(Dolasci_tis, 12)).
  • Klasična dekompozicija (ratio-to-MOVING-AVERAGE)
    • Excel: može se izračunati ručno uz redom: 1) centrirani PP12₂, 2) =y_t/MA₁₂, 3) prosjek omjera po mjesecima (npr. AVERAGEIFS), 4) =\(y_t\)/SezIndex.
    • JASP: nema izravnog gumba—treba se pozvati R skriptom ili izračunati ručno
  • ARIMA model (napredniji model - nismo obradili u ovom tekstu)
    • Excel: nema ugrađenu (morate eksterno ili dodatkom).
    • JASP: relativno jednostavno kreiranje ARIMA modela (Time Series → ARIMA).
  • STL‐dek. i napredni filteri (HP, BK, CF) (napredniji model - nismo obradili u ovom tekstu)
    • Excel: nema ugrađeno (može se ručno raditi pomoću formula ili dodataka).
    • JASP: nema ugrađeno (potrebno poznavanje R).

Dakle, za jednostavne vizualizacije i utvrđivanje trenda, prikladniji je MS Excel (tj. brže i lakše dolazimo do rješenja).


Provedba postupka koristeći JASP


Prethodno uređene podatke (uključujući prekodiranu varijablu vrijeme) učitajte u JASP. Za grafički prikaz trenda te izračun modela linearnog trenda slijedite ove korake:

Dakle, ovdje je izravno primijenjena metoda najmanjih kvadrata i to će fukcionirati samo ako je varijable vrijeme prethodno prekodirana, počevši od 0.

Na taj način koristimo postupak koji nam je poznat od ranije (jednostavna linearna regresija) i kreiramo pravac trenda.


Postoji i drugi pristup, koristeći osnovnu opciju ARIMA modela (iz Time Series paketa), koja zapravo rezultira modelom linearnog trenda. Osim toga, ovdje je omogućeno filtriranje niza po retcima opažanja (pripazite, t=0 je redak=1), što je korisno kad želimo ispitati efekte odabira različitih ishodišta vremenskog niza.


Provedba postupka koristeći R


Uvoz podataka, njihovo čišćenje i transformacija te kreiranje grafova, prikazani su u prethodnom štivu te se ovdje neće detaljnije prikazati.

Komponente vremenskog niza prikazane za Izvoz RH, utvrđene su na sljedeći način.

> library(tidyverse)
> library(lubridate)
> library(forecast)  
> library(mFilter)   
> library(patchwork)  
> 
> df_wide <- df |>
+   pivot_wider(names_from = Vrsta,
+               values_from = Iznos_mil_EUR) |>
+   arrange(Datum)
> 
> 
> izvoz_ts <- ts(df_wide$Izvoz,
+                start = c(year(min(df_wide$Datum)),
+                          month(min(df_wide$Datum))),
+                freq = 12)
> 
> 
> stl_izvoz <- stl(log(izvoz_ts), s.window = "periodic")
> 
> seasonal_log <- stl_izvoz$time.series[, "seasonal"]
> sa_log       <- log(izvoz_ts) - seasonal_log    
> 
> hp_sa  <- hpfilter(sa_log, freq = 223, type = "lambda") # (Hodrick & Prescott, 1997)
> 
> library(mFilter)
> bp_sa <- cffilter(sa_log, pl = 96, pu = 120, root = TRUE, drift = TRUE)
> 
> cycle_log  <- exp(bp_sa$cycle)
> 
> trend_log  <- hp_sa$trend
> 
> comp_df <- tibble(
+   Datum    = df_wide$Datum,
+   A_Izvoz_izvorni_podaci = as.numeric(izvoz_ts),          
+   B_Trend_komponenta   = as.numeric(exp(trend_log)),
+   C_Sezonska_komponenta = as.numeric(exp(seasonal_log)),
+   D_Ciklicka_komponenta    = as.numeric(cycle_log)
+ ) %>%
+   pivot_longer(-Datum,
+                names_to  = "Komponenta",
+                values_to = "Vrijednost")
> 
> 
> g <- ggplot(comp_df, aes(Datum, Vrijednost)) +
+   geom_line(colour = "blue", linewidth = 0.6) +
+   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
+   scale_y_continuous(labels = scales::comma_format()) +
+   facet_wrap(~ Komponenta, ncol = 1, scales = "free_y") +
+   labs(title = "Izvoz RH - izvorni podaci i trend komponenta u mil. eura \nte sezonska i ciklička komponenta iskazane kao postotak trenda",
+        x = "Razdoblje", y = "Mil. eura po fiksnom tecaju") +
+   theme_minimal(base_size = 10) +
+   theme(
+     strip.text = element_text(face = "bold"),
+     axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1)
+   )
> 
> print(g)

Prikaz svih komponenti u istoj mjernoj jedinici i grafički prikaz kreirani su na sljedeći način.

> library(tidyverse)
> 
> comp_wide <- comp_df %>%
+   pivot_wider(names_from = Komponenta,
+               values_from = Vrijednost)
> 
> line_df <- comp_wide %>%
+   mutate(
+     Trend          = B_Trend_komponenta,
+     TrendSeasonal  = B_Trend_komponenta * C_Sezonska_komponenta,
+     TrendCycle     = B_Trend_komponenta * D_Ciklicka_komponenta,
+     Original       = A_Izvoz_izvorni_podaci
+   ) |>
+   select(Datum, Original, Trend, TrendSeasonal, TrendCycle) |>
+   pivot_longer(-Datum,
+                names_to  = "Serija",
+                values_to = "Vrijednost") |>
+   mutate(
+     Serija = recode(Serija,
+       Original      = "A) Izvorni podaci",
+       Trend         = "B) Trend komponenta",
+       TrendSeasonal = "C) Sezonska komponenta",
+       TrendCycle    = "D) Ciklička komponenta")
+   )
> 
> ggplot(line_df,
+        aes(Datum, Vrijednost,
+            colour   = Serija,
+            linetype = Serija)) +
+   geom_line(linewidth = 0.9) +
+   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
+   scale_y_continuous(labels = scales::comma_format()) +
+   scale_colour_manual(values = c(
+     "A) Izvorni podaci" = "gray",
+     "B) Trend komponenta"          = "red",
+     "C) Sezonska komponenta" = "green",
+     "D) Ciklička komponenta" = "blue"
+   )) +
+   scale_linetype_manual(values = c(
+     "A) Izvorni podaci" = "solid",
+     "B) Trend komponenta"          = "solid",
+     "C) Sezonska komponenta" = "solid",
+     "D) Ciklička komponenta" = "solid"
+   )) +
+   labs(
+     title    = "Izvoz RH - izvorni podaci i komponente vremenskog niza",
+     x        = "Razdoblje",
+     y        = "Mil. EUR",
+     colour   = NULL,
+     linetype = NULL
+   ) +
+   theme_minimal(base_size = 11) +
+   theme(
+     axis.text.x     = element_text(angle = 90, vjust = .5, hjust = 1),
+     legend.position = "bottom"
+   )

Pri ilustraciji važnosti odabira ishodišta niza, korišten je skup podataka o dolascima turista te sljedeći kod:

> library(tidyverse)
> library(glue)
> library(patchwork)
> 
> tur2 <- read_excel("Dolasci_turista2.xlsx",
+                    col_types = c("text", "numeric")) |>
+   rename(godina_txt = 1,         # 1. stupac privremeno tekst
+          dolasci    = 2) |>      # 2. stupac već je numeric
+   mutate(godina = parse_number(godina_txt)) |>  # "2010." → 2010
+   select(godina, dolasci) 
> 
> 
> graf_lm <- function(df, naziv) {
+   
+   df <- df |> arrange(godina) |>
+     mutate(t = 0:(n() - 1))
+   
+   mod <- lm(dolasci ~ t, data = df)
+   koef <- broom::tidy(mod)$estimate       # β0 , β1
+   eq   <- glue("y = {round(koef[1],1)} + {round(koef[2],1)}t")
+   
+   ggplot(df, aes(godina, dolasci)) +
+     geom_point() +
+     geom_smooth(method = "lm", se = FALSE, colour = "red") +
+     scale_x_continuous(limits = c(2010, 2024),
+                        breaks  = seq(2010, 2024, 2),
+                        expand  = c(0, 0)) +
+     scale_y_continuous(limits = c(5000, 21000),
+                        breaks  = seq(5000, 21000, 5000),
+                        expand  = c(0, 0),
+                        labels  = scales::comma_format()) +
+     labs(
+       title = naziv,
+       subtitle = eq,
+       x = NULL, y = "Dolasci (tis.)"
+     ) +
+     theme_minimal(base_size = 11)
+ }
> 
> 
> g1 <- graf_lm(filter(tur2, godina %in% 2014:2019), "a) 2014-2019")
> g2 <- graf_lm(filter(tur2, godina %in% 2016:2021), "b) 2016-2021")
> g3 <- graf_lm(filter(tur2, godina %in% 2018:2023), "c) 2018-2023")
> g4 <- graf_lm(filter(tur2, godina %in% 2020:2024), "d) 2020-2024")
> g5 <- graf_lm(filter(tur2, godina %in% 2010:2019), "e) 2010-2019")
> g6 <- graf_lm(filter(tur2, godina %in% 2010:2024), "f) 2010-2024")
> 
> 
> (g1 | g2) / (g3 | g4) / (g5 | g6)

Prikaz dekompozicije vremenskog niza koristeći neparametrijske metode:

> stl_orig <- stl(izvoz_ts, s.window = "periodic")
> T_t      <- stl_orig$time.series[,"trend"]
> S_t      <- stl_orig$time.series[,"seasonal"]
> R_t      <- as.numeric(izvoz_ts) - T_t - S_t
> 
> library(mFilter)
> bp      <- cffilter(R_t, pl = 24, pu = 96, root = TRUE, drift = TRUE)
> C_t     <- bp$cycle   # u mil. EUR
> 
> izvoz      <- as.numeric(izvoz_ts)
> trend     <- as.numeric(T_t)       
> sezona    <- as.numeric(S_t)     
> ciklus    <- as.numeric(C_t)  
> 
> # Reziduali su ono što ostaje nakon uklanjanja trenda, sezone i ciklusa
> reziduali <- izvoz - trend - sezona - ciklus
> 
> comp <- tibble(
+   Datum     = df_wide$Datum,
+   A_Izvorni_podaci   = izvoz,
+   B_Trend     = trend,
+   C_Sezona    = sezona,
+   D_Ciklus    = ciklus,
+   E_Reziduali   = reziduali
+ )
> 
> comp_long <- comp %>%
+   pivot_longer(-Datum,
+                names_to  = "Komponenta",
+                values_to = "Vrijednost")
> 
> 
> ggplot(comp_long, aes(x = Datum, y = Vrijednost)) +
+   geom_line(colour = "steelblue") +
+   facet_wrap(~ Komponenta, ncol = 1, scales = "free_y") +
+   labs(x = NULL, y = "mil. EUR")

Izračun modela trenda:

> comp_trend <- stl_izvoz$time.series[, "trend"]
> 
> t         <- c(0:157)
> trend_lm  <- lm(comp_trend ~ t)
> coef(trend_lm)
## (Intercept)           t 
##  6.57357471  0.00686759

Izračun modela sezonske komponente:

> comp_seasonal <- stl_izvoz$time.series[, "seasonal"]
> M  <- 12
> s1 <- sin(2*pi*t/M);  c1 <- cos(2*pi*t/M)
> seas_harm <- lm(comp_seasonal ~ 0+s1 + c1)
> seas_harm
## 
## Call:
## lm(formula = comp_seasonal ~ 0 + s1 + c1)
## 
## Coefficients:
##       s1        c1  
## -0.02873  -0.02748

Izračun modela cikličke komponente:

> t    <- seq_along(C_t) - 1
> P    <- 60
> sinP <- sin(2*pi*t/P); cosP <- cos(2*pi*t/P)
> fitC <- lm(C_t ~ 0 + sinP + cosP)
> coef(fitC)
##     sinP     cosP 
## 2.571624 3.582457
> amp  <- sqrt(coef(fitC)[1]^2 + coef(fitC)[2]^2)
> amp
##     sinP 
## 4.409903

Ekstrapolacija i prognoza:

> fit <- stlm(izvoz_ts, s.window = "periodic", method = "ets")
> fc  <- forecast(fit, h = 36)
> autoplot(fc)

Izračun modela trenda za dolaske turista:

> tur <- data.frame(Godina = c(2010:2019),
+                   Dolasci_tis = c(10405,  11211,  11599,  12233,  12914,  14175,  15463,  17431,  18667,  19566))
> tur$Prekod_god <- c(0:9)
> 
> trend <- lm(Dolasci_tis~Prekod_god, tur)
> trend                                  
## 
## Call:
## lm(formula = Dolasci_tis ~ Prekod_god, data = tur)
## 
## Coefficients:
## (Intercept)   Prekod_god  
##        9600         1059

Izračun koeficijenta varijacije:

> sd(trend$residuals)/mean(tur$Dolasci_tis)*100
## [1] 4.396424

Izračun pomičnih prosjeka:

> library(zoo)
> tur <- tur %>%
+   mutate(
+     T3_total = rollapply(
+       Dolasci_tis,
+       width = 3,
+       FUN   = sum,
+       fill  = NA,
+       align = "center"
+     ),
+     T3_avg = ifelse(
+       is.na(T3_total),
+       NA,
+       T3_total / 3
+     ),
+     T5_total = rollapply(
+       Dolasci_tis,
+       width = 5,
+       FUN   = sum,
+       fill  = NA,
+       align = "center"
+     ),
+     T5_avg = ifelse(
+       is.na(T5_total),
+       NA,
+       T5_total / 5
+     )
+   )
> 
> knitr::kable(tur)
Godina Dolasci_tis Prekod_god T3_total T3_avg T5_total T5_avg
2010 10405 0 NA NA NA NA
2011 11211 1 33215 11071.67 NA NA
2012 11599 2 35043 11681.00 58362 11672.4
2013 12233 3 36746 12248.67 62132 12426.4
2014 12914 4 39322 13107.33 66384 13276.8
2015 14175 5 42552 14184.00 72216 14443.2
2016 15463 6 47069 15689.67 78650 15730.0
2017 17431 7 51561 17187.00 85302 17060.4
2018 18667 8 55664 18554.67 NA NA
2019 19566 9 NA NA NA NA

Prikaz izvornih podataka i pomičnih prosjeka:

> long_df <- tur %>% 
+   select(Godina, 
+          Izvorni = Dolasci_tis,
+          `PP3`  = T3_avg,
+          `PP5`  = T5_avg) %>% 
+   pivot_longer(-Godina,
+                names_to  = "Niz",
+                values_to = "Vrijednost") %>% 
+   drop_na(Vrijednost)           
> 
> 
> ggplot(long_df,
+        aes(x = Godina, y = Vrijednost, colour = Niz)) +
+   geom_line(size = 1) +
+   geom_point(size = 2) +
+   scale_colour_manual(values = c(
+     "Izvorni" = "black",
+     "PP3"    = "steelblue",
+     "PP5"    = "firebrick"
+   )) +
+   scale_y_continuous(labels = scales::comma_format(suffix = " tis.")) +
+   labs(title   = "Dolazak turista - izvorni niz i pomični prosjeci",
+        x       = "Godina",
+        y       = "Broj dolazaka",
+        colour  = NULL) +
+   theme_minimal(base_size = 11)

Prikaz dva postupka desezoniranja:

> library(dplyr)
> library(lubridate)
> library(zoo)
> library(knitr)
> 
> # originalni mjesečni niz (df_wide$Datum, df_wide$Izvoz)
> serija   <- df_wide %>% 
+   arrange(Datum) %>% 
+   mutate(Izvoz = as.numeric(Izvoz))
> 
> # 12-mj. centrirani pomični prosjek:
> serija <- serija %>% 
+   mutate(
+     PP12 = rollmean(Izvoz, 12, fill = NA, align = "center"),     # centred
+     Ratio = Izvoz / PP12
+   )
> 
> # prosječni sezonski indeks za svaki mjesec (skaliran da prosjek bude 1):
> SI <- serija %>% 
+   mutate(Mjesec = month(Datum)) %>% 
+   group_by(Mjesec) %>% 
+   summarise(SI = mean(Ratio, na.rm = TRUE)) %>% 
+   mutate(SI = SI / mean(SI, na.rm = TRUE))      # skaliranje
> 
> # spajanje natrag i izračun desezoniranog iznosa + sezonskih razlika
> serija <- serija %>% 
+   mutate(Mjesec = month(Datum)) %>% 
+   left_join(SI, by = "Mjesec") %>% 
+   mutate(
+     Desez = Izvoz / SI,
+     Lag12 = lag(Izvoz, 12),
+     SeasDiff = Izvoz - Lag12
+   )
> 
> # tablica samo za 2024. godinu
> tab24 <- serija %>% 
+   filter(year(Datum) == 2024) %>% 
+   transmute(
+     Mjesec = format(Datum, "%b %Y"),
+     `y_t`     = round(Izvoz    , 0),
+     `y_{t-12}`= round(Lag12    , 0),
+     `y_t - y_{t-12}` = round(SeasDiff , 0),
+     `PP_{12}`= round(PP12    , 1),
+     `y_t / PP_{12}`= round(Ratio , 2),
+     `Sezonski_indeks`      = round(SI , 2),
+     `Desezonirani_niz`   = round(Desez , 0)
+   )
> 
> kable(tab24, align = "r", caption = 
+         "Desezoniranje mjesečnog izvoza - prikaz pomoćnih stupaca za 2024.")
Desezoniranje mjesečnog izvoza - prikaz pomoćnih stupaca za 2024.
Mjesec y_t y_{t-12} y_t - y_{t-12} PP_{12} y_t / PP_{12} Sezonski_indeks Desezonirani_niz
sij 2024 1741 1681 60 1958.9 0.89 0.86 2027
vlj 2024 1879 1777 102 1951.5 0.96 0.94 1997
ožu 2024 2005 2397 -392 1960.3 1.02 1.05 1910
tra 2024 2019 1807 212 1974.7 1.02 0.95 2117
svi 2024 2030 1923 107 1980.7 1.02 1.01 2009
lip 2024 1891 1917 -26 2004.6 0.94 1.00 1885
srp 2024 2388 1839 549 2021.6 1.18 1.08 2205
kol 2024 1577 1666 -89 2033.8 0.78 0.88 1788
ruj 2024 1994 1888 106 NA NA 1.06 1882
lis 2024 2261 2089 172 NA NA 1.09 2071
stu 2024 2182 2110 72 NA NA 1.09 1999
pro 2024 2088 1801 287 NA NA 0.98 2141

Grafički prikaz izvornih i desezoniranih podataka:

> library(dplyr)
> library(tidyr)
> library(ggplot2)
> library(lubridate)
> library(scales)
> 
> 
> tab24 <- tab24 |>                              
+   mutate(
+     # pretvaramo "sij 2024", "vlj 2024" … u Date (1. dan u mjesecu)
+     Datum = dmy(paste0("01 ", Mjesec)),
+     # za ljepši prikaz x-osi
+     MjesecLab = month(Datum, label = TRUE, abbr = TRUE)
+   )
> 
> line_df <- tab24 %>% 
+   select(
+     Datum,
+     Izvorni_podaci = y_t,
+     Desezonirani_niz   = Desezonirani_niz
+   ) %>% 
+   pivot_longer(-Datum, names_to = "Serija", values_to = "Vrijednost") %>% 
+   drop_na(Vrijednost)
> 
> 
> ggplot(line_df, aes(Datum, Vrijednost, colour = Serija)) +
+   geom_line(size = 1) +
+   geom_point(size = 2) +
+   scale_colour_manual(values = c(
+     "Izvorni_podaci"  = "black",
+     "Desezonirani_niz"    = "steelblue"
+   ),
+   labels = c("Desezonirani niz",
+              "Izvorni podaci"
+   )) +
+   scale_x_date(date_breaks = "1 month",
+                date_labels = "%b",
+                expand = c(.01, .01)) +
+   scale_y_continuous(labels = comma) +
+   labs(title = "Izvoz - izvorni i deseazonirani niz (2024.)",
+        x = NULL, y = "mil. EUR", colour = NULL) +
+   theme_minimal(base_size = 11)


Provedba postupka koristeći MS Excel


Za kreiranje grafova s dolascima turista prikazanim u poglavlju Ishodište vremenskog niza u MS Excelu prvo moramo pripremiti podatke, a potom umetnuti graf. Priprema podataka podrazumijeva izdvajanje podataka za svaki graf, a potom prekodiranje vremena.

Ovdje je prikazan postupak za kreiranje dva grafa. Ostale grafove možete kreirati samostalno slijedeći isti postupak.


Slijedi postupak primjene metode najmanjih kvadrata pri izračunu trenda. Iako, mogli ste uočiti da jednadžbu trenda možete dobiti i pri kreiranju grafa.

Rezultati:

alternativni pristup je

Alternativni pristup za prognoziranje pomoću vremenskog niza je korištenje ugrađene funkcije TREND()

što daje rezultat:

Dodatni primjeri/mogućnosti:

Metoda pomičnih prosjeka:

što daje rezultat:

Postupak desezoniranja i rezultati:


Provjera odgovora


  1. B; 2. C; 3. A; 4. C; 5. B; 6. C; 7. C; 8. C; 9. D; 10. B; 11. A; 12. A; 13. C; 14. B; 15.C; 16. A; 17. A; 18. B; 19. B; 20. B.


Literatura i izvori


Državni zavod za statistiku. (2019). Statistički ljetopis 2018 PDF

Državni zavod za statistiku. (2023a). Godišnji bruto domaći proizvod za razdoblje 1995. - 2022., revidirani podaci Excel datoteka

Državni zavod za statistiku. (2023b). Kultura: Broj posjeta kinima po godinama Excel datoteka

Državni zavod za statistiku. (2024a). Dolasci i noćenja turista Excel datoteka

Državni zavod za statistiku. (2024b). Prosječne maloprodajne cijene dobara i usluga u kunama i u eurima Excel datoteka

Državni zavod za statistiku. (2024c). Poljoprivreda, šumarstvo i ribarstvo: Kravlje mlijeko i mliječni proizvodi Excel datoteka

Državni zavod za statistiku. (2025). Robna razmjena s inozemstvom Excel datoteka

Excel, M. S. (2007). Microsoft Excel. Denver Co., USA.

Grolemund, G., & Wickham, H. (2011). lubridate: Make Dealing with Dates Easier

Hadley, W. (2020). glue: Interpreted String Literals

Holmes, A., Illowsky, B., & Dean, S. (2017). Introductory Business Statistics 2e. OpenStax.https://openstax.org/books/introductory-business-statistics/pages/preface

Hornik, K. (2012). The comprehensive R archive network. Wiley interdisciplinary reviews: Computational statistics, 4(4), 394-398.

Horvat, J., & Mijoč, J. (2018). Osnove statistike, treće dopunjeno izdanje. Zagreb: Ljevak.

Hyndman, R. J., & Athanasopoulos, G. (2018). mFilter: Miscellaneous Time Series Filters

Hyndman, R. J., & Khandakar, Y. (2008). forecast: Forecasting Functions for Time Series and Linear Models

Illowsky, B., & Dean, S. (2018). Introductory statistics. https://openstax.org/books/introductory-statistics-2e/pages/preface

JASP Team (2024). JASP (Version 0.19.3)[Computer software].

Kostelić, K. & Etinger, D. (2024). Uvod u R i RStudio. Sveučilište Jurja Dobrile u Puli. https://bookdown.org/kakoste/Uvod_u_R_i_RStudio/

Moore, D. S., McCabe, G. P., and Craig, B. A. (2012). Introduction to the Practice of Statistics (7th ed.). New York: Freeman

Müller, K., & Wickham, H. (2020). scales: Scale Functions for Visualization

NASA Goddard Institute for Space Studies. GISS Surface Temperature Analysis (GISTEMP), global mean surface temperature data

Pedersen, T. L. (2020). patchwork: The Composer of Plots

Robinson, D., & Hayes, A. (2021). broom: Convert Statistical Objects into Tidy Tibbles

Smyth, G. (2021). knitr: A General-Purpose Package for Dynamic Report Generation in R

Šošic, I. (2004). Primijenjena statistika. Skolska knjiga, Zagreb.

Wickham, H., & Wickham, M. H. (2017). Package ‘tidyr’. Easily Tidy Data with’spread’and’gather ()’Functions.

Wickham, H., & Wickham, M. H. (2019). Package ‘stringr’. Website: http://stringr. tidyverse. org, https://github. com/tidyverse/stringr.

Wickham, H., & Wickham, M. H. (2023). Package ‘httr’.

Wickham, H., Bryan, J., Kalicinski, M., Valery, K., Leitienne, C., Colbert, B., … & Bryan, M. J. (2019). Package ‘readxl’. Version, 13, 1.

Wickham, H., Chang, W., & Wickham, M. H. (2016). Package ‘ggplot2’. Create elegant data visualisations using the grammar of graphics. Version, 2(1), 1-189.

Wickham, H., Francois, R., Henry, L., & Müller, K. (2014). dplyr. A Grammar of Data Manipulation 2020 [Last accessed on 2020 Aug 12] Available from, Rproject.

Yarberry, W., & Yarberry, W. (2021). Dplyr. CRAN recipes: DPLYR, stringr, lubridate, and regex in R, 1-58.

Zeileis, A., & Grothendieck, G. (2005). zoo: S3 Infrastructure for Regular and Irregular Time Series