1. Načítanie balíkov a dát

V tejto úlohe analyzujeme mieru nezamestnanosti v Nemecku, Česku a na Slovensku na ročnej báze (2014–2024) a špecifikujeme jednoduchý lineárny regresný model.

# Balíky
library(zoo)
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(lmtest)
library(sandwich)
library(car)
## Loading required package: carData
# Načítanie dát (súbor musí byť v rovnakom priečinku ako tento .Rmd)
udaje_raw <- read.csv("une_rt_a__custom_18708117_linear.csv",
                      stringsAsFactors = FALSE)

str(udaje_raw)
## 'data.frame':    33 obs. of  11 variables:
##  $ DATAFLOW   : chr  "ESTAT:UNE_RT_A(1.0)" "ESTAT:UNE_RT_A(1.0)" "ESTAT:UNE_RT_A(1.0)" "ESTAT:UNE_RT_A(1.0)" ...
##  $ LAST.UPDATE: chr  "11/09/25 23:00:00" "11/09/25 23:00:00" "11/09/25 23:00:00" "11/09/25 23:00:00" ...
##  $ freq       : chr  "Annual" "Annual" "Annual" "Annual" ...
##  $ age        : chr  "From 15 to 74 years" "From 15 to 74 years" "From 15 to 74 years" "From 15 to 74 years" ...
##  $ unit       : chr  "Percentage of population in the labour force" "Percentage of population in the labour force" "Percentage of population in the labour force" "Percentage of population in the labour force" ...
##  $ sex        : chr  "Total" "Total" "Total" "Total" ...
##  $ geo        : chr  "Czechia" "Czechia" "Czechia" "Czechia" ...
##  $ TIME_PERIOD: int  2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 ...
##  $ OBS_VALUE  : num  6.1 5.1 4 2.9 2.2 2 2.6 2.8 2.2 2.6 ...
##  $ OBS_FLAG   : chr  "" "" "" "" ...
##  $ CONF_STATUS: logi  NA NA NA NA NA NA ...
head(udaje_raw)
##              DATAFLOW       LAST.UPDATE   freq                 age
## 1 ESTAT:UNE_RT_A(1.0) 11/09/25 23:00:00 Annual From 15 to 74 years
## 2 ESTAT:UNE_RT_A(1.0) 11/09/25 23:00:00 Annual From 15 to 74 years
## 3 ESTAT:UNE_RT_A(1.0) 11/09/25 23:00:00 Annual From 15 to 74 years
## 4 ESTAT:UNE_RT_A(1.0) 11/09/25 23:00:00 Annual From 15 to 74 years
## 5 ESTAT:UNE_RT_A(1.0) 11/09/25 23:00:00 Annual From 15 to 74 years
## 6 ESTAT:UNE_RT_A(1.0) 11/09/25 23:00:00 Annual From 15 to 74 years
##                                           unit   sex     geo TIME_PERIOD
## 1 Percentage of population in the labour force Total Czechia        2014
## 2 Percentage of population in the labour force Total Czechia        2015
## 3 Percentage of population in the labour force Total Czechia        2016
## 4 Percentage of population in the labour force Total Czechia        2017
## 5 Percentage of population in the labour force Total Czechia        2018
## 6 Percentage of population in the labour force Total Czechia        2019
##   OBS_VALUE OBS_FLAG CONF_STATUS
## 1       6.1                   NA
## 2       5.1                   NA
## 3       4.0                   NA
## 4       2.9                   NA
## 5       2.2                   NA
## 6       2.0                   NA

V dátach máme mieru nezamestnanosti (v %) podľa krajiny, roku a ďalších charakteristík.

Budeme pracovať s:

udaje <- subset(udaje_raw,
                age == "From 15 to 74 years" &
                sex == "Total" &
                geo %in% c("Czechia","Germany","Slovakia"))

