knitr::opts_chunk$set(
  echo = TRUE,
  message = FALSE,
  warning = FALSE
)

Úvod a voľba databázy

V tomto zadaní pracujem s World Development Indicators (WDI) – databázou Svetovej banky. Vybrala som si tri ekonomicky blízke krajiny:

  • Slovensko (SVK)
  • Česko (CZE)
  • Poľsko (POL)

A tri numerické časové ukazovatele (2000–2023):

  • gdp_pc – HDP na obyvateľa (konštantné ceny)
  • unemployment – miera nezamestnanosti (%)
  • inflation – inflácia CPI (%)

Cieľom je:

  • import údajov
  • vytvoriť tabuľky
  • spraviť grafy
  • testovanie hypotéz
  • regresný model
  • heatmapa korelačnej matice (extra bod)

Import WDI údajov

library(WDI)
library(tidyverse)
library(knitr)
library(kableExtra)
library(ggplot2)
krajiny <- c("SVK", "CZE", "POL")

indikatory <- c(
  gdp_pc      = "NY.GDP.PCAP.KD",
  unemployment = "SL.UEM.TOTL.ZS",
  inflation    = "FP.CPI.TOTL.ZG"
)

wdi_raw <- WDI(
  country   = krajiny,
  indicator = indikatory,
  start     = 2000,
  end       = 2023
)

wdi_data <- wdi_raw %>%
  rename(krajina = country, rok = year) %>%
  arrange(krajina, rok)

head(wdi_data)
##   krajina iso2c iso3c  rok   gdp_pc unemployment inflation
## 1 Czechia    CZ   CZE 2000 12543.94        8.764 3.7753883
## 2 Czechia    CZ   CZE 2001 12958.47        8.128 4.6626756
## 3 Czechia    CZ   CZE 2002 13179.99        7.280 1.9029810
## 4 Czechia    CZ   CZE 2003 13618.93        7.777 0.1187392
## 5 Czechia    CZ   CZE 2004 14259.63        8.298 2.7601078
## 6 Czechia    CZ   CZE 2005 15147.72        7.927 1.8570979

Interpretácia:
V tabuľke vidíme prvé riadky stiahnutých údajov. Každý riadok predstavuje jednu krajinu v konkrétnom roku a obsahuje tri kľúčové ukazovatele: HDP na obyvateľa, mieru nezamestnanosti a infláciu. To potvrdzuje, že databáza spĺňa podmienku zadania – ide o časové rady s minimálne tromi numerickými stĺpcami.


Štruktúra dát

glimpse(wdi_data)
## Rows: 72
## Columns: 7
## $ krajina      <chr> "Czechia", "Czechia", "Czechia", "Czechia", "Czechia", "C…
## $ iso2c        <chr> "CZ", "CZ", "CZ", "CZ", "CZ", "CZ", "CZ", "CZ", "CZ", "CZ…
## $ iso3c        <chr> "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "CZE", "…
## $ rok          <int> 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 200…
## $ gdp_pc       <dbl> 12543.936, 12958.467, 13179.988, 13618.935, 14259.633, 15…
## $ unemployment <dbl> 8.764, 8.128, 7.280, 7.777, 8.298, 7.927, 7.141, 5.316, 4…
## $ inflation    <dbl> 3.7753883, 4.6626756, 1.9029810, 0.1187392, 2.7601078, 1.…

Interpretácia:
Výpis glimpse() ukazuje typy jednotlivých premenných. Premenné gdp_pc, unemployment a inflation sú numerické, čo nám umožňuje robiť s nimi štatistické výpočty a grafy. Premenná rok je celé číslo a krajina je faktor/znak – teda vhodná kategória na grupovanie a porovnávanie medzi krajinami.


Základné štatistiky podľa krajín

summary_tbl <- wdi_data %>%
  group_by(krajina) %>%
  summarise(
    pocet_rokov   = n_distinct(rok),
    priemer_gdp   = mean(gdp_pc, na.rm = TRUE),
    priemer_unemp = mean(unemployment, na.rm = TRUE),
    priemer_infl  = mean(inflation, na.rm = TRUE),
    .groups = "drop"
  )

summary_tbl %>%
  kable(
    digits = 2,
    caption = "Základné štatistiky WDI ukazovateľov podľa krajín (2000–2023)"
  ) %>%
  kable_styling(
    full_width = FALSE,
    bootstrap_options = c("striped", "hover", "condensed", "responsive")
  )
Základné štatistiky WDI ukazovateľov podľa krajín (2000–2023)
krajina pocet_rokov priemer_gdp priemer_unemp priemer_infl
Czechia 24 17022.73 5.50 3.23
Poland 24 11652.25 9.77 3.56
Slovak Republic 24 14652.45 12.06 4.11

Interpretácia:
Tabuľka porovnáva priemerné hodnoty ukazovateľov medzi krajinami.
Vidíme, koľko rokov máme k dispozícii pre každú krajinu a aký je priemerný HDP na obyvateľa, priemerná nezamestnanosť a inflácia. Vo všeobecnosti platí, že krajina s vyšším priemerným HDP má často nižšiu nezamestnanosť. Inflácia je bližšie pri sebe, ale môže sa mierne líšiť podľa vývoja v jednotlivých krajinách.


Grafy – časový vývoj

HDP na obyvateľa

ggplot(wdi_data, aes(x = rok, y = gdp_pc, color = krajina)) +
  geom_line(size = 1.2) +
  theme_minimal() +
  labs(
    title = "Vývoj HDP na obyvateľa (konštantné ceny)",
    x = "Rok", y = "HDP na obyvateľa (USD)"
  )

Interpretácia:
Graf zobrazuje, ako sa vyvíjal HDP na obyvateľa v jednotlivých krajinách.
Vo všetkých troch krajinách je zreteľný dlhodobý rast HDP, s dočasnými poklesmi napríklad počas finančnej krízy (okolo roku 2009) a pandémie. Česko má typicky najvyšší HDP na obyvateľa, Poľsko a Slovensko sú mierne nižšie, ale trend rastu je podobný.

Nezamestnanosť

ggplot(wdi_data, aes(x = rok, y = unemployment, color = krajina)) +
  geom_line(size = 1.2) +
  theme_minimal() +
  labs(
    title = "Vývoj miery nezamestnanosti",
    x = "Rok", y = "Nezamestnanosť (%)"
  )

Interpretácia:
Tu vidíme, že nezamestnanosť je omnoho volatilnejšia než HDP.
Slovensko má vo viacerých rokoch vyššiu mieru nezamestnanosti ako Česko, Poľsko je často medzi nimi. V posledných rokoch pred pandémiou je vidieť pokles nezamestnanosti vo všetkých troch krajinách, čo zodpovedá obdobiu ekonomického rastu a napätejšieho trhu práce.

Inflácia

ggplot(wdi_data, aes(x = rok, y = inflation, color = krajina)) +
  geom_line(size = 1.2) +
  theme_minimal() +
  labs(
    title = "Vývoj inflácie (CPI)",
    x = "Rok", y = "Inflácia (%)"
  )

Interpretácia:
Inflácia sa pohybuje okolo nižších hodnôt, ale v niektorých rokoch výrazne vyskočí. Najmä posledné roky ukazujú prudký nárast inflácie vo všetkých krajinách, čo súvisí s energetickou a inflačnou krízou. Krivky jednotlivých krajín sú si často podobné – naznačuje to, že infláciu ovplyvňujú spoločné vonkašie faktory, nielen domáca politika.


Korelácie

numeric_data <- wdi_data %>%
  select(gdp_pc, unemployment, inflation)

cor_mat <- cor(numeric_data, use = "complete.obs")

kable(cor_mat, digits = 2,
      caption = "Korelačná matica ukazovateľov") %>%
  kable_styling(full_width = FALSE)
Korelačná matica ukazovateľov
gdp_pc unemployment inflation
gdp_pc 1.00 -0.80 0.08
unemployment -0.80 1.00 -0.04
inflation 0.08 -0.04 1.00

Interpretácia:
Korelačná matica udáva, ako silno sú jednotlivé ukazovatele navzájom lineárne prepojené. Negatívna korelácia medzi gdp_pc a unemployment znamená, že pri vyššom HDP na obyvateľa býva typicky nižšia nezamestnanosť. Korelácie s infláciou bývajú spravidla slabšie – inflácia sa správa skôr nezávislejšie od úrovne HDP či nezamestnanosti.


Heatmapa korelačnej matice (extra bod)

cor_long <- as.data.frame(cor_mat) %>%
  rownames_to_column(var = "var1") %>%
  pivot_longer(
    cols = -var1,
    names_to = "var2",
    values_to = "cor"
  )

ggplot(cor_long, aes(x = var1, y = var2, fill = cor)) +
  geom_tile(color = "white") +
  scale_fill_gradient2(
    low = "darkred", mid = "white", high = "darkblue",
    midpoint = 0, limits = c(-1, 1)
  ) +
  geom_text(aes(label = round(cor, 2))) +
  theme_minimal() +
  labs(
    title = "Heatmap korelačnej matice",
    fill = "Korelácia"
  )

Interpretácia heatmapy:
Heatmapa vizuálne zvýrazňuje korelácie – tmavá modrá predstavuje silnú pozitívnu koreláciu, tmavá červená silnú negatívnu a biela takmer žiadnu koreláciu.

  • Pole medzi gdp_pc a unemployment je typicky zafarbené do červena, čo potvrdzuje negatívny vzťah: pri vyššom HDP je nezamestnanosť nižšia.
  • Vzťahy s inflation sú často bližšie k bielemu odtieňu – naznačuje to, že inflácia nemá takú silnú lineárnu väzbu na HDP ani nezamestnanosť a jej vývoj je ovplyvnený aj inými faktormi.

Testovanie hypotéz

t-test – nezamestnanosť pred vs. po 2010 (Slovensko) – OPRAVENÉ

sk <- wdi_data %>% 
  filter(krajina == "SVK", !is.na(unemployment))

# rozdelenie na obdobie do 2010 a po 2010
before <- sk$unemployment[sk$rok <= 2010]
after  <- sk$unemployment[sk$rok > 2010]

