# Spustite raz v konzole, iba ak tieto balíky chýbajú.
install.packages(c("knitr", "rmarkdown", "broom", "kableExtra", "ggplot2"))Econometrics in R – cvičenie 4
Prvé zoznámenie s lineárnou regresiou: Kanada, 2014–2024
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
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)| 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)
:::
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_nezamOtá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)| Č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.
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)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)| Č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)| Počet rokov | R² | Odhad SD chyby (USD) |
|---|---|---|
| 11 | 0,964 | 1149 |
nobsje počet pozorovaní (rokov) použitých pri odhade.r.squaredje podiel výberovej variability HDP na obyvateľa zachytený modelom.sigmaje 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)| 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)| 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. Pomocoutidy()získajte koeficienty, zobrazte ich pomocoukable()akable_styling()a pomocouggplot2nakreslite 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)| Č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)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
model1vypočí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
porovnaniejednu 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 | 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:
- 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í.
- 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.
- 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.
- 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.