fpwiki
TémaMASK upraveno 2026-10-02

Regresní a korelační analýza

Regresní a korelační analýza

Základní pojmy

Metody aplikované statistiky pracuje se dvěma znaky xx a yy zjištěnými na stejných jednotkách. Regresní analýza se zabývá jednostrannými závislostmi, kdy proti sobě stojí vysvětlující (nezávisle) proměnná xx v úloze příčiny a vysvětlovaná (závisle) proměnná yy v úloze následku. Korelační analýza se zabývá vzájemnými, většinou lineárními závislostmi; důraz je kladen na intenzitu vztahu. Oba přístupy se v praxi prolínají — nejdřív se zvolí a odhadne regresní funkce, pak se její kvalita vyjádří korelační charakteristikou.

Hlavním úkolem obou analýz je přispět k poznání vztahů mezi znaky — podat matematický popis systematických okolností, které závislost provázejí, a nalézt funkci, která nejlépe vystihuje její charakter (regresní funkce).

Druh regresní analýzy určuje struktura datového souboru:

  • dvourozměrný datový soubor (jedna xx, jedna yy) → regresní analýza dvou proměnných,
  • vícerozměrný datový soubor (více x1,…,xpx_1,\dots,x_p) → vícenásobná regresní analýza.

Volba konkrétní regresní funkce by měla vycházet jak z ekonomické teorie (ta napovídá, zda závislost roste, nebo klesá, zda je přímková, nebo zakřivená), tak z grafické a matematicko-statistické analýzy dat — oba přístupy je vhodné kombinovat.

Metoda nejmenších čtverců

Rozlišují se teoretická regresní funkce η=f(x;β0,β1,…,βp)\eta = f(x;\beta_0,\beta_1,\dots,\beta_p) — neznámá, populační, daná neznámými parametry βi\beta_i — a empirická regresní funkce y^=f(x;b0,b1,…,bp)\hat y = f(x; b_0,b_1,\dots,b_p), jejíž odhadnuté parametry bib_i jsou odhadem βi\beta_i vypočteným z konkrétních dat. Odchylky skutečných hodnot od empirické funkce, ei=yi−y^ie_i=y_i-\hat y_i, se nazývají rezidua.

Nejpoužívanější metodou odhadu parametrů je metoda nejmenších čtverců (OLS): hledají se takové parametry, pro které je součet čtverců reziduí minimální,

∑i=1n(yi−y^i)2→min⁡.\sum_{i=1}^n (y_i - \hat y_i)^2 \to \min.

Odhad probíhá ve čtyřech krocích: (1) posoudit dostupné informace o charakteru závislosti, (2) navrhnout jeden nebo víc typů regresních funkcí, (3) odhadnout jejich parametry metodou nejmenších čtverců, (4) porovnat vhodnost odhadnutých funkcí a při neuspokojivém výsledku zvolit jiný typ.

Obrázek ukazuje přesně to, co metoda minimalizuje: délky červených úseček jsou rezidua eie_i, metoda nejmenších čtverců volí přímku tak, aby součet jejich čtverců byl nejmenší možný.

Regresní přímka

Nejjednodušší regresní funkcí je regresní přímka:

η=β0+β1x,y^=b0+b1x.\eta = \beta_0 + \beta_1 x, \qquad \hat y = b_0 + b_1 x.

Koeficient b1b_1 udává změnu průměru yy při jednotkové změně xx; jeho znaménko určuje, zda je závislost přímá, nebo nepřímá.

V R

Vstupní data se nahrají buď ze souboru (d <- read.table("data.txt"), případně d <- read.table(file.choose())), nebo zapíší přímo jako vektory. Na šesti domácnostech sledujeme počet členů domácnosti a jejich týdenní výdaje:

pocet_clenu <- c(1, 2, 3, 4, 5, 6)
tydenni_vydaje <- c(490, 820, 1230, 1570, 1950, 2320)
model <- lm(tydenni_vydaje ~ pocet_clenu)
summary(model)
Call:
lm(formula = tydenni_vydaje ~ pocet_clenu)

Residuals:
      1       2       3       4       5       6 
 13.333 -24.667  17.333 -10.667   1.333   3.333 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  108.667     16.214   6.702  0.00258 ** 
pocet_clenu  368.000      4.163  88.391 9.82e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 17.42 on 4 degrees of freedom
Multiple R-squared:  0.9995,    Adjusted R-squared:  0.9994 
F-statistic:  7813 on 1 and 4 DF,  p-value: 9.821e-08

