Úvod

V tejto úlohe nadväzujem na predchádzajúce zadanie s databázou EuStockMarkets.
Budeme skúmať, či je v jednoduchom lineárnom regresnom modeli prítomná heteroskedasticita
a ukážeme si dve základné možnosti, ako ju riešiť.

Použitý model:

Načítanie dát a odhad modelu

data("EuStockMarkets")

stocks <- as.data.frame(EuStockMarkets)

# jednoduchý lineárny model
model_lin <- lm(FTSE ~ DAX, data = stocks)

summary(model_lin)
## 
## Call:
## lm(formula = FTSE ~ DAX, data = stocks)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -755.13 -143.29   37.25  167.78  372.18 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 1.344e+03  1.273e+01   105.5   <2e-16 ***
## DAX         8.780e-01  4.625e-03   189.8   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 216.3 on 1858 degrees of freedom
## Multiple R-squared:  0.951,  Adjusted R-squared:  0.9509 
## F-statistic: 3.604e+04 on 1 and 1858 DF,  p-value: < 2.2e-16

Komentár:
Model popisuje, ako sa hodnota indexu FTSE mení v závislosti od indexu DAX.
Koeficient pri DAX by mal byť kladný – rast DAX je spojený s rastom FTSE.
Pred použitím modelu potrebujeme overiť, či spĺňa predpoklady klasickej lineárnej regresie,
najmä konštantný rozptyl chýb (homoskedasticita).

Grafická detekcia heteroskedasticity

plot(
  fitted(model_lin),
  resid(model_lin),
  pch = 19,
  col = "darkgreen",
  xlab = "Odhadnuté hodnoty (fitted values)",
  ylab = "Rezíduá",
  main = "Rezíduá vs. fitted values (FTSE ~ DAX)"
)
abline(h = 0, col = "red", lwd = 2)

Interpretácia (graf):

Ak by platila homoskedasticita, body by mali byť rozptýlené okolo horizontálnej čiary 0
bez výrazného vzoru (≈ náhodný mrak).
Ak sa rozptyl rezíduí zväčšuje alebo zmenšuje s úrovňou fitted hodnôt (tvar lievika),
je to vizuálny signál heteroskedasticity.

Formálna detekcia – Breusch–Pagan test

bptest(model_lin)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_lin
## BP = 265.15, df = 1, p-value < 2.2e-16

Interpretácia (test):

Postup:

(Skutočnú p-hodnotu uvidíš pri spustení kódu.)

Riešenie 1: Robustné smerodajné odchýlky (HC)

Aj keď je heteroskedasticita prítomná, odhady koeficientov (β₀, β₁) sú stále neskreslené,
ale štandardné chyby a testy už nie sú spoľahlivé. Jedným z riešení je použiť
robustné (heteroskedasticity-consistent) smerodajné odchýlky.

# robustná kovariančná matica typu HC1
vcov_hc <- sandwich::vcovHC(model_lin, type = "HC1")

# koeficienty s robustnými smerodajnými chybami
coeftest(model_lin, vcov. = vcov_hc)
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept) 1.3437e+03 1.7774e+01  75.597 < 2.2e-16 ***
## DAX         8.7802e-01 7.4383e-03 118.041 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretácia (robustné SE):

Robustné smerodajné odchýlky sú najjednoduchší praktický spôsob, ako heteroskedasticitu ošetriť,
bez zmeny samotného modelu.

Riešenie 2: Logaritmická transformácia premenných

Ďalšou bežnou možnosťou je použiť model v logaritmoch, napríklad:

\[ \log(\text{FTSE}) = \alpha_0 + \alpha_1 \log(\text{DAX}) + u \]

Takýto model často stabilizuje rozptyl a lepšie zachytí percentuálne zmeny.

stocks$log_FTSE <- log(stocks$FTSE)
stocks$log_DAX  <- log(stocks$DAX)

model_log <- lm(log_FTSE ~ log_DAX, data = stocks)

summary(model_log)
## 
## Call:
## lm(formula = log_FTSE ~ log_DAX, data = stocks)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.15540 -0.03782  0.00949  0.04279  0.10469 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.843766   0.026653   106.7   <2e-16 ***
## log_DAX     0.682921   0.003429   199.1   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.05371 on 1858 degrees of freedom
## Multiple R-squared:  0.9552, Adjusted R-squared:  0.9552 
## F-statistic: 3.965e+04 on 1 and 1858 DF,  p-value: < 2.2e-16

Diagnostika heteroskedasticity pre log-model

# graf rezíduá vs. fitted pre log-model
plot(
  fitted(model_log),
  resid(model_log),
  pch = 19,
  col = "purple",
  xlab = "Odhadnuté hodnoty (fitted values)",
  ylab = "Rezíduá",
  main = "Rezíduá vs. fitted values (log(FTSE) ~ log(DAX))"
)
abline(h = 0, col = "red", lwd = 2)

# Breusch–Pagan test pre log-model
bptest(model_log)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_log
## BP = 87.751, df = 1, p-value < 2.2e-16

Interpretácia:

  • V grafe skontroluj, či je mrak bodov rovnomernejší ako pri pôvodnom modeli.
  • V outpute bptest(model_log) porovnaj p-hodnotu s 0.05.
    Ak sa p-hodnota zvýši alebo už nie je štatisticky významná,
    logaritmická transformácia pomohla znížiť heteroskedasticitu.

Záver

V tejto úlohe som:

  1. Odhadla jednoduchý lineárny model FTSE ~ DAX na databáze EuStockMarkets.
  2. Pomocou grafu rezíduí a Breusch–Pagan testu som overila,
    či je v modeli prítomná heteroskedasticita.
  3. Ako riešenie som použila:
    • robustné smerodajné odchýlky (HC) – vhodné, ak nechceme meniť štruktúru modelu,
    • logaritmickú transformáciu premenných – ktorá často stabilizuje rozptyl chýb.

Pri interpretácii stačí zdôrazniť: