Econometrics in R – cvičenie 4

Prvé zoznámenie s lineárnou regresiou: Kanada, 2014–2024

Autor

Romana Černáková

1 Predmet výskumu

V tomto cvičení si ukážeme, ako pomocou R odhadnúť a interpretovať lineárnu regresiu. Použijeme ročné makroekonomické údaje Kanady za roky 2014–2024.

Budeme postupovať od jednoduchej otázky k regresnému modelu:

  • Súvisí vyššia miera nezamestnanosti s nižším HDP na obyvateľa?
  • Grafické znázornenie tejto závislosti.
  • Odhad regresnej priamky a jej interpretácia.
  • Pridanie ďalších vysvetľujúcich premenných.
  • Predikcia.

2 Príprava údajov

2.1 Balíky

# Spustite raz v konzole, iba ak tieto balíky chýbajú.
install.packages(c("knitr", "rmarkdown", "broom", "kableExtra", "ggplot2"))
library(broom)
library(knitr)
library(kableExtra)
library(ggplot2)

# Desatinná čiarka vo výstupoch.
options(OutDec = ",")

# Pomocná funkcia na formátovanie čísel v texte.
fmt <- function(x, d = 2) formatC(x, format = "f", digits = d, decimal.mark = ",")

Pri formátovaní používame zápis |>, ktorý odovzdá výsledok predchádzajúceho príkazu ako prvý argument nasledujúcej funkcie. Napríklad tabulka |> kable() zobrazí objekt tabulka pomocou kable().

2.2 Zadanie údajov

Údaje máme v pôvodnej tabuľke zapísané do šírky (roky v stĺpcoch). Pre regresiu potrebujeme, aby jeden riadok predstavoval jedno pozorovanie, teda jeden rok. Preto ich zadáme po stĺpcoch.

udaje <- data.frame(
  Year = 2014:2024,
  GDP = c(1805.7, 1556.5, 1528, 1649.3, 1725.3, 1743.7,
          1655.7, 2022.4, 2190.4, 2173.3, 2243.6),
  GDP.pc = c(50961, 43594, 42314, 45130, 46539, 46353,
             43538, 52887, 56257, 54220, 54340),
  Inflation = c(1.91, 1.13, 1.43, 1.6, 2.27, 1.95,
                0.72, 3.4, 6.8, 3.88, 2.38),
  Unemployment = c(7.02, 6.95, 7.04, 6.43, 5.84, 5.69,
                   9.66, 7.53, 5.28, 5.42, 6.35),
  Trade.balance = c(-0.91, -2.46, -2.36, -2.19, -1.95, -1.47,
                    -2.21, 0.1, 0.57, 0.07, -0.26)
)

udaje |>
  kable(format = "html", digits = 2, row.names = FALSE,
        col.names = c("Rok", "HDP (mld. USD)", "HDP na obyvateľa (USD)",
                      "Inflácia (%)", "Nezamestnanosť (%)",
                      "Obchodná bilancia (% HDP)"),
        caption = "Makroekonomické ukazovatele Kanady, 2014–2024") |>
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Makroekonomické ukazovatele Kanady, 2014–2024
Rok HDP (mld. USD) HDP na obyvateľa (USD) Inflácia (%) Nezamestnanosť (%) Obchodná bilancia (% HDP)
2014 1805,7 50961 1,91 7,02 -0,91
2015 1556,5 43594 1,13 6,95 -2,46
2016 1528,0 42314 1,43 7,04 -2,36
2017 1649,3 45130 1,60 6,43 -2,19
2018 1725,3 46539 2,27 5,84 -1,95
2019 1743,7 46353 1,95 5,69 -1,47
2020 1655,7 43538 0,72 9,66 -2,21
2021 2022,4 52887 3,40 7,53 0,10
2022 2190,4 56257 6,80 5,28 0,57
2023 2173,3 54220 3,88 5,42 0,07
2024 2243,6 54340 2,38 6,35 -0,26

Jeden riadok predstavuje jednu krajinu (Kanadu) v jednom roku. Takejto organizácii údajov hovoríme časové rady (time series data). Na rozdiel od prierezových údajov sú tu pozorovania usporiadané v čase a susedné roky si môžu byť podobné.