table(udaje$geo)
## 
##  Czechia  Germany Slovakia 
##       11       11       11
sort(unique(udaje$TIME_PERIOD))
##  [1] 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024
# pre istotu: OBS_VALUE ako číslo
udaje$OBS_VALUE <- as.numeric(udaje$OBS_VALUE)

2. Preformátovanie do širokého tvaru (wide)

Chceme mať 1 riadok = 1 rok, stĺpce = miera nezamestnanosti v krajinách.

udaje_wide <- reshape(udaje[, c("TIME_PERIOD","geo","OBS_VALUE")],
                      idvar   = "TIME_PERIOD",
                      timevar = "geo",
                      direction = "wide")

# Premenovanie stĺpcov
names(udaje_wide) <- c("year","u_CZ","u_DE","u_SK")

# Zoradenie podľa roku
udaje_wide <- udaje_wide[order(udaje_wide$year), ]

udaje_wide
##    year u_CZ u_DE u_SK
## 1  2014  6.1  4.7 13.1
## 2  2015  5.1  4.4 11.5
## 3  2016  4.0  3.9  9.6
## 4  2017  2.9  3.5  8.1
## 5  2018  2.2  3.2  6.5
## 6  2019  2.0  2.9  5.7
## 7  2020  2.6  3.6  6.7
## 8  2021  2.8  3.6  6.8
## 9  2022  2.2  3.1  6.1
## 10 2023  2.6  3.1  5.8
## 11 2024  2.6  3.4  5.3
summary(udaje_wide)
##       year           u_CZ            u_DE            u_SK       
##  Min.   :2014   Min.   :2.000   Min.   :2.900   Min.   : 5.300  
##  1st Qu.:2016   1st Qu.:2.400   1st Qu.:3.150   1st Qu.: 5.950  
##  Median :2019   Median :2.600   Median :3.500   Median : 6.700  
##  Mean   :2019   Mean   :3.191   Mean   :3.582   Mean   : 7.745  
##  3rd Qu.:2022   3rd Qu.:3.450   3rd Qu.:3.750   3rd Qu.: 8.850  
##  Max.   :2024   Max.   :6.100   Max.   :4.700   Max.   :13.100

Z deskriptívnych štatistík a tabuľky vidno, že:

3. Grafy časových radov a vzťahov

3.1 Časové rady nezamestnanosti

plot(udaje_wide$year, udaje_wide$u_SK, type = "b",
     xlab = "Rok", ylab = "Miera nezamestnanosti (%)",
     main = "Nezamestnanosť – Slovensko")
grid()

plot(udaje_wide$year, udaje_wide$u_DE, type = "b",
     xlab = "Rok", ylab = "Miera nezamestnanosti (%)",
     main = "Nezamestnanosť – Nemecko")
grid()

plot(udaje_wide$year, udaje_wide$u_CZ, type = "b",
     xlab = "Rok", ylab = "Miera nezamestnanosti (%)",
     main = "Nezamestnanosť – Česko")
grid()

Z grafov vidíme:

  • Slovensko: výrazný pokles nezamestnanosti medzi rokmi 2014–2019, potom mierne zvýšenie okolo 2020–2021 a znovu pokles do roku 2024.
  • Nemecko: veľmi stabilný vývoj s miernymi výkyvmi, celkovo na nízkej úrovni (cca 3–4 %).
  • Česko: najvýraznejší pokles – z približne 6 % v roku 2014 na približne 2–3 % v posledných rokoch.

3.2 Vzťah medzi nezamestnanosťou na Slovensku a v Nemecku

plot(udaje_wide$u_DE, udaje_wide$u_SK,
     xlab = "Nezamestnanosť Nemecko (%)",
     ylab = "Nezamestnanosť Slovensko (%)",
     main = "Vzťah nezamestnanosti SK a DE")
abline(lm(u_SK ~ u_DE, data = udaje_wide), lwd = 2)
grid()