Odhadnutý model je y^=108,7+368,0 x\hat y = 108{,}7 + 368{,}0\,x. Sloupec Pr(>|t|) je p-hodnota t-testu H0:βi=0H_0:\beta_i=0 proti H1:βi≠0H_1:\beta_i\neq0 pro každý parametr — obě p-hodnoty jsou hluboko pod 0,05, oba parametry jsou tedy statisticky významné. Multiple R-squared je index determinace R2=0,9995R^2=0{,}9995: model vysvětluje 99,95 % rozptylu výdajů.

Pro doplňkový přehled slouží přímé přístupové funkce:

coef(model)
fitted(model)
residuals(model)
(Intercept) pocet_clenu 
   108.6667    368.0000 
        1         2         3         4         5         6 
 476.6667  844.6667 1212.6667 1580.6667 1948.6667 2316.6667 
         1          2          3          4          5          6 
 13.333333 -24.666667  17.333333 -10.666667   1.333333   3.333333 

coef() vrací odhadnuté parametry b0,b1b_0,b_1, fitted() predikce y^i\hat y_i pro pozorované xix_i, residuals() rezidua ei=yi−y^ie_i=y_i-\hat y_i — stejná čísla, která na obrázku výše tvoří délky červených úseček.

Intervaly spolehlivosti pro parametry a pro predikci v nových bodech xx (zde 7 a 8 členů domácnosti):

confint(model, level = 0.95)
nove <- data.frame(pocet_clenu = c(7, 8))
predict(model, newdata = nove, interval = "confidence", level = 0.95)
predict(model, newdata = nove, interval = "prediction", level = 0.95)
                2.5 %   97.5 %
(Intercept)  63.64981 153.6835
pocet_clenu 356.44074 379.5593
       fit     lwr      upr
1 2684.667 2639.65 2729.684
2 3052.667 2997.03 3108.303
       fit      lwr      upr
1 2684.667 2618.600 2750.733
2 3052.667 2978.953 3126.381

interval = "confidence" dává interval spolehlivosti pro střední hodnotu yy při daném xx, interval = "prediction" širší interval pro jednotlivé budoucí pozorování — ten musí zahrnout i rozptyl kolem regresní přímky, proto je vždy širší.

Diagnostika modelu

Platnost závěrů z regresní přímky stojí na předpokladech o reziduích: absenci autokorelace, stálosti rozptylu (homoskedasticitě) a normalitě. V R se ověřují takto:

library(lmtest)
dwtest(model)
    Durbin-Watson test

data:  model
DW = 3.4121, p-value = 0.9555
alternative hypothesis: true autocorrelation is greater than 0

Durbinův–Watsonův test má H0H_0: v modelu není problém s autokorelací, proti H1H_1: v modelu problém s autokorelací je. Statistika DW se pohybuje mezi 0 a 4, hodnota blízko 2 znamená žádnou autokorelaci. Zde p-hodnota 0,96 je výrazně nad 0,05, H0H_0 se nezamítá.

library(whitestrap)
white_test(model)
White's test results

Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 3.14
P-value: 0.207817

Whiteův test má H0H_0: rozptyl reziduí je stálý (homoskedasticita), proti H1H_1: rozptyl není stálý (heteroskedasticita). P-hodnota 0,21 je nad 0,05, H0H_0 se nezamítá.

shapiro.test(residuals(model))
    Shapiro-Wilk normality test

data:  residuals(model)
W = 0.94818, p-value = 0.7255

Shapiro–Wilkův test má H0H_0: rezidua pocházejí z normálního rozdělení. P-hodnota 0,73 opět nevede k zamítnutí — všechny tři předpoklady model splňuje.

Grafická kontrola normality doplňuje Shapiro–Wilkův test: body v levém panelu by měly být rovnoměrně rozptýlené po obou stranách vodorovné osy (bez trychtýře či oblouku), body v Q-Q grafu by měly ležet kolem přímky. U malého počtu pozorování se dává přednost testu; u velkého datového souboru se předpoklad normality reziduí stává méně kritickým díky centrální limitní větě.

Nelineární a vyšší řády regresních funkcí

Když přímka závislost nevystihuje, nabízí se další lineární funkce — tedy funkce lineární ve svých parametrech, zapsatelné ve tvaru η=β0+β1f1(x)+⋯+βpfp(x)\eta=\beta_0+\beta_1 f_1(x)+\dots+\beta_p f_p(x) se známými funkcemi fif_i a neznámými parametry βi\beta_i. I tyto parametry se odhadují metodou nejmenších čtverců, stejně jako u přímky:

parabolickaˊ regrese: y^=b0+b1x+b2x2polynomickaˊ regrese p-teˊho stupneˇ: y^=b0+b1x+b2x2+⋯+bpxphyperbolickaˊ regrese: y^=b0+b11xlogaritmickaˊ regrese: y^=b0+b1ln⁡x\begin{aligned} \text{parabolická regrese: }\quad &\hat y = b_0 + b_1 x + b_2 x^2\\ \text{polynomická regrese $p$-tého stupně: }\quad &\hat y = b_0 + b_1 x + b_2 x^2 + \dots + b_p x^p\\ \text{hyperbolická regrese: }\quad &\hat y = b_0 + b_1\frac1x\\ \text{logaritmická regrese: }\quad &\hat y = b_0 + b_1\ln x \end{aligned}

Naproti tomu nelineární funkce nelze do tvaru η=β0+β1f1(x)+…\eta=\beta_0+\beta_1 f_1(x)+\dots převést — je nelineární i ve svých parametrech. Jejich parametry nelze získat přímo metodou nejmenších čtverců, ale vhodnou transformací nebo iterativně. Základní příklad je exponenciální regrese:

y^=b0⋅b1 x.\hat y = b_0 \cdot b_1^{\,x}.

V R — parabolická regrese

Na ročních ziscích firmy (šest let) se parabolická regrese odhadne přidáním kvadratického členu I(x^2):

rok <- c(1, 2, 3, 4, 5, 6)
zisk <- c(112, 149, 238, 354, 580, 867)
model_parabola <- lm(zisk ~ rok + I(rok^2))
summary(model_parabola)
Call:
lm(formula = zisk ~ rok + I(rok^2))

Residuals:
      1       2       3       4       5       6 
 -8.071   9.243  14.343 -17.771  -4.100   6.357 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)  164.600     27.892   5.901  0.00972 **
rok          -76.636     18.248  -4.200  0.02464 * 
I(rok^2)      32.107      2.552  12.582  0.00108 **
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 15.59 on 3 degrees of freedom
Multiple R-squared:  0.9983,    Adjusted R-squared:  0.9971 
F-statistic: 868.7 on 2 and 3 DF,  p-value: 7.156e-05

Odhadnutá parabola y^=164,6−76,6 x+32,1 x2\hat y = 164{,}6 - 76{,}6\,x + 32{,}1\,x^2 vysvětluje 99,8 % rozptylu zisku — podstatně víc, než by vysvětlila přímka proložená stejně rostoucími daty.

V R — exponenciální regrese

Nelineární funkce se v R odhadují funkcí nls2() ze stejnojmenného balíčku. Bez zadaných počátečních hodnot R upozorní, že parametry nastavil na 1, a odhad dopočítá iteračně:

library(nls2)
model_exp <- nls2(zisk ~ b1 * exp(b2 * rok))
summary(model_exp)
Formula: zisk ~ b1 * exp(b2 * rok)

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
b1 65.35423    3.57542   18.28 5.27e-05 ***
b2  0.43161    0.01013   42.63 1.81e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11.89 on 4 degrees of freedom

Stejnou křivku lze zapsat i v mocninném tvaru y^=b1⋅b2x\hat y=b_1\cdot b_2^{x}:

model_pow <- nls2(zisk ~ b1 * (b2^rok))
summary(model_pow)
Formula: zisk ~ b1 * (b2^rok)

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
b1 65.35424    3.57542   18.28 5.27e-05 ***
b2  1.53973    0.01559   98.76 6.30e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 11.89 on 4 degrees of freedom

Obě varianty popisují stejnou křivku (b2mocninnyˊ=e b2exponenciaˊlnıˊb_2^{\text{mocninný}} = e^{\,b_2^{\text{exponenciální}}}, zde e0,4316≈1,540e^{0{,}4316}\approx 1{,}540) a mají totožnou reziduální chybu — je to jen otázka parametrizace.

V R — hyperbolická regrese

Hyperbolická regrese se odhadne jako obyčejná lineární regrese na transformované proměnné I(1/x):

model_hyperbola <- lm(tydenni_vydaje ~ I(1 / pocet_clenu))
summary(model_hyperbola)
Call:
lm(formula = tydenni_vydaje ~ I(1/pocet_clenu))

Residuals:
     1      2      3      4      5      6 
 229.3 -400.7 -310.7 -130.7  153.3  459.3 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)   
(Intercept)        2180.7      266.5   8.182  0.00122 **
I(1/pocet_clenu)  -1920.0      534.6  -3.592  0.02293 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 374.6 on 4 degrees of freedom
Multiple R-squared:  0.7633,    Adjusted R-squared:  0.7041 
F-statistic:  12.9 on 1 and 4 DF,  p-value: 0.02293

Model y^=2180,7−1920,0x\hat y = 2180{,}7 - \dfrac{1920{,}0}{x} vysvětluje jen 76,3 % rozptylu — u těchto dat je hyperbola podstatně horší volbou než přímka (R2=0,9995R^2=0{,}9995). Právě k takovému porovnání slouží index determinace: nízká hodnota signalizuje, že zvolený typ funkce k datům nesedí.

Kvalita regresní funkce a korelační analýza

Kvalitu odhadnuté regresní funkce vyjadřuje index determinace:

R2=sy^2sy2=1−sy−y^2sy2.R^2 = \frac{s^2_{\hat y}}{s^2_y} = 1 - \frac{s^2_{y-\hat y}}{s^2_y}.

Čím blíž je R2R^2 k 1, tím silnější je závislost; v procentech udává, jakou část rozptylu závisle proměnné yy se podařilo vysvětlit zvolenou regresní funkcí. Nízký index determinace může signalizovat špatně zvolený typ regresní funkce, ne nutně absenci závislosti.

Obecnou mírou těsnosti závislosti — platnou pro libovolný typ regresní funkce — je index korelace I=R2I=\sqrt{R^2}. Je-li zvolenou funkcí regresní přímka, index korelace je roven (až na znaménko) koeficientu korelace:

rxy=sxysx2⋅sy2.r_{xy} = \frac{s_{xy}}{\sqrt{s^2_x\cdot s^2_y}}.

Koeficient korelace nabývá hodnot od −1-1 do +1+1: znaménko určuje typ závislosti (pozitivní, nebo negativní), absolutní hodnota její sílu — čím blíž k 0, tím je závislost slabší.

S rostoucí absolutní hodnotou rr se body v rozptylovém grafu víc blíží přímce; kolem r≈0r\approx 0 je mezi xx a yy patrná jen náhodná rozptýlenost bez lineárního trendu.

V R

cor(pocet_clenu, tydenni_vydaje)
[1] 0.9997441

Hodnota 0,9997 odpovídá R2=0,9995\sqrt{R^2}=\sqrt{0{,}9995} ze summary regresní přímky výše — přesně tak, jak definice říká: pro přímkovou regresi je koeficient korelace roven indexu korelace.

Vícenásobná regrese a korelace

Pokud na závisle proměnnou yy působí víc vysvětlujících proměnných současně, analyzuje se zvlášť vliv každé z nich a výsledná regresní funkce se konstruuje jako součet jednoduchých regresních funkcí:

η=β0+β1x1+β2x2+⋯+βpxp,y^=b0+b1x1+⋯+bpxp.\eta = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_p x_p, \qquad \hat y = b_0 + b_1 x_1 + \dots + b_p x_p.

Výběr proměnných

  • Metoda ENTER — vloží do modelu všechny proměnné najednou. Použije se, když jde o index determinace celého modelu, o vliv každé nezávislé proměnné při kontrole vlivu ostatních, nebo o relativní důležitost proměnných. Vyžaduje poměrně vysoký počet pozorování — aspoň 20 na každou proměnnou.
  • Metoda stepwise (postupná regrese) — hledá „nejlepší" model (co nejmíň proměnných, co nejkvalitnější predikce) na základě F-testu; pořadí vstupu/odebrání proměnných řídí program, ne uživatel. Varianta forward proměnné postupně přidává, varianta backward naopak začíná plným modelem a proměnné postupně odebírá. Pořadí vkládání ovlivňuje odhad důležitosti proměnných, proto je třeba metodu zvolit uvážlivě. Stepwise vyžaduje ještě víc pozorování — aspoň 40 na proměnnou.

Postup odhadu

  1. ověření předpokladů regresního modelu,
  2. samotný odhad parametrů,
  3. reziduální analýza výsledného modelu.