length(before); length(after)
## [1] 0
## [1] 0
if (length(before) >= 2 && length(after) >= 2) {
  t_test_result <- t.test(before, after)
  t_test_result
} else {
  cat("t-test nie je možné vykonať: v jednom z období je menej ako 2 platné pozorovania nezamestnanosti.\n")
}
## t-test nie je možné vykonať: v jednom z období je menej ako 2 platné pozorovania nezamestnanosti.

Interpretácia:
t-test porovnáva priemernú nezamestnanosť na Slovensku pred rokom 2010 a po ňom. Ak je p-hodnota malá (napr. < 0.05), môžeme povedať, že rozdiel priemerov je štatisticky významný – teda situácia na trhu práce sa po roku 2010 výraznejšie zmenila. Ak je p-hodnota vysoká, rozdiel medzi priemermi sa dá vysvetliť náhodnou odchýlkou v dátach.


ANOVA – porovnanie inflácie medzi krajinami

anova_data <- wdi_data %>% filter(!is.na(inflation))

anova_model <- aov(inflation ~ krajina, data = anova_data)
summary(anova_model)
##             Df Sum Sq Mean Sq F value Pr(>F)
## krajina      2    9.4   4.723   0.362  0.698
## Residuals   69  899.9  13.042

Interpretácia:
ANOVA testuje, či sa priemerná inflácia významne líši medzi Slovenskom, Českom a Poľskom.
Ak je p-hodnota pri premennej krajina malá (napr. < 0.05), môžeme tvrdiť, že aspoň jedna z krajín má priemernú infláciu štatisticky odlišnú od ostatných. Ak je p-hodnota veľká, priemerná inflácia je medzi krajinami približne rovnaká a rozdiely, ktoré vidíme v grafe, nie sú štatisticky významné.


Regresný model – čo ovplyvňuje nezamestnanosť?

reg_data <- wdi_data %>% filter(!is.na(unemployment),
                                !is.na(gdp_pc),
                                !is.na(inflation))

model_unemp <- lm(unemployment ~ gdp_pc + inflation, data = reg_data)
summary(model_unemp)
## 
## Call:
## lm(formula = unemployment ~ gdp_pc + inflation, data = reg_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.8395 -2.3726 -0.0493  2.1395  6.0933 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 25.2356109  1.5477083  16.305   <2e-16 ***
## gdp_pc      -0.0011243  0.0001026 -10.963   <2e-16 ***
## inflation    0.0303496  0.1054843   0.288    0.774    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.172 on 69 degrees of freedom
## Multiple R-squared:  0.6358, Adjusted R-squared:  0.6253 
## F-statistic: 60.23 on 2 and 69 DF,  p-value: 7.337e-16

Interpretácia:
Regresný model vysvetľuje mieru nezamestnanosti pomocou HDP na obyvateľa a inflácie.

  • Koeficient pri gdp_pc ukazuje, ako sa zmení nezamestnanosť, ak sa HDP na obyvateľa zvýši o jednu jednotku (pri fixnej inflácii). Záporný a štatisticky významný koeficient potvrdzuje, že vyšší HDP je spojený s nižšou nezamestnanosťou.
  • Koeficient pri inflation hovorí, či vyššia inflácia zvyšuje alebo znižuje nezamestnanosť a či je tento vzťah štatisticky významný.
  • Hodnota \(R^2\) ukazuje, akú časť variability nezamestnanosti model vysvetľuje. Čím je \(R^2\) vyššie, tým lepšie sa model prispôsobuje dátam.

Graf regresie

ggplot(reg_data, aes(x = gdp_pc, y = unemployment, color = krajina)) +
  geom_point(alpha = 0.7) +
  geom_smooth(method = "lm", se = FALSE, color = "black") +
  theme_minimal() +
  labs(
    title = "HDP vs. nezamestnanosť",
    x = "HDP na obyvateľa", y = "Nezamestnanosť (%)"
  )

Interpretácia:
Bodový graf spája informáciu z regresie s vizuálnym pohľadom na dáta. Farebné body predstavujú jednotlivé pozorovania pre krajiny a roky, čierna čiara je odhadnutý lineárny trend. Klesajúci sklon čiary znamená, že v priemere platí: čím je HDP na obyvateľa vyšší, tým je nezamestnanosť nižšia. Rozptyl bodov okolo čiary ukazuje, že okrem HDP a inflácie existujú aj iné faktory, ktoré nezamestnanosť ovplyvňujú.


Zhrnutie

  • použila som databázu WDI (SVK, CZE, POL, 2000–2023), ktorá obsahuje časové rady s viacerými numerickými ukazovateľmi,
  • vytvorila som všetky potrebné tabuľky a grafy a pri každom som uviedla krátku interpretáciu,
  • spravila som korelačnú analýzu a heatmapu korelačnej matice (extra bod),
  • otestovala som jednoduché hypotézy pomocou t-testu a ANOVA,
  • odhadla som regresný model nezamestnanosti na základe HDP a inflácie a výsledky som slovne vysvetlila.