Bodový graf naznačuje, že medzi nezamestnanosťou na Slovensku a v Nemecku neexistuje úplne jednoznačná silná lineárna závislosť – Slovensko má vo všetkých rokoch vyššiu nezamestnanosť a pohyb bodov naznačuje skôr spoločný dlhodobý trend (pokles po roku 2014), než priamu kauzálnu väzbu.

4. Špecifikácia základného modelu

Zvolíme si:

udaje_wide$trend <- udaje_wide$year - min(udaje_wide$year) + 1

# Základný model (bez trendu)
model1 <- lm(u_SK ~ u_DE + u_CZ, data = udaje_wide)
summary(model1)
## 
## Call:
## lm(formula = u_SK ~ u_DE + u_CZ, data = udaje_wide)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.3551 -0.2067  0.1195  0.3168  0.8876 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   0.5911     3.4910   0.169   0.8697  
## u_DE          0.4871     1.5137   0.322   0.7558  
## u_CZ          1.6953     0.6421   2.640   0.0297 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6984 on 8 degrees of freedom
## Multiple R-squared:  0.9413, Adjusted R-squared:  0.9267 
## F-statistic:  64.2 on 2 and 8 DF,  p-value: 1.183e-05
# Rozšírený model s trendom
model2 <- lm(u_SK ~ u_DE + u_CZ + trend, data = udaje_wide)
summary(model2)
## 
## Call:
## lm(formula = u_SK ~ u_DE + u_CZ + trend, data = udaje_wide)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.33118 -0.09185 -0.01199  0.03886  0.55699 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.02080    1.54998   2.594 0.035731 *  
## u_DE         0.35526    0.62921   0.565 0.589966    
## u_CZ         1.25944    0.27566   4.569 0.002578 ** 
## trend       -0.26109    0.04162  -6.273 0.000415 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2901 on 7 degrees of freedom
## Multiple R-squared:  0.9911, Adjusted R-squared:  0.9873 
## F-statistic: 261.1 on 3 and 7 DF,  p-value: 1.518e-07
# Porovnanie modelov pomocou ANOVA
anova(model1, model2)
## Analysis of Variance Table
## 
## Model 1: u_SK ~ u_DE + u_CZ
## Model 2: u_SK ~ u_DE + u_CZ + trend
##   Res.Df    RSS Df Sum of Sq     F    Pr(>F)    
## 1      8 3.9020                                 
## 2      7 0.5893  1    3.3127 39.35 0.0004148 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretácia:

5. Grafická analýza – rezíduá vs. vyrovnané hodnoty

par(mfrow = c(1,2))

plot(model1, which = 1,
     main = "Model 1: Rezíduá vs. fitted")

plot(model2, which = 1,
     main = "Model 2: Rezíduá vs. fitted")

par(mfrow = c(1,1))

Interpretácia:

6. Ramsey RESET test

resettest(model1)
## 
##  RESET test
## 
## data:  model1
## RESET = 0.45698, df1 = 2, df2 = 6, p-value = 0.6535
resettest(model2)
## 
##  RESET test
## 
## data:  model2
## RESET = 0.022628, df1 = 2, df2 = 5, p-value = 0.9777

Interpretácia:

7. C+R grafy (Component + Residual Plots)

car::crPlots(model2)

Interpretácia:

8. Box–Cox transformácia vysvetľovanej premennej

Skúsime overiť, či by transformácia u_SK mohla zlepšiť vlastnosti modelu.

boxcox_model <- powerTransform(udaje_wide$u_SK)
boxcox_model
## Estimated transformation parameter 
## udaje_wide$u_SK 
##        -1.88556
lambda <- boxcox_model$lambda
lambda
## udaje_wide$u_SK 
##        -1.88556

Odhadnutý parameter \(\lambda\) vychádza približne -1,9, teda Box–Cox transformácia odporúča pomerne silnú nelineárnu transformáciu mier nezamestnanosti na Slovensku.

