Úvod
V tomto cvičení analyzujem ekonomické ukazovatele z datasetu
economics.csv, ktorý obsahuje časové rady ekonomických
premenných v USA (napr. nezamestnanosť, osobné príjmy, spotreba a pod.).
Dáta začínajú v júli 1967 a končia v roku 2015, takže pokrývajú takmer
48 rokov ekonomického vývoja. Cieľom je ukázať, ako v R realizovať
ekonometrickú analýzu – testovanie stacionarity, modelovanie a
diagnostiku chybných štruktúr.
Príprava prostredia
library(zoo)
library(tseries)
library(lmtest)
library(sandwich)
library(car)
library(ggplot2)
rm(list=ls())
# Nastavenie pracovného adresára (uprav podľa seba)
#setwd("C:/Users/TvojeMeno/Documents/R/Cvicenie6")
# Načítanie údajov
data <- read.csv("economics.csv", header = TRUE, sep = ",", dec = ".", stringsAsFactors = FALSE)
head(data)
Popis a výber premenných
Popis pôvodných premenných
- date – dátum pozorovania (časová
rada)
- pce – osobná spotreba (personal consumption
expenditures)
- pop – populácia
- psavert – miera úspor
- uempmed – mediánová dĺžka nezamestnanosti (v
týždňoch)
- unemploy – počet nezamestnaných
econ <- data[, c("date", "pce", "unemploy", "uempmed", "psavert")]
econ$date <- as.Date(econ$date)
str(econ)
'data.frame': 574 obs. of 5 variables:
$ date : Date, format: "1967-07-01" "1967-08-01" "1967-09-01" ...
$ pce : num 507 510 516 512 517 ...
$ unemploy: int 2944 2945 2958 3143 3066 3018 2878 3001 2877 2709 ...
$ uempmed : num 4.5 4.7 4.6 4.9 4.7 4.8 5.1 4.5 4.1 4.6 ...
$ psavert : num 12.6 12.6 11.9 12.9 12.8 11.8 11.7 12.3 11.7 12.3 ...
summary(econ)
date pce unemploy uempmed psavert
Min. :1967-07-01 Min. : 506.7 Min. : 2685 Min. : 4.000 Min. : 2.200
1st Qu.:1979-06-08 1st Qu.: 1578.3 1st Qu.: 6284 1st Qu.: 6.000 1st Qu.: 6.400
Median :1991-05-16 Median : 3936.8 Median : 7494 Median : 7.500 Median : 8.400
Mean :1991-05-17 Mean : 4820.1 Mean : 7771 Mean : 8.609 Mean : 8.567
3rd Qu.:2003-04-23 3rd Qu.: 7626.3 3rd Qu.: 8686 3rd Qu.: 9.100 3rd Qu.:11.100
Max. :2015-04-01 Max. :12193.8 Max. :15352 Max. :25.200 Max. :17.300
— Vizualizácia časových radov —
par(mfrow=c(2,2))
plot(econ$date, econ$pce, type="l", main="Osobná spotreba (PCE)", xlab="Rok", ylab="Hodnota")
plot(econ$date, econ$unemploy, type="l", main="Počet nezamestnaných", xlab="Rok", ylab="Osoby (tis.)")
plot(econ$date, econ$uempmed, type="l", main="Medián dĺžky nezamestnanosti", xlab="Rok", ylab="Týždne")
plot(econ$date, econ$psavert, type="l", main="Miera úspor", xlab="Rok", ylab="%")
par(mfrow=c(1,1))

Testovanie stacionarity (ADF test)
adf.test(econ$pce)
adf.test(econ$unemploy)
adf.test(econ$uempmed)
adf.test(econ$psavert)
econ$dpce <- c(NA, diff(econ$pce))
econ$dunemploy <- c(NA, diff(econ$unemploy))
econ$duempmed <- c(NA, diff(econ$uempmed))
econ$dpsavert <- c(NA, diff(econ$psavert))
econ_diff <- na.omit(econ)
Korelačná analýza
cor(econ_diff[, c("dpce","dunemploy","duempmed","dpsavert")])
dpce dunemploy duempmed dpsavert
dpce 1.00000000 -0.12532393 -0.09258617 -0.33342108
dunemploy -0.12532393 1.00000000 0.05470010 0.03306587
duempmed -0.09258617 0.05470010 1.00000000 0.02612497
dpsavert -0.33342108 0.03306587 0.02612497 1.00000000
Interpretácia:
- Silne záporná korelácia → pohyby opačným smerom
- Silne kladná korelácia → spoločné trendy
Lineárna regresia
model <- lm(dpce ~ dunemploy + duempmed + dpsavert, data=econ_diff)
summary(model)
Call:
lm(formula = dpce ~ dunemploy + duempmed + dpsavert, data = econ_diff)
Residuals:
Min 1Q Median 3Q Max
-145.446 -13.111 -3.575 10.969 141.143
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 20.471343 1.034995 19.779 < 2e-16 ***
dunemploy -0.013512 0.004802 -2.814 0.00507 **
duempmed -3.661019 1.838406 -1.991 0.04691 *
dpsavert -11.613811 1.386562 -8.376 4.29e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 24.74 on 569 degrees of freedom
Multiple R-squared: 0.1303, Adjusted R-squared: 0.1257
F-statistic: 28.42 on 3 and 569 DF, p-value: < 2.2e-16
Interpretácia:
- Koeficienty – smer vplyvu (kladný/záporný)
- Pravdepodobnosť (Pr(>|t|)) – ak je < 0.05 → premenná je
štatisticky významná
- R² – vysvetľuje, aký podiel variability spotreby vysvetľujú
nezamestnanosť a úspory
Diagnostika modelu
par(mfrow=c(2,2))
plot(model)
par(mfrow=c(1,1))