Důležitost každého parametru bib_i v modelu ověřuje t-test: H0:βi=0H_0:\beta_i=0 (proměnná je v modelu nevýznamná) proti H1:βi≠0H_1:\beta_i\neq0 (proměnná je významná). Při nezamítnutí H0H_0 by proměnná — a s ní spojený regresor — v modelu neměla zůstat.

Předpoklady modelu

  1. Závisle proměnná yy musí být aspoň intervalového typu (ne binární, diskrétní s málo hodnotami apod.) — jinak je na místě logistická regrese.
  2. Nezávislé proměnné x1,…,xpx_1,\dots,x_p jsou rovněž aspoň intervalového typu, mohou být i alternativní.
  3. Nezávislé proměnné by mezi sebou neměly být příliš vysoce korelované — multikolinearita.
  4. V datech nesmí být odlehlé či extrémní hodnoty; regresní analýza je na ně citlivá a mohou vážně narušit kvalitu odhadů.
  5. Proměnné musí být ve vzájemně lineárním vztahu — vícenásobná lineární regrese je založená na Pearsonově koeficientu korelace, takže nelineární vztahy mezi proměnnými zůstanou neodhalené.
  6. Proměnné mají mít normální rozložení; význam tohoto předpokladu ustupuje do pozadí u dostatečně velkého datového souboru díky centrální limitní větě.

Normalita se u menšího počtu pozorování ověřuje stejnými testy jako u jiných znaků (viz testování statistických hypotéz) — Shapiro–Wilkovým nebo Kolmogorovovým–Smirnovovým testem — nebo graficky grafem reziduí proti predikovaným hodnotám, kde by body měly být rovnoměrně rozptýlené po obou stranách vodorovné osy.

Multikolinearita

Multikolinearita vzniká, když vysvětlující proměnné silně závisejí jedna na druhé. Je nežádoucí, protože:

  • výsledky regrese jsou pak nespolehlivé,
  • zvyšuje pravděpodobnost, že se důležitá proměnná jeví jako statisticky nevýznamná a bude z modelu vyřazena,
  • směrodatné odchylky odhadnutých parametrů jsou vysoké, testová kritéria t-testů nízká, p-hodnoty vysoké.

Pozná se podle vysokých korelačních koeficientů mezi regresory (nad 0,75), podle toho, že celkový F-test modelu je významný, ale jednotlivé t-testy parametrů ne, nebo softwarově přes VIF (Variance Inflation Factor): hodnoty 1<VIF<51<\text{VIF}<5 jsou varující, VIF>5\text{VIF}>5 (přísněji >10>10) značí vysokou multikolinearitu.

Řešení: je-li multikolinearita způsobená silnou závislostí dvou proměnných, jednu z nich se z modelu vyřadí; je-li způsobená závislostí víc proměnných najednou, použije se metoda hlavních komponent a pracuje se s novými, nekorelovanými proměnnými.

Další ukazatele kvality modelu

  • F-test — testuje hypotézu, že všechny regresní koeficienty jsou rovny nule, proti alternativě, že aspoň jeden v modelu být má (celková významnost modelu).
  • RMSE (odmocnina z reziduálního rozptylu) — absolutní měřítko vhodnosti funkce (na rozdíl od indexu determinace, který je relativní); nižší hodnota znamená lepší fit.
  • AIC (Akaikeho informační kritérium) a BIC (Bayesovo informační kritérium) — čím nižší hodnoty obou kritérií, tím lepší model; používají se hlavně při stepwise výběru proměnných.

V R

Pro vícenásobnou regresi je postup v R rozšířením postupu pro regresní přímku — přibývá výběr proměnných a kontrola multikolinearity:

data <- read.table("4_4.txt", header = TRUE)
model_plny <- lm(y ~ x1 + x2 + x3 + x4, data = data)
model_krok <- step(model_plny, direction = "both")
summary(model_krok)

library(car)
vif(model_krok)

library(lmtest)
dwtest(model_krok)

library(whitestrap)
white_test(model_krok)

shapiro.test(residuals(model_krok))

step() provádí stepwise výběr podle AIC, vif() spočítá Variance Inflation Factor pro každý regresor v modelu, zbylé tři volání ověřují stejné tři předpoklady (autokorelace, homoskedasticita, normalita reziduí) jako u regresní přímky výše.

Časté chyby

Související stránky

Reference

KROPÁČ, J. Statistika A. 4. vyd. Brno: Fakulta podnikatelská VUT, 2011.

fpwiki
Nejde o oficiální materiály FP VUT. Obsah je výběrový a slouží jako pomůcka ke studiu. GitHub