Vytvoríme Box–Cox transformovanú premennú a odhadneme model:

udaje_wide$u_SK_bc <- if (abs(lambda) < 1e-6) {
  log(udaje_wide$u_SK)
} else {
  (udaje_wide$u_SK^lambda - 1) / lambda
}

model_bc <- lm(u_SK_bc ~ u_DE + u_CZ + trend, data = udaje_wide)
summary(model_bc)
## 
## Call:
## lm(formula = u_SK_bc ~ u_DE + u_CZ + trend, data = udaje_wide)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -2.794e-03 -1.141e-03  3.064e-05  1.530e-03  1.996e-03 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.5019101  0.0110763  45.314 6.66e-10 ***
## u_DE         0.0066309  0.0044964   1.475  0.18379    
## u_CZ        -0.0007560  0.0019699  -0.384  0.71255    
## trend       -0.0011091  0.0002974  -3.729  0.00737 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.002073 on 7 degrees of freedom
## Multiple R-squared:  0.9219, Adjusted R-squared:  0.8885 
## F-statistic: 27.55 on 3 and 7 DF,  p-value: 0.0003001
resettest(model_bc)
## 
##  RESET test
## 
## data:  model_bc
## RESET = 1.0643, df1 = 2, df2 = 5, p-value = 0.412
plot(model_bc, which = 1,
     main = "Model s Box-Cox transformáciou")

Interpretácia:

Preto napriek tomu, že Box–Cox transformácia je formálne možná, z hľadiska praktickej interpretácie a vysokej kvality pôvodného lineárneho modelu ju nepovažujeme za potrebnú.

9. Zhrnutie

Na základe analýzy môžeme zhrnúť:

  1. Dáta a vývoj nezamestnanosti
    • V rokoch 2014–2024 nezamestnanosť klesala vo všetkých troch krajinách, pričom Slovensko malo počas celého obdobia najvyššiu mieru nezamestnanosti, Nemecko najnižšiu.
    • Okolo rokov 2020–2021 vidno mierne zvýšenie nezamestnanosti (dopad pandémie), následne opäť pokles.
  2. Regresný model
    • Ako závislú premennú sme zvolili mieru nezamestnanosti na Slovensku, vysvetľujúce premenné sú nezamestnanosť v Česku, Nemecku a časový trend.
    • Model s trendom (model2) má veľmi vysoké upravené R² (≈ 0,99), teda veľmi dobre opisuje vývoj nezamestnanosti na Slovensku.
    • Štatisticky významne sa prejavuje najmä:
      • nezamestnanosť v Česku – pozitívny vzťah: vyššia nezamestnanosť v ČR je spojená s vyššou nezamestnanosťou na Slovensku,
      • trend – záporný koeficient odráža dlhodobé zlepšovanie situácie na trhu práce na Slovensku.
    • Nezamestnanosť v Nemecku nie je pri danom malom počte pozorovaní štatisticky významná.
  3. Diagnostika špecifikácie
    • Ramsey RESET test pri všetkých modeloch neodhalil významnu nesprávnu špecifikáciu (vysoké p-hodnoty).
    • Grafy rezíduí a C+R grafy neukázali výraznú nelinearitu – lineárny model sa javí ako vhodný.
    • Box–Cox transformácia síce ponúka alternatívny tvar modelu, ale znižuje zrozumiteľnosť interpretácie a neprináša jasné zlepšenie.
  4. Záver
    • Za najvhodnejší model považujeme lineárny model s trendom a s nezamestnanosťou v Česku a Nemecku ako vysvetľujúcimi premennými (model2 bez Box–Cox transformácie).
    • Model ukazuje, že slovenská nezamestnanosť je silne prepojená na vývoj v regióne (najmä Česko) a zároveň dlhodobo klesá, čo odráža zlepšovanie situácie na trhu práce v analyzovanom období.