Premenná Význam
Year Rok pozorovania.
GDP.pc HDP na obyvateľa v USD; vysvetľovaná premenná.
Unemployment Miera nezamestnanosti v %.
Inflation Miera inflácie v %.
Trade.balance Obchodná bilancia ako percento HDP.
GDP HDP v miliardách USD (v regresii ho nepoužijeme, pozri nižšie).

2.3 Chýbajúce hodnoty

sum(is.na(udaje))
[1] 0

Tabuľka je úplná, nechýba žiadna hodnota, takže nie je potrebné nič dopĺňať. #| label: opisna-statistika premenne <- c(“GDP.pc”, “Unemployment”, “Inflation”, “Trade.balance”) opis <- data.frame( Premenna = premenne, Minimum = sapply(udaje[premenne], min), Median = sapply(udaje[premenne], median), Priemer = sapply(udaje[premenne], mean), Maximum = sapply(udaje[premenne], max) ) opis |> kable(format = “html”, digits = 2, row.names = FALSE, col.names = c(“Premenná”, “Minimum”, “Medián”, “Priemer”, “Maximum”), caption = “Opisná štatistika”) |> kable_styling(bootstrap_options = c(“striped”, “hover”), full_width = FALSE)


# Graf

Najprv sa pozrieme, ako sa HDP na obyvateľa vyvíjalo v čase.


::: {.cell}

```{.r .cell-code}
ggplot(udaje, aes(x = Year, y = GDP.pc)) +
  geom_line(color = "steelblue") +
  geom_point(color = "steelblue", size = 2) +
  scale_x_continuous(breaks = udaje$Year) +
  labs(x = "Rok", y = "HDP na obyvateľa (USD)") +
  theme_minimal(base_size = 13)
Obrázok 1: Vývoj HDP na obyvateľa v Kanade, 2014–2024.

:::

Očakávame, že v rokoch s vyššou nezamestnanosťou bolo HDP na obyvateľa spravidla nižšie. Ide zatiaľ o pracovnú hypotézu.

graf_nezam <- ggplot(udaje, aes(x = Unemployment, y = GDP.pc)) +
  geom_point(color = "steelblue", size = 2, alpha = 0.75) +
  geom_text(aes(label = Year), vjust = -0.8, size = 3) +
  labs(x = "Miera nezamestnanosti (%)",
       y = "HDP na obyvateľa (USD)") +
  theme_minimal(base_size = 13)

graf_nezam
Obrázok 2: Nezamestnanosť a HDP na obyvateľa. Každý bod predstavuje jeden rok.

Otázky: Vidíte rastúcu alebo klesajúcu závislosť? Ktorý rok sa výrazne odlišuje od ostatných? Čím to môže byť?

3 Jednoduchá lineárna regresia

3.1 Zápis modelu

Najprv použijeme iba jednu vysvetľujúcu premennú:

\[ GDPpc_t = \beta_0 + \beta_1 Unemployment_t + u_t. \]

  • \(t\) označuje rok.
  • \(\beta_0\) je konštanta, teda priesečník regresnej priamky s osou Y.
  • \(\beta_1\) je smernica priamky: vyjadruje rozdiel predikovaného HDP na obyvateľa pri rozdiele nezamestnanosti o jeden percentuálny bod.
  • \(u_t\) zachytáva tú časť HDP na obyvateľa, ktorú tento jednoduchý model nevysvetľuje.

Regresná priamka nemusí prechádzať všetkými bodmi. Metóda najmenších štvorcov vyberie takú priamku, ktorá minimalizuje súčet štvorcov vertikálnych rozdielov medzi bodmi a priamkou.

3.2 Odhad pomocou lm()

model1 <- lm(GDP.pc ~ Unemployment, data = udaje)
vysledky1 <- tidy(model1)
vysledky1[c("term", "estimate")] |>
  kable(format = "html", digits = 3, row.names = FALSE,
        col.names = c("Člen modelu", "Odhad koeficienta"),
        caption = "Jednoduchá regresia: HDP na obyvateľa a nezamestnanosť") |>
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Jednoduchá regresia: HDP na obyvateľa a nezamestnanosť
Člen modelu Odhad koeficienta
(Intercept) 61376,348
Unemployment -1898,741

Funkcia tidy(model1) z balíka broom prevedie výsledky modelu na tabuľku: jeden riadok zodpovedá jednému koeficientu. Stĺpec term obsahuje názov člena modelu a estimate jeho odhad. Označenie (Intercept) znamená konštantu.

tidy() pripravuje údaje o výsledkoch; kable() vytvára tabuľku a kable_styling() upravuje jej vzhľad. Odhad modelu sa formátovaním nemení.

Znak ~ čítame ako „vysvetľujeme pomocou“. Vľavo je vysvetľovaná premenná a vpravo vysvetľujúca premenná. Konštantu R zahrnie automaticky.

Odhadnutá priamka je:

\[ \widehat{GDPpc}_t = 61376,3 + -1898,7\,Unemployment_t. \]

Interpretácia smernice: Rozdiel jedného percentuálneho bodu v miere nezamestnanosti sa v tomto jednoduchom modeli spája s rozdielom približne -1899 USD v predikovanom HDP na obyvateľa.

Interpretácia konštanty: Pri nezamestnanosti 0 % by priamka predikovala približne 61376 USD. Nula však leží mimo pozorovaného rozsahu nezamestnanosti (približne od 5,3 % do 9,7 %), preto konštantu chápeme predovšetkým ako parameter polohy priamky.

Poznámka

Súvislosť medzi nezamestnanosťou a HDP na obyvateľa v rokoch 2014–2024 sama osebe nedokazuje, že zmena nezamestnanosti spôsobí takú zmenu HDP. Na oboch premenných sa podieľajú ďalšie faktory (napr. pandémia v roku 2020, ceny energií, výmenný kurz). HDP je navyše vyjadrené v USD, takže ho ovplyvňuje aj kurz kanadského dolára.

3.3 Regresná priamka v grafe

K bodovému grafu pridáme priamku pomocou geom_abline(). Jej konštantu (intercept) a smernicu (slope) prevezmeme priamo z odhadnutého modelu model1.

graf_nezam +
  geom_abline(intercept = coef(model1)["(Intercept)"],
              slope = coef(model1)["Unemployment"],
              color = "firebrick", linewidth = 1)
Obrázok 3: Odhadnutá regresná priamka pre nezamestnanosť a HDP na obyvateľa.

4 Viacnásobná lineárna regresia

HDP na obyvateľa môže súvisieť s viacerými charakteristikami súčasne. Rozšírime model o infláciu a obchodnú bilanciu:

\[ GDPpc_t = \beta_0 + \beta_1 Unemployment_t + \beta_2 Inflation_t + \beta_3 TradeBalance_t + u_t. \]

Ukazovateľ GDP (v miliardách USD) do modelu zámerne nedávame. Je to v podstate to isté ako HDP na obyvateľa, len vynásobené počtom obyvateľov, takže by sme vysvetľovali premennú pomocou jej vlastnej obmeny.

model <- lm(GDP.pc ~ Unemployment + Inflation + Trade.balance,
            data = udaje)
vysledky <- tidy(model)
vysledky[c("term", "estimate")] |>
  kable(format = "html", digits = 3, row.names = FALSE,
        col.names = c("Člen modelu", "Odhad koeficienta"),
        caption = "Viacnásobná regresia: nezamestnanosť, inflácia a obchodná bilancia") |>
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Viacnásobná regresia: nezamestnanosť, inflácia a obchodná bilancia
Člen modelu Odhad koeficienta
(Intercept) 58052,417
Unemployment -437,203
Inflation -363,626
Trade.balance 4624,878

Odhadnutá rovnica:

\[ \widehat{GDPpc}_t = 58052 - 437\,Unemployment_t - 364\,Inflation_t + 4625\,TradeBalance_t. \]

Koeficient pri nezamestnanosti sa teraz interpretuje pri rovnakých hodnotách inflácie a obchodnej bilancie. Rozdiel jedného percentuálneho bodu nezamestnanosti sa spája s rozdielom približne -437 USD v predikovanom HDP na obyvateľa.

Všimnite si: Koeficient pri nezamestnanosti sa oproti jednoduchému modelu (-1899) zmenil. Jednoduchý a viacnásobný model odpovedajú na odlišné otázky: druhý zohľadňuje aj ďalšie zahrnuté charakteristiky.

Pri inflácii a obchodnej bilancii nečakajte automaticky „učebnicové“ znamienka. V tomto období majú oba ukazovatele nezvyčajný vývoj (napr. vysoká inflácia v roku 2022 a zároveň silné HDP v USD), a pri 11 pozorovaniach sú odhady citlivé na jednotlivé roky. Premenné preto nevyraďujeme iba preto, že znamienko nezodpovedá očakávaniu.

5 Stručný súhrn modelu pomocou glance()

Zatiaľ čo tidy() poskytuje riadok pre každý koeficient, glance() poskytuje jeden riadok so súhrnnými charakteristikami celého modelu. Vyberieme iba počet pozorovaní, \(R^2\) a odhad štandardnej odchýlky chyby.

suhrn <- glance(model)
suhrn[c("nobs", "r.squared", "sigma")] |>
  kable(format = "html", digits = c(0, 3, 0), row.names = FALSE,
        col.names = c("Počet rokov", "R²", "Odhad SD chyby (USD)"),
        caption = "Základné charakteristiky viacnásobného modelu") |>
  kable_styling(bootstrap_options = "striped", full_width = FALSE)
Základné charakteristiky viacnásobného modelu
Počet rokov R² Odhad SD chyby (USD)
11 0,964 1149
  • nobs je počet pozorovaní (rokov) použitých pri odhade.
  • r.squared je podiel výberovej variability HDP na obyvateľa zachytený modelom.
  • sigma je odhad štandardnej odchýlky modelovej chyby, tu vyjadrený v USD.

Hodnota \(R^2\) je v našom viacnásobnom modeli približne 0,964. Model teda zachytáva približne 96,4 % výberovej variability HDP na obyvateľa. Neznamená to, že „toľko percent predikcií je správnych“, ani to nedokazuje kauzalitu.

Úplný textový súhrn je stále dostupný príkazom summary(model). tidy(model) okrem názvov a odhadov obsahuje aj std.error, statistic a p.value. Ich vysvetlenie ponecháme na hodinu venovanú štatistickému testovaniu.

6 Skutočná hodnota, predikcia a rezíduum

Pre každý rok môžeme porovnať skutočné HDP na obyvateľa s hodnotou na regresnej ploche:

\[ e_t = y_t - \widehat y_t. \]

Tento rozdiel nazývame rezíduum. Kladné rezíduum znamená, že skutočná hodnota je vyššia než predikcia; záporné znamená opak. Rezíduum vieme vypočítať, zatiaľ čo skutočnú modelovú chybu \(u_t\) nepoznáme.

porovnanie <- data.frame(
  Rok = udaje$Year,
  Skutocnost = udaje$GDP.pc,
  Predikcia = fitted(model),
  Reziduum = residuals(model)
)
porovnanie |>
  kable(format = "html", digits = 0, row.names = FALSE,
        col.names = c("Rok", "Skutočnosť", "Predikcia", "Rezíduum"),
        caption = "Skutočné a predikované HDP na obyvateľa (USD)") |>
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Skutočné a predikované HDP na obyvateľa (USD)
Rok Skutočnosť Predikcia Rezíduum
2014 50961 50080 881
2015 43594 43226 368
2016 42314 43540 -1226
2017 45130 44531 599
2018 46539 45655 884
2019 46353 48057 -1704
2020 43538 43346 192
2021 52887 53986 -1099
2022 56257 55908 349
2023 54220 54596 -376
2024 54340 53208 1132

Úloha: Vyberte jeden riadok a ručne overte, že Skutocnost - Predikcia = Reziduum. Ktorý rok má najväčšie rezíduum v absolútnej hodnote?

Funkcia coef(model) vracia koeficienty, fitted(model) vyrovnané hodnoty a residuals(model) rezíduá. Ak budeme neskôr potrebovať maticu vysvetľujúcich premenných, získame ju príkazom model.matrix(model).

7 Predikcia pre zadanú hodnotu

Na prvú ukážku predikcie sa vrátime k jednoduchému modelu s nezamestnanosťou. Vypočítame, aké HDP na obyvateľa priamka predikuje pre nezamestnanosť 5 %, 7 % a 9 %:

nove_udaje <- data.frame(Unemployment = c(5, 7, 9))
nove_udaje$Predikcia <- predict(model1, newdata = nove_udaje)
nove_udaje |>
  kable(format = "html", digits = 0, row.names = FALSE,
        col.names = c("Nezamestnanosť (%)", "Predikcia HDP na obyvateľa (USD)"),
        caption = "Predikcie jednoduchého regresného modelu") |>
  kable_styling(bootstrap_options = "striped", full_width = FALSE)
Predikcie jednoduchého regresného modelu
Nezamestnanosť (%) Predikcia HDP na obyvateľa (USD)
5 51883
7 48085
9 44288

Ide o bodové predikcie, nie o isté výsledky. Skutočné HDP na obyvateľa môže byť iné. Hodnota 5 % leží tesne pod pozorovaným rozsahom nezamestnanosti, takže ide o miernu extrapoláciu. O neistote predikcie a predikčných intervaloch sa budeme učiť neskôr.

8 Malé cvičenia

8.1 Otázka 1

Zadanie: Ktorá premenná je v našom modeli vysvetľovaná a ktoré sú vysvetľujúce?

Typ premennej Premenná
Vysvetľovaná GDP.pc (HDP na obyvateľa v USD)
Vysvetľujúce Unemployment, Inflation, Trade.balance

8.2 Otázka 2

Zadanie: Odhadnite jednoduchý model Life.expectancy ~ GDP. Pomocou tidy() získajte koeficienty, zobrazte ich pomocou kable() a kable_styling() a pomocou ggplot2 nakreslite bodový graf s regresnou priamkou.

Úprava pre naše údaje: Namiesto Life.expectancy ~ GDP používam GDP.pc ~ Inflation. HDP v mld. USD a HDP na obyvateľa sú takmer to isté, takže GDP.pc ~ GDP by nedávalo zmysel.

model2 <- lm(GDP.pc ~ Inflation, data = udaje)
tidy(model2)[c("term", "estimate")] |>
  kable(format = "html", digits = 3, row.names = FALSE,
        col.names = c("Člen modelu", "Odhad koeficienta"),
        caption = "Jednoduchá regresia: HDP na obyvateľa a inflácia") |>
  kable_styling(bootstrap_options = c("striped", "hover"), full_width = FALSE)
Jednoduchá regresia: HDP na obyvateľa a inflácia
Člen modelu Odhad koeficienta
(Intercept) 42704,890
Inflation 2416,426
ggplot(udaje, aes(x = Inflation, y = GDP.pc)) +
  geom_point(color = "steelblue", size = 2, alpha = 0.75) +
  geom_abline(intercept = coef(model2)["(Intercept)"],
              slope = coef(model2)["Inflation"],
              color = "firebrick", linewidth = 1) +
  labs(x = "Inflácia (%)", y = "HDP na obyvateľa (USD)") +
  theme_minimal(base_size = 13)
Obrázok 4: HDP na obyvateľa a inflácia s regresnou priamkou.

Interpretácia: Zvýšenie inflácie o 1 percentuálny bod sa v tomto modeli spája s rozdielom približne 2416 USD v predikovanom HDP na obyvateľa.

8.3 Otázka 3

Zadanie: Vysvetlite koeficient Schooling v jednoduchom aj viacnásobnom modeli. Prečo pri viacnásobnom modeli dopĺňame „pri rovnakých ostatných premenných“?

Úprava pre naše údaje: Namiesto Schooling vysvetľujem koeficient pri Unemployment.

Model Koeficient pri Unemployment Porovnávame roky…
Jednoduchý (GDP.pc ~ Unemployment) približne -1 899 len podľa nezamestnanosti, nič iné nekontrolujeme
Viacnásobný (GDP.pc ~ Unemployment + Inflation + Trade.balance) približne -437 s rovnakou infláciou a rovnakou obchodnou bilanciou
  • Jednoduchý model: rozdiel jedného percentuálneho bodu v nezamestnanosti sa spája s rozdielom približne 1 899 USD v predikovanom HDP na obyvateľa. Vyššia nezamestnanosť zodpovedá nižšiemu HDP.
  • Viacnásobný model: rozdiel jedného percentuálneho bodu v nezamestnanosti sa spája s rozdielom približne 437 USD v predikovanom HDP na obyvateľa, pri rovnakej inflácii a rovnakej obchodnej bilancii.

Prečo dopĺňame „pri rovnakých ostatných premenných“? Vo viacnásobnom modeli koeficient vyjadruje zmenu iba jednej premennej, zatiaľ čo ostatné sú udržané na rovnakej hodnote. Bez tohto dodatku by bol výklad zavádzajúci, lebo roky s vyššou nezamestnanosťou sa líšia aj infláciou a obchodnou bilanciou. Preto sa koeficient po pridaní ďalších premenných zmenil z -1 899 na -437.

8.4 Otázka 4

Zadanie: Pomocou model1 vypočítajte predikciu pre Schooling = 13. Overte ju ručným dosadením do odhadnutej rovnice.

Úprava pre naše údaje: Namiesto Schooling = 13 používam nezamestnanosť 8 %, lebo 13 % leží ďaleko mimo pozorovaného rozsahu (5,3 až 9,7 %).

# Pomocou funkcie predict()
predict(model1, newdata = data.frame(Unemployment = 8))
       1 
46186,42 
# Ručné dosadenie do odhadnutej rovnice
b0 <- coef(model1)["(Intercept)"]
b1 <- coef(model1)["Unemployment"]
b0 + b1 * 8
(Intercept) 
   46186,42 

Ručný výpočet: \(61\,376 - 1\,899 \times 8 \approx 46\,186\) USD.

Obe hodnoty sa zhodujú: predikované HDP na obyvateľa pri nezamestnanosti 8 % je približne 46186 USD.

8.5 Otázka 5

Zadanie: Nájdite v tabuľke porovnanie jednu krajinu s kladným a jednu so záporným rezíduom. Vysvetlite význam znamienka.

Úprava pre naše údaje: Máme len jednu krajinu (Kanadu), preto vyberáme roky, nie krajiny.

kladne <- porovnanie[which.max(porovnanie$Reziduum), ]
zaporne <- porovnanie[which.min(porovnanie$Reziduum), ]
rbind(kladne, zaporne) |>
  kable(format = "html", digits = 0, row.names = FALSE,
        col.names = c("Rok", "Skutočnosť", "Predikcia", "Rezíduum"),
        caption = "Rok s najväčším kladným a najväčším záporným rezíduom") |>
  kable_styling(bootstrap_options = "striped", full_width = FALSE)
Rok s najväčším kladným a najväčším záporným rezíduom
Rok Skutočnosť Predikcia Rezíduum
2024 54340 53208 1132
2019 46353 48057 -1704
Rezíduum Rok Skutočnosť Predikcia Význam
Kladné 2024 54 340 USD 53 208 USD model rok podhodnotil
Záporné 2019 46 353 USD 48 057 USD model rok nadhodnotil

Význam znamienka: rezíduum je skutočnosť - predikcia.

  • Kladné rezíduum znamená, že skutočná hodnota leží nad regresnou plochou.
  • Záporné rezíduum znamená, že skutočná hodnota leží pod regresnou plochou.
  • Veľkosť rezídua ukazuje, o koľko USD sa model pomýlil.

8.6 Otázka 6

Zadanie: Vysvetlite, prečo z kladného koeficienta nemožno automaticky vyvodiť kauzálny účinok.

Koeficient z regresie meria len štatistickú súvislosť v našich údajoch: ako sa v priemere líši vysvetľovaná premenná medzi pozorovaniami, ktoré sa líšia vysvetľujúcou premennou. Nehovorí, že zmena jednej premennej danú zmenu druhej spôsobí.

Z kladného koeficienta preto nemožno automaticky vyvodiť kauzálny účinok z týchto dôvodov:

  1. Vynechané premenné. Na HDP na obyvateľa pôsobia aj faktory, ktoré v modeli nie sú (pandémia, ceny energií, výmenný kurz). Ak súvisia s vysvetľujúcou premennou, koeficient im pripisuje vplyv, ktorý im nepatrí.
  2. Opačný smer vplyvu. Nemusí platiť, že obchodná bilancia ovplyvňuje HDP. Môže to byť aj naopak, alebo oba ukazovatele reagujú na tretí faktor.
  3. Spoločné trendy v čase. Pri časových radoch sa dve premenné môžu hýbať spolu aj bez priamej väzby, napríklad obe rastú alebo klesajú v rovnakých rokoch.
  4. Malá vzorka. Máme len 11 pozorovaní, takže koeficient môže výrazne závisieť od jednotlivých rokov, napríklad od roku 2020.