jarque.bera.test(residuals(model))
Jarque Bera Test
data: residuals(model)
X-squared = 760.52, df = 2, p-value < 2.2e-16
bptest(model)
studentized Breusch-Pagan test
data: model
BP = 22.168, df = 3, p-value = 6.019e-05
Interpretácia:
- Q-Q graf → ak body ležia pri čiare, rezíduá sú normálne
rozdelené
- Scale-Location → ak je červená čiara rovná, variancia je
konštantná
- Breusch–Pagan test → test heteroskedasticity
- p-value < 0.05 → heteroskedasticita prítomná
- p-value > 0.05 → homoskedasticita
Robustné štandardné chyby (Whiteova korekcia)
coeftest(model_log, vcov = vcovHC(model_log))
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.9965e+00 6.8275e-02 131.7685 < 2e-16 ***
unemploy 1.2469e-04 1.1474e-05 10.8666 < 2e-16 ***
uempmed 1.7075e-02 7.4795e-03 2.2828 0.02281 *
psavert -2.3330e-01 4.1485e-03 -56.2372 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Záver
Hlavné zistenia
- Premenné unemploy, uempmed a
psavert významne ovplyvňujú osobnú spotrebu.
- Niektoré premenne sú nestacionárne → vhodné je
pracovať s ich diferenciami.
- Po logaritmickej transformácii sa model správa
lepšie (znížená heteroskedasticita).
- Diagnostické testy potvrdili, že model po transformácii je
spoľahlivý a spĺňa základné ekonometrické predpoklady.
LS0tCnRpdGxlOiAiSGV0ZXJvc2tlZGFzdGljaXRhIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKYXV0aG9yOiAiQWxpY2EgVHZyZMOhIgotLS0KCjxzdHlsZT4KLyogUnXFvm92w6kgcG96YWRpZSBwcmUgY2Vsw70gZG9rdW1lbnQgKi8KYm9keSB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNmYwOwogICAgZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOwogICAgbGluZS1oZWlnaHQ6IDEuNjsKfQoKLyogUnXFvm92w6kgbmFkcGlzeSAqLwpoMSwgaDIsIGgzLCBoNCB7CiAgICBjb2xvcjogI2ZmNjliNDsKfQoKLyogQ2l0w6F0eSAqLwpibG9ja3F1b3RlIHsKICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgI2ZmNjliNDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmYwZjU7CiAgICBwYWRkaW5nOiAxMHB4IDE1cHg7CiAgICBtYXJnaW46IDEwcHggMDsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKfQoKLyogWnbDvXJhem5lbmllIGvEvsO6xI1vdsO9Y2ggc2xvdiAqLwpzcGFuLmhpZ2hsaWdodCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZiNmMxOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBwYWRkaW5nOiAycHggNHB4OwogICAgYm9yZGVyLXJhZGl1czogM3B4Owp9Cjwvc3R5bGU+CgoKIyDDmnZvZAoKViB0b210byBjdmnEjWVuw60gYW5hbHl6dWplbSBla29ub21pY2vDqSB1a2F6b3ZhdGVsZSB6IGRhdGFzZXR1IGBlY29ub21pY3MuY3N2YCwga3RvcsO9IG9ic2FodWplIMSNYXNvdsOpIHJhZHkgZWtvbm9taWNrw71jaCBwcmVtZW5uw71jaCB2IFVTQSAobmFwci4gbmV6YW1lc3RuYW5vc8WlLCBvc29ibsOpIHByw61qbXksIHNwb3RyZWJhIGEgcG9kLikuIETDoXRhIHphxI3DrW5hasO6IHYgasO6bGkgMTk2NyBhIGtvbsSNaWEgdiByb2t1IDIwMTUsIHRha8W+ZSBwb2tyw712YWrDuiB0YWttZXIgNDggcm9rb3YgZWtvbm9taWNrw6lobyB2w712b2phLgpDaWXEvm9tIGplIHVrw6F6YcWlLCBha28gdiBSIHJlYWxpem92YcWlIGVrb25vbWV0cmlja8O6IGFuYWzDvXp1IOKAkyB0ZXN0b3ZhbmllIHN0YWNpb25hcml0eSwgbW9kZWxvdmFuaWUgYSBkaWFnbm9zdGlrdSBjaHlibsO9Y2ggxaF0cnVrdMO6ci4KCi0tLQoKIyMgUHLDrXByYXZhIHByb3N0cmVkaWEKCmBgYHtyIHNldHVwLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHpvbykKbGlicmFyeSh0c2VyaWVzKQpsaWJyYXJ5KGxtdGVzdCkKbGlicmFyeShzYW5kd2ljaCkKbGlicmFyeShjYXIpCmxpYnJhcnkoZ2dwbG90MikKcm0obGlzdD1scygpKQoKIyBOYXN0YXZlbmllIHByYWNvdm7DqWhvIGFkcmVzw6FyYSAodXByYXYgcG9kxL5hIHNlYmEpCiNzZXR3ZCgiQzovVXNlcnMvVHZvamVNZW5vL0RvY3VtZW50cy9SL0N2aWNlbmllNiIpCgojIE5hxI3DrXRhbmllIMO6ZGFqb3YKZGF0YSA8LSByZWFkLmNzdigiZWNvbm9taWNzLmNzdiIsIGhlYWRlciA9IFRSVUUsIHNlcCA9ICIsIiwgZGVjID0gIi4iLCBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCmhlYWQoZGF0YSkKYGBgCiAgCiMgKipQb3BpcyBhIHbDvWJlciBwcmVtZW5uw71jaCoqCgoKIyMjICoqUG9waXMgcMO0dm9kbsO9Y2ggcHJlbWVubsO9Y2gqKgoKLSAqKmRhdGUqKiDigJMgZMOhdHVtIHBvem9yb3ZhbmlhICooxI1hc292w6EgcmFkYSkqICAKLSAqKnBjZSoqIOKAkyBvc29ibsOhIHNwb3RyZWJhICoocGVyc29uYWwgY29uc3VtcHRpb24gZXhwZW5kaXR1cmVzKSogIAotICoqcG9wKiog4oCTIHBvcHVsw6FjaWEgIAotICoqcHNhdmVydCoqIOKAkyBtaWVyYSDDunNwb3IgIAotICoqdWVtcG1lZCoqIOKAkyBtZWRpw6Fub3bDoSBkxLrFvmthIG5lemFtZXN0bmFub3N0aSAqKHYgdMO9xb5kxYhvY2gpKiAgCi0gKip1bmVtcGxveSoqIOKAkyBwb8SNZXQgbmV6YW1lc3RuYW7DvWNoICAKICAKYGBge3J9CmVjb24gPC0gZGF0YVssIGMoImRhdGUiLCAicGNlIiwgInVuZW1wbG95IiwgInVlbXBtZWQiLCAicHNhdmVydCIpXQplY29uJGRhdGUgPC0gYXMuRGF0ZShlY29uJGRhdGUpCnN0cihlY29uKQpzdW1tYXJ5KGVjb24pCmBgYAogIAojIC0tLSBWaXp1YWxpesOhY2lhIMSNYXNvdsO9Y2ggcmFkb3YgLS0tCiAgCmBgYHtyfQpwYXIobWZyb3c9YygyLDIpKQpwbG90KGVjb24kZGF0ZSwgZWNvbiRwY2UsIHR5cGU9ImwiLCBtYWluPSJPc29ibsOhIHNwb3RyZWJhIChQQ0UpIiwgeGxhYj0iUm9rIiwgeWxhYj0iSG9kbm90YSIpCnBsb3QoZWNvbiRkYXRlLCBlY29uJHVuZW1wbG95LCB0eXBlPSJsIiwgbWFpbj0iUG/EjWV0IG5lemFtZXN0bmFuw71jaCIsIHhsYWI9IlJvayIsIHlsYWI9Ik9zb2J5ICh0aXMuKSIpCnBsb3QoZWNvbiRkYXRlLCBlY29uJHVlbXBtZWQsIHR5cGU9ImwiLCBtYWluPSJNZWRpw6FuIGTEusW+a3kgbmV6YW1lc3RuYW5vc3RpIiwgeGxhYj0iUm9rIiwgeWxhYj0iVMO9xb5kbmUiKQpwbG90KGVjb24kZGF0ZSwgZWNvbiRwc2F2ZXJ0LCB0eXBlPSJsIiwgbWFpbj0iTWllcmEgw7pzcG9yIiwgeGxhYj0iUm9rIiwgeWxhYj0iJSIpCnBhcihtZnJvdz1jKDEsMSkpCmBgYAojIFRlc3RvdmFuaWUgc3RhY2lvbmFyaXR5IChBREYgdGVzdCkKICAKYGBge3J9CmFkZi50ZXN0KGVjb24kcGNlKQphZGYudGVzdChlY29uJHVuZW1wbG95KQphZGYudGVzdChlY29uJHVlbXBtZWQpCmFkZi50ZXN0KGVjb24kcHNhdmVydCkKYGBgCmBgYHtyfQplY29uJGRwY2UgPC0gYyhOQSwgZGlmZihlY29uJHBjZSkpCmVjb24kZHVuZW1wbG95IDwtIGMoTkEsIGRpZmYoZWNvbiR1bmVtcGxveSkpCmVjb24kZHVlbXBtZWQgPC0gYyhOQSwgZGlmZihlY29uJHVlbXBtZWQpKQplY29uJGRwc2F2ZXJ0IDwtIGMoTkEsIGRpZmYoZWNvbiRwc2F2ZXJ0KSkKCmVjb25fZGlmZiA8LSBuYS5vbWl0KGVjb24pCmBgYAogIAojIEtvcmVsYcSNbsOhIGFuYWzDvXphCmBgYHtyfQpjb3IoZWNvbl9kaWZmWywgYygiZHBjZSIsImR1bmVtcGxveSIsImR1ZW1wbWVkIiwiZHBzYXZlcnQiKV0pCmBgYAogIAojIyMgSW50ZXJwcmV0w6FjaWE6CgotIFNpbG5lIHrDoXBvcm7DoSBrb3JlbMOhY2lhIOKGkiBwb2h5Ynkgb3BhxI1uw71tIHNtZXJvbQotIFNpbG5lIGtsYWRuw6Ega29yZWzDoWNpYSDihpIgc3BvbG/EjW7DqSB0cmVuZHkKCiMgTGluZcOhcm5hIHJlZ3Jlc2lhCmBgYHtyfQptb2RlbCA8LSBsbShkcGNlIH4gZHVuZW1wbG95ICsgZHVlbXBtZWQgKyBkcHNhdmVydCwgZGF0YT1lY29uX2RpZmYpCnN1bW1hcnkobW9kZWwpCmBgYAojIyMgSW50ZXJwcmV0w6FjaWE6CgotIEtvZWZpY2llbnR5IOKAkyBzbWVyIHZwbHl2dSAoa2xhZG7DvS96w6Fwb3Juw70pCi0gUHJhdmRlcG9kb2Jub3PFpSAoUHIoPnx0fCkpIOKAkyBhayBqZSA8IDAuMDUg4oaSIHByZW1lbm7DoSBqZSDFoXRhdGlzdGlja3kgdsO9em5hbW7DoQotIFLCsiDigJMgdnlzdmV0xL51amUsIGFrw70gcG9kaWVsIHZhcmlhYmlsaXR5IHNwb3RyZWJ5IHZ5c3ZldMS+dWrDuiBuZXphbWVzdG5hbm9zxaUgYSDDunNwb3J5CiAgCiMgRGlhZ25vc3Rpa2EgbW9kZWx1CiAgCmBgYHtyfQpwYXIobWZyb3c9YygyLDIpKQpwbG90KG1vZGVsKQpwYXIobWZyb3c9YygxLDEpKQoKamFycXVlLmJlcmEudGVzdChyZXNpZHVhbHMobW9kZWwpKQpicHRlc3QobW9kZWwpCmBgYAojIyMgSW50ZXJwcmV0w6FjaWE6CgotIFEtUSBncmFmIOKGkiBhayBib2R5IGxlxb5pYSBwcmkgxI1pYXJlLCByZXrDrWR1w6Egc8O6IG5vcm3DoWxuZSByb3pkZWxlbsOpCi0gU2NhbGUtTG9jYXRpb24g4oaSIGFrIGplIMSNZXJ2ZW7DoSDEjWlhcmEgcm92bsOhLCB2YXJpYW5jaWEgamUga29uxaF0YW50bsOhCi0gQnJldXNjaOKAk1BhZ2FuIHRlc3Qg4oaSIHRlc3QgaGV0ZXJvc2tlZGFzdGljaXR5Ci0gcC12YWx1ZSA8IDAuMDUg4oaSIGhldGVyb3NrZWRhc3RpY2l0YSBwcsOtdG9tbsOhCi0gcC12YWx1ZSA+IDAuMDUg4oaSIGhvbW9za2VkYXN0aWNpdGEKICAKIyBNb2RlbCBzIGxvZ2FyaXRtaWNrb3UgdHJhbnNmb3Jtw6FjaW91CiAgCmBgYHtyfQptb2RlbF9sb2cgPC0gbG0obG9nKHBjZSkgfiB1bmVtcGxveSArIHVlbXBtZWQgKyBwc2F2ZXJ0LCBkYXRhPWVjb24pCnN1bW1hcnkobW9kZWxfbG9nKQoKcGFyKG1mcm93PWMoMiwyKSkKcGxvdChtb2RlbF9sb2cpCnBhcihtZnJvdz1jKDEsMSkpCgpicHRlc3QobW9kZWxfbG9nKQpgYGAKIyBSb2J1c3Ruw6kgxaF0YW5kYXJkbsOpIGNoeWJ5IChXaGl0ZW92YSBrb3Jla2NpYSkKICAKYGBge3J9CmNvZWZ0ZXN0KG1vZGVsX2xvZywgdmNvdiA9IHZjb3ZIQyhtb2RlbF9sb2cpKQpgYGAKICAKIyAqKlrDoXZlcioqCgojIyMgKipIbGF2bsOpIHppc3RlbmlhKioKCi0gUHJlbWVubsOpICoqdW5lbXBsb3kqKiwgKip1ZW1wbWVkKiogYSAqKnBzYXZlcnQqKiB2w716bmFtbmUgb3ZwbHl2xYh1asO6IG9zb2Juw7ogc3BvdHJlYnUuICAKLSBOaWVrdG9yw6kgcHJlbWVubmUgc8O6ICoqbmVzdGFjaW9uw6FybmUqKiDihpIgdmhvZG7DqSBqZSBwcmFjb3ZhxaUgcyBpY2ggKipkaWZlcmVuY2lhbWkqKi4gIAotIFBvICoqbG9nYXJpdG1pY2tlaiB0cmFuc2Zvcm3DoWNpaSoqIHNhIG1vZGVsIHNwcsOhdmEgbGVwxaFpZSAoem7DrcW+ZW7DoSBoZXRlcm9za2VkYXN0aWNpdGEpLiAgCi0gRGlhZ25vc3RpY2vDqSB0ZXN0eSBwb3R2cmRpbGksIMW+ZSAqKm1vZGVsIHBvIHRyYW5zZm9ybcOhY2lpIGplIHNwb8S+YWhsaXbDvSoqIGEgc3DEusWIYSB6w6FrbGFkbsOpIGVrb25vbWV0cmlja8OpIHByZWRwb2tsYWR5Lgo=