Trendovi u vremenskim serijama mogu biti stohastički ili deterministički. Možemo smatrati da je trend stohastički ako na njemu vidimo promene u kretanju koje se ne mogu objasniti nekom pogodnom funkcijom vremena, a uočljive prolazne trendove pripisujemo jakoj serijskoj korelaciji sa slučajnom greškom. Trendovi ovog tipa su česti u serijama vezanim za finansije i mogu biti simulirani u R-u koristeći modele kao što su slučajno lutanje ili autoregresivni proces. S druge strane, kada imamo neko razumno fizičko objašnjenje trenda, to želimo i da iskoristimo i objasnimo trend deterministički. Na primer, deterministički rastući trend može biti posledica porasta populacije, a neke promene koje se ciklično ponavljaju mogu nastati zbog određene sezonske komponente. Deterministički trendovi i sezonske varijacije mogu se modelovati pomoću regresije.
Praktična razlika između stohastičkih i determinističkih trendova je da determinističke možemo ekstrapolirati radi prognoziranja budućeg ponašanja serije. Opravdavamo kratkoročnu ekstrapolaciju time da se trend ne može značajno promeniti u toku vremenskog intervala za koji pravimo predviđanje. Iz istog razloga, za kratkoročnu ekstrapolaciju trenda više se preporučuje aproksimacija pravom nego nekim polinomom višeg reda, i to ponekad uzimajući u obzir samo podatke iz bliske prošlosti.
Regresija kod vremenskih serija se najčešće razlikuje od standardne regresione analize jer su reziduali, koji takođe čine jednu vremensku seriju, najčešće serijski korelisani. Kada je serijska korelacija pozitivna, ocene standardnih grešaka ocenjenih parametara, koje u R-u dobijamo primenjujući standardni postupak za regresionu analizu, teže da budu manje od njihovih stvarnih vrednosti. Zbog toga se statističkim testovima dodeljuje veća značajnost nego što bi trebalo (p-vrednosti testova su manje nego što treba da budu) u standardnom izlazu koji se dobija u R-u.
Kažemo da je model vremenske serije \(\{x_t : t = 1, ... , n\}\) \(\textit{linearan}\) ako se može napisati u obliku gde je vrednost \[x_t = \alpha_0 + \alpha_1 u_{1,t} + \alpha_2 u_{2,t} + ... + \alpha_m u_{m,t} + z_t (1) \] gde je \(u_{i,t}\) vrednost \(\textit{i}\)-te promenljive objašnjenja u trenutku \(\textit{t }(\textit{i = 1, ... , m; t = 1, ... , n})\) \(\{z_t\}\) greška u trenutku \(\textit{t}\), a \(\alpha_0, \alpha_1, ... , \alpha_m\) su parametri modela, koji mogu biti ocenjeni metodom najmanjih kvadrata. Greške formiraju vremensku seriju \(\{z_t\}\), sa funkcijom srednje vrednosti koja je identički jednaka nuli, koja ne mora da bude Gausova, niti beli šum. Primer linearnog modela je polinom \(\textit{p}\)-tog stepena u funkciji od \(\textit{t}\):
\[x_t = \alpha_0 + \alpha_1 t + \alpha_2 t^2 + ... + \alpha_p t^p + z_t (2)\]
Promenljive objašnjenja u ovom slučaju su \(u_{i,t} = t^i (i = 1, ... , p)\). Izraz “linearan” ovde se odnosi na linearnost u odnosu na parametre, a ne prediktore.
Jednostavan primer linearnog modela je prava, čija se jednačina dobija zamenom \(p = 1\) u jednačini (2): \(x_t = \alpha_0 + \alpha_1 t + z_t\). U ovom slučaju, vrednost trenda u trenutku \(t\), je tačka sa prave, tj. \(m_t = \alpha_0 + \alpha_1 t\). Za polinome višeg reda, vrednost trenda u trenutku \(t\) je vrednost polinoma iz jednačine (2) u tački \(t\), tj. \(m_t = \alpha_0 + \alpha_1 t + \alpha_2 t^2 + ... + \alpha_p t^p\)
Mnogi nelinearni modeli mogu biti transformisani u linearne. Na primer, model \(x_t = e^{\alpha_0 + \alpha_1 t + z_t}\) vremenske serije \(\{x_t\}\) može biti transformisan u linearni logaritmovanjem. \[y_t = \log{x_t} = \alpha_0 + \alpha_1 t + z_t (3)\]
Linearni model vremenske serije biće nestacionaran ako sadrži neke funkcije koje zavise od vremena. Diferenciranje često može transformisati nestacionarnu seriju sa determinističkim trendom u stacionarnu. Na primer, ako je \(\{x_t\}\) vremenska serija koje se modeluje linijskim trendom na koji je dodat beli šum \(x_t = \alpha_0 + \alpha_1 t + z_t\),𝑥𝑡 onda je jednom diferencirana serija zadata sa: \[∇x_t = x_t - x_{t-1} = z_t - z_{t-1} + \alpha_1 (4)\] Ako važi da je serija grešaka \(\{z_t\}\) stacionarna, onda je i serija \(\{∇x_t \}\), jer je funkcija srednje vrednosti konstantna i korelaciona funkcija zavisi samo od dužine vremenskog intervala. Diferenciranje može da transformiše nestacionarnu seriju sa stohastičkim trendom u stacionarnu (primer je slučajno lutanje), što znači da diferenciranje može ukloniti i stohastički i deterministički trend iz serije. Ako je trend polinom stepena \(m\)𝑚, početnu seriju treba diferencirati \(m\) 𝑚 puta da bi se uklonio trend.
Uobičajeno je da vremenske serije grešaka \(\{z_t\}\), iz jednačine (1), bude autokorelisana. Navodimo kod kojim se simulira i grafički predstavlja vremenska serija sa rastućim linearnim trendom \(m_t = 50 + 3t\) i autokorelisanim rezidualima.
set.seed(1)
z <- w <- rnorm(100, sd = 20)
for (t in 2 : 100) {
z[t] <- 0.8 * z[t-1] + w[t]
}
t <- 1 : 100
x <- 50 + 3 * t + z
plot(x, xlab = "vreme", type = "l")
Model koji odgovara navedenom kodu se može izraziti kao \(x_t = 50 + 3t + z_t\) gde je \(\{z_t\}\) jedan AR(1) proces zadat sa \(z_t = 0.8z_{t-1} + w_t\) pri čemu je \(\{w_t\}\) Gausovski beli šum sa standardnim odstupanjem \(\sigma = 20\). Grafik dobijene vremenske serije (u zavisnosti od vremena) prikazan je na prethodnoj slici.
Linearni modeli se najčešće formiraju minimiziranjem sume kvadrata reziduala
\[\sum_{i=1}^{n} z_t^2 = \sum_{i=1}^{n} (x_t - \alpha_0 - \alpha_1 u_{1,t} - \alpha_2 u_{2,t} - ... - \alpha_m u_{m,t})^2 \]
što se u R-u postiže primenom funkcije lm, na sledeći način :
x.lm <- lm(x~t)
coef(x.lm)
## (Intercept) t
## 58.551218 3.063275
vcov(x.lm)
## (Intercept) t
## (Intercept) 23.815013 -0.355447951
## t -0.355448 0.007038573
sqrt(diag(vcov(x.lm)))
## (Intercept) t
## 4.88006278 0.08389621
Ocene parametara linearnog modela se mogu izdvojiti ekstraktorskom funkcijom coef. Primetimo da su, kao što je i očekivano, ocene bliske vrednostima parametara koje smo zadali prilikom simulacije: ocenjena vrednost za intercept (presek sa \(x\)𝑥-osom) je 58.55, što je relativno blisko broju 50, a nagib prave (koeficijent uz \(t\)𝑡) je 3.06 ≈ 3. Standardne greške se mogu dobiti kao kvadratni koreni elemenata na glavnoj dijagonali matrice koju čine ocenjene kovarijacije između ocenjenih parametara linearnog modela. Ugrađena funkcija u R-u koja daje tu matricu je vcov, a kao argument joj se prosleđuje posmatrani linearni ili nelinearni model. Međutim, ovako dobijene vrednosti standardnih grešaka su često potcenjene zbog autokorelacije reziduala.
Nakon fitovanja odgovarajućeg modela, možemo razmotriti razne dijagnostičke grafike. U slučaju regresije vremenskih serija, jedan od veoma bitnih dijagnostičkih grafika je korelogram reziduala. Autokorelacija (serijska korelacija) je korelacija između vrednosti vremenske serije u različitim vremenskim trenucima. Parcijalna autokorelacija sa kašnjenjem k je korelacija između \(x_t\) i \(x_{t-k}\) nakon što je eliminisan uticaj svih elemenata između. Grafik autokorelacione funkcije naziva se korelogram, a grafik parcijalne autokorelacione funkcije – parcijalni korelogram. U R-u, funkcije acf i pacf redom računaju ocenjenu (na osnovu realizovane vremenske serije) autokorelacionu, odnosno parcijalnu autokorelacionu funkciju i po default-u crtaju odgovarajuće korelograme. Kao argument tim funkcijama prosleđujemo seriju reziduala, koja se iz modela izdvaja pomoću funkcije resid.
acf(resid(x.lm))
pacf(resid(x.lm))
Kao što je očekivano, sa prvog grafika vidimo da je serija reziduala autokorelisana, zato što više od 5% vrednosti izlazi van segmenta ograničenog plavim isprekidanim linijama. Drugi grafik ukazuje na to da je samo parcijalna autokorelacija sa kašnjenjem 1 značajna, što implicira da serija reziduala predstavlja AR(1) proces. Ovakav rezultat je očekivan, s obzirom da smo prilikom simulacije reziduala koristili upravo AR(1) proces. Uzgred, primetimo da acf računa korelacije za kašnjenja počevši od nule, dok pacf računa počevši od jedinice.
Navešdemo primer linearog regresionog modela koji odgovara podacima o indeksima potrošačkih cena u Sjedinjenim Američkim Državama. Indeksi potrošačkih cena (Consumer Price Indexes (CPI)) definišu se kao mera prosečne promene maloprodajnih cena robe i usluga koje se koriste za ličnu potrošnju tipičnog potrošača. Koristi se za praćenje promena troškova života u vremenu. Kada CPI raste, tipično domaćinstvo troši više novca da bi se održao isti nivo potrošnje, tj. životnog standarda. Pomodu CPI mogu se prepoznati periodi inflacije i deflacije. Inflacija je stanje u privredi kada opšti nivo cena raste, a stopa inflacije je procentualna promena CPI u odnosu na neki raniji period. Nagli porast vrednosti CPI u kratkom vremenskom periodu može ukazati na period inflacije, dok nagli pad ukazuje na period deflacije. Baza podataka je preuzeta sa linka http://research.stlouisfed.org/fred2/series/CPIAUCSL/downloaddata. Sadrži vrednosti indeksa potrošačkih cena u periodu od januara 1947. do marta 2015. godine. Nakon učitavanja baze, koristimo funkciju ts koja kreira objekat klase vremenske serije i zadajemo početni i krajnji trenutak, kao i frekvenciju (frequency = 12, s obzirom da su mesečni podaci u pitanju).
baza <- read.table("D:/FAX_POSAO/VREMENSKE_SERIJE/2018-2019/6cas/CPIAUCSL.txt", header = F)
serija <- ts(baza$V2, start = c(1947,1), end = c(2015,3), frequency = 12)
plot(serija, xlab = "vreme", ylab = "CPI", main = "Consumer Price Index for All Urban Consumers")
Sa grafika se jasno vidi da postoji rastući deterministički trend, koji je u periodu od 1947. do oko 1975. godine rastao sporijim tempom u odnosu na naredne godine u kojima je rast bio brži, sve do današnjeg dana. Takođe, možemo uočiti skok i odmah zatim pad nivoa u 2009. godini, što je verovatno bila posledica svetske ekonomske krize. Izdvojićemo podatke od 1980. do 2007. godine kako bismo im pridružili odgovarajući linearni model, s obzirom da su indeksi potrošačkih cena u tom periodu pratili približno linearni trend. Vreme je jedini prediktor modela, pa ćemo funkcijom time izdvojiti vremenske trenutke iz ts objekta.
cpi <- window(serija, start = c(1980,1), end = c(2007,12))
cpi.lm <- lm(cpi ~ time(cpi))
plot(cpi, xlab = "vreme", ylab = "CPI", main = "Consumer Price Index (1980 - 2007)")
abline(cpi.lm, lty = 2, lwd = 2, col = "goldenrod1")
summary(cpi.lm)
##
## Call:
## lm(formula = cpi ~ time(cpi))
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.4168 -1.9114 0.2692 1.4515 5.4432
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -8.611e+03 2.617e+01 -329.0 <2e-16 ***
## time(cpi) 4.391e+00 1.313e-02 334.5 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.945 on 334 degrees of freedom
## Multiple R-squared: 0.997, Adjusted R-squared: 0.997
## F-statistic: 1.119e+05 on 1 and 334 DF, p-value: < 2.2e-16
Kako je Adjusted R-squared: 0.997, možemo zaključiti da model gotovo savršeno odgovara podacima.
confint(cpi.lm)
## 2.5 % 97.5 %
## (Intercept) -8662.458216 -8559.487895
## time(cpi) 4.365286 4.416926
acf(resid(cpi.lm))
Funkcijom confint određujemo 95%-tni interval poverenja za parametre modela. Interval poverenja za nagib prave ne sadrži nulu, što predstavlja statističko objašnjenje za postojanje trenda, u slučaju da je autokorelacija reziduala zanemarljiva. Međutim, serija reziduala je pozitivno autokorelisana, što dovodi do toga su vrednosti standardnih grešaka ocenjenih parametara manje nego što bi trebalo da budu, a samim tim su i intervali poverenja uži. Ukoliko u vremenskoj seriji postoji izraženi trend, onda autokorelaciona funkcija opada od jedinice skoro linearno, kao što je slučaj u ovom primeru.
U regresiji vremenskih serija uobičajeno je i očekivano da serija reziduala bude autokorelisana. Kao što je već rečeno, u slučaju pozitivne serijske korelacije u seriji reziduala, standardne greške ocenjenih parametara imaju tendenciju da budu potcenjene, pa bi stoga trebalo izvršiti korekciju. Uopšteni metod najmanjih kvadrata (generalised least squares (GLS)) se može koristiti za dobijanje boljih ocena standardnih grešaka parametara regresije, tako da te ocene objašnjavaju autokorelaciju reziduala. Ovaj metod se bazira na maksimiziranju verodostojnosti ukoliko je data autokorelacija podataka. Odgovarajuda funkcija u R-u se naziva gls i nalazi se u paketu nlme.
Naredni primer ilustruje upotrebu funkcije gls kojim se fituje model vremenskoj seriji sa kojom smo se već susreli.
library(nlme)
x.gls <- gls(x ~ t, cor = corAR1(0.8))
summary(x.gls)
## Generalized least squares fit by REML
## Model: x ~ t
## Data: NULL
## AIC BIC logLik
## 862.8866 873.2265 -427.4433
##
## Correlation Structure: AR(1)
## Formula: ~1
## Parameter estimate(s):
## Phi
## 0.7161368
##
## Coefficients:
## Value Std.Error t-value p-value
## (Intercept) 58.23302 11.924568 4.883449 0
## t 3.04225 0.202445 15.027538 0
##
## Correlation:
## (Intr)
## t -0.857
##
## Standardized residuals:
## Min Q1 Med Q3 Max
## -1.6171329 -0.6195428 0.0353972 0.5836326 2.3184155
##
## Residual standard error: 25.58595
## Degrees of freedom: 100 total; 98 residual
sqrt(diag(vcov(x.gls)))
## (Intercept) t
## 11.9245679 0.2024447
Argumentom cor = corAR1(0.8) precizira se da je autokorelacija sa kašnjenjem 1 jednaka 0.8 (zato što je ta vrednost korišćena prilikom ranije simulacije podataka). U slučaju realnih podataka, tj. neke vremenske serije koja je nastala na osnovu podataka iz prošlosti, autokorelacija sa kašnjenjem 1 se procenjuje na osnovu korelograma reziduala fitovanog linearnog modela. To znači da prvo mora da se napravi linearni model običnom metodom najmanjih kvadrata i da se, zatim, iz korelograma reziduala tog modela očita vrednost autokorelacije sa kašnjenjem 1.
U navedenom primeru, standardne greške parametara modela su 11.925 za presek sa \(x\)𝑥-osom i 0.202 za nagib prave, tj. znatno su vede od standardnih grešaka dobijenih primenom obične metode najmanjih kvadrata (u poglavlju 3), koje su iznosile 4.88 za presek sa \(x\)𝑥-osom i 0.084 za nagib. Ocene standardnih grešaka koje su dobijene pomodu gls su tačnije, zato što uzimaju u obzir serijsku korelaciju reziduala. Mogu se pročitati iz izlaza koji daje funkcija summary ili se mogu “ručno” odrediti naredbom sqrt(diag(vcov(x.gls))).
Takođe, možemo primetiti da se ocene samih parametara dva posmatrana modela malo razlikuju, zbog ponderisanja. Na primer, nagib prave iznosi 3.06 prema lm modelu, odnosno 3.04 prema gls modelu.
Da bismo odredili 95%-tni interval poverenja za trend u seriji sa indeksima potrošačkih cena, tako da serijska korelacija u seriji reziduala bude uzeta u obzir, koristimo funkciju gls. Kao argument funkcije gls navodimo da serija reziduala otprilike prati AR(1) proces sa autokorelacijom sa kašnjenjem 1 koja iznosi 0.959, što se može očitati sa korelograma …
acf(resid(cpi.lm))[1]
##
## Autocorrelations of series 'resid(cpi.lm)', by lag
##
## 1
## 0.959
cpi.gls <- gls(cpi ~ time(cpi), cor = corAR1(0.959))
confint(cpi.gls)
## 2.5 % 97.5 %
## (Intercept) -10352.056812 -8421.215908
## time(cpi) 4.318123 5.242116
Iako su intervali poverenja sada širi nego prilikom prethodne, nula i dalje nije sadržana u intervalima, što znači da su ocene parametara statistički značajne. Stoga, postoji statistički dokaz rastudeg trenda za vrednosti CPI u periodu od 1980. do 2007. godine, i očekuje se da se takav trend nastavi u narednim godinama.
Kako vremenske serije predstavljaju opservacije merene u toku vremena, sezonske komponente se često javljaju u podacima, posebno godišnje ciklične promene koje su direktna ili indirektna posledica kretanja Zemlje oko Sunca. U ovom odeljku ćemo razmatrati linearne regresione modele sa prediktorima koji opisuju efekat sezonskih promena.
Neka vremenska serija sadrži \(s\)𝑠 sezona. Na primer, kod vremenskih serija gde se podaci beleže svakog kalendarskog meseca, \(s\)𝑠 = 12, odnosno kod serija kod kojih su kvartalni podac, \(s\) 𝑠 = 4. Sezonski indikatorski model za seriju \(\{x_t : t = 1, ... , n\}\) koja ima \(s\) sezona i trend \(m_t\) zadat je sa: \[x_t = m_t + s_t + z_t\] gde je \(s_t = \beta_i\) ukoliko se trenutak \(t\) javlja u \(i\)-toj sezoni \((\textit{t = 1, ... , n; i = 1, ... , s})\), \(\{z_t\}\) serija reziduala, koja može biti autokorelisana. Ovaj model ima isti oblik kao aditivna dekompozicija modela, ali se razlikuje u parametrima koji definišu trend. U prethodnoj jednakosti \(m_t\) nema slobodan član (intercept), npr. \(m_t\) bi mogao da bude polinom stepena \(p\) sa koeficijentima \(\alpha_1, ... , \alpha_p\). Dakle, ova jednakost je ekvivalentna polinomijalnom trendu u kome slobodan član zavisi od sezone, tako da sezonskim parametrima \(\beta_1, ... , \beta_s\) odgovara \(s\) mogućih slobodnih članova jednakosti (2). Prethodna jednakost se drugačije može zapisati: \[x_t = m_t + \beta_{1 + ((t - 1) \mod s)} + z_t\] Na primer, za vremensku seriju \(\{x_t\}\) čije su vrednosti beležene svakog meseca počevši sa \(t\) = 1 u januaru, sezonski indikatorski modeli sa linearnim trendom zadat je na sledeći način: \[x_t = \alpha_1t + s_t + z_t =\left\{\begin{matrix} \alpha_1t + \beta_1 + z_t &t=1, 13, ... \\ \alpha_1t + \beta_2 + z_t &t=2, 14, ... \\ ... \\ \alpha_1t + \beta_{12} + z_t &t=12, 24, ... \end{matrix}\right. \] Parametri prethodnog modela mogu se oceniti običnom ili uopštenom metodom najmanjih kvadrata, tretirajući sezonsku komponentu kao faktor. U R-u se funkcija factor može primeniti na sezonske indekse koji iz vremenske serije mogu izdvojiti funkcijom cycle.
Ilustrovaćemo opisani model na primeru vremenske serije koja beleži broj nezaposlenih žena u Sjedinjenim Američkim Državama u periodu od januara 1948. do aprila 2015. godine.
women <- read.table("D:/FAX_POSAO/VREMENSKE_SERIJE/2018-2019/6cas/LNU03000002.txt", header = T)
wmn <- ts(women$X562, start = c(1948, 1), end = c(2015, 4), frequency = 12)
plot(wmn, xlab = "vreme", ylab = "hiljada osoba", main = "Nezaposlenost žena")
Na \(y\)𝑦-osi je naznačeno da ova vremenska serija prati koliko hiljada žena je nezaposleno u određenom vremenskom trenutku. Kao što možemo videti sa grafika, gledano na duže staze, deluje kao da postoji izvestan rastući trend, što je verovatno posledica porasta broja stanovnika u SAD-u u poslednjih šezdesetak godina (s obzirom da se posmatra broj, a ne procenat, nezaposlenih). Takođe, uočava se i nagli skok u broju nezapolenih u 2009. i 2010. godini, zbog svetske ekonomske krize.
Ukoliko se nacrta grafik za kradi vremenski interval, postojanje sezonske komponente je sasvim uočljivo. U okviru jedne godine, najviši je nivo nezapolenosti u letnjim mesecima (jul i avgust), a najmanji u periodu pre Nove godine (novembar i decembar) i u aprilu.
sezone <- cycle(wmn)
vreme <- time(wmn)
wmn.lm <- lm(wmn ~ 0 + vreme + factor(sezone), data = wmn)
Bitna stavka u regresionoj analizi vremenskih serija je predviđanje bududnosti na osnovu podataka iz prošlosti. Pritom se koristi ekstrapolacija odabranog modela, tj. nalaze se vrednosti u bududim trenucima. Glavni problem ovakvog pristupa je u tome što se trend može promeniti u budućnosti. Zbog toga je bolje gledati na predviđanje, koje se bazira na regresionom modelu, kao na očekivanu vrednost pod uslovom da se trend iz prošlosti nastavlja i u budućnosti.
Sada ćemo odrediti dvadesetomesečnu prognozu budućeg broja nezposlenih žena, pomoću već napravljenog modela. U narednom kodu, prvo kreiramo vremenske trenutke koji odgovaraju mesecima počev od januara 2015. do decembra 2016. a zatim odstranjujemo prva 4 meseca, zato što već imamo realizovane vrednosti zaključno sa aprilom 2015. i time dobijamo vektor new.t sa budućim vremenskim trenucima.
Prvo navodimo “ručno izračunatu” prognozu: nagib prave koja predstavlja trend je alpha, dok beta čine sezonski parametri, pa su tada prognozirane vrednosti (alpha * new.t + beta).
new.t <- seq(2015, len = 2 * 12, by = 1/12)[5 : 24]
new.t
## [1] 2015.333 2015.417 2015.500 2015.583 2015.667 2015.750 2015.833
## [8] 2015.917 2016.000 2016.083 2016.167 2016.250 2016.333 2016.417
## [15] 2016.500 2016.583 2016.667 2016.750 2016.833 2016.917
alpha <- coef(wmn.lm)[1]
beta <- rep(coef(wmn.lm)[2 : 13], 2)[5 : 24]
(alpha * new.t + beta)
## factor(sezone)5 factor(sezone)6 factor(sezone)7 factor(sezone)8
## 5219.573 5212.543 5106.857 5005.290
## factor(sezone)9 factor(sezone)10 factor(sezone)11 factor(sezone)12
## 4885.021 4859.633 4663.305 5021.170
## factor(sezone)1 factor(sezone)2 factor(sezone)3 factor(sezone)4
## 4976.434 4890.140 4764.346 4842.949
## factor(sezone)5 factor(sezone)6 factor(sezone)7 factor(sezone)8
## 5281.634 5274.604 5168.918 5067.351
## factor(sezone)9 factor(sezone)10 factor(sezone)11 factor(sezone)12
## 4947.082 4921.694 4725.365 5083.231
Alternativno, može se koristiti generička funkcija za predviđanje u R-u, koja se naziva predict. Kao parametri joj se prosleđuju fitovani model i novi podaci (novi vremenski trenuci, u slučaju analize vremenskih serija) u kojima želimo da odredimo prognozirane vrednosti. Posebno treba obratiti pažnju na to da novi podaci budu adekvatno definisani i imenovani u okviru objekta klase data.frame. Neophodno je da kolone budu imenovane isto kao prediktori modela (vreme i sezone, u ovom primeru). U suprotnom, R će javiti grešku.
new.dat <- data.frame(vreme = new.t, sezone = c(5 : 12, 1 : 12))
predict(wmn.lm, new.dat)
## 1 2 3 4 5 6 7 8
## 5219.573 5212.543 5106.857 5005.290 4885.021 4859.633 4663.305 5021.170
## 9 10 11 12 13 14 15 16
## 4976.434 4890.140 4764.346 4842.949 5281.634 5274.604 5168.918 5067.351
## 17 18 19 20
## 4947.082 4921.694 4725.365 5083.231
Na oba načina dobijaju se iste vrednosti.
Veliku zahvalnost dugujemo Anici Kostić i Mili Vukmirović za odlično urađen, ali pre svega, dostupan seminarski rad na temu regresija u vremenskim serijama. :)