Regresja liniowa — od teorii do praktyki
Model regresji prostej i wielorakiej: estymacja MNK, interpretacja współczynników, testy i diagnostyka
Model regresji prostej
Najprostszy model: jedna zmienna objaśniająca.
$$Y_i = \beta_0 + \beta_1 X_i + \varepsilon_i \quad i = 1, 2, \ldots, n$$Gdzie:
- $Y_i$ — zmienna zależna (objaśniana), np. dochód
- $X_i$ — zmienna niezależna (objaśniająca), np. lata edukacji
- $\beta_0$ — wyraz wolny (intercept) — wartość $Y$ gdy $X = 0$
- $\beta_1$ — współczynnik nachylenia (slope) — o ile zmienia się $Y$ gdy $X$ rośnie o 1
- $\varepsilon_i$ — składnik losowy (błąd), nieobserwowany
Metoda Najmniejszych Kwadratów (MNK)
Szukamy $\hat{\beta}_0$ i $\hat{\beta}_1$ minimalizujących sumę kwadratów reszt:
$$SSR = \sum_{i=1}^{n}(Y_i - \hat{Y}_i)^2 = \sum_{i=1}^{n}(Y_i - \hat{\beta}_0 - \hat{\beta}_1 X_i)^2$$Rozwiązanie (przyrównując pochodne do zera):
$$\hat{\beta}_1 = \frac{\sum_{i=1}^n (X_i - \bar{X})(Y_i - \bar{Y})}{\sum_{i=1}^n (X_i - \bar{X})^2} = \frac{Cov(X,Y)}{Var(X)}$$$$\hat{\beta}_0 = \bar{Y} - \hat{\beta}_1 \bar{X}$$Intuicja
$\hat{\beta}_1$ to znormalizowana kowariancja — miara jak mocno $X$ i $Y$ “poruszają się razem”, podzielona przez zmienność $X$.
Założenia klasycznego modelu
Żeby MNK było BLUE (Best Linear Unbiased Estimator — Twierdzenie Gaussa-Markowa):
| Założenie | Opis | Co się psuje gdy naruszone |
|---|---|---|
| A1 Liniowość | Model jest liniowy w parametrach | Obciążenie |
| A2 Random sampling | Próba jest losowa | Brak reprezentatywności |
| A3 Brak perfekcyjnej multikolinearności | $X$-y nie są liniowo zależne | $(\mathbf{X}^T\mathbf{X})$ nieinwertowalna |
| A4 Zerowa wartość oczekiwana błędu | $E(\varepsilon_i \| X_i) = 0$ | Obciążenie estymatorów |
| A5 Homoskedastyczność | $Var(\varepsilon_i \| X_i) = \sigma^2$ | Nieefektywność, błędne SE |
Dodając założenie normalności reszt ($\varepsilon \sim N(0, \sigma^2)$):
A6 Normalność — konieczna do testowania hipotez w małych próbach.
Interpretacja współczynników
Regresja prosta
$$\text{Dochód} = 10{,}000 + 3{,}000 \cdot \text{Edukacja}$$- Wyraz wolny 10 000: osoba bez edukacji (0 lat) zarabiałaby 10 000 zł — często niemająca sensu ekonomicznego interpretacja
- Nachylenie 3 000: każdy dodatkowy rok edukacji wiąże się ze średnio 3 000 zł wyższym dochodem, ceteris paribus
Zmienne log-liniowe
$$\ln(\text{Dochód}) = \alpha + \beta \cdot \text{Edukacja}$$Tu $\beta \approx$ procentowa zmiana dochodu na 1 rok edukacji (np. $\beta = 0.08$ → 8% więcej za każdy rok).
$$\ln(\text{Dochód}) = \alpha + \beta \cdot \ln(\text{Edukacja})$$Tu $\beta$ = elastyczność — 1% więcej edukacji → $\beta$% więcej dochodu.
Miary dopasowania modelu
$R^2$ — współczynnik determinacji
$$R^2 = 1 - \frac{SSR}{SST} = 1 - \frac{\sum(\hat{\varepsilon}_i)^2}{\sum(Y_i - \bar{Y})^2}$$$R^2 \in [0, 1]$: jaki odsetek zmienności $Y$ wyjaśnia model.
Pułapka: $R^2$ zawsze rośnie gdy dodajemy zmienne! Dlatego używamy skorygowanego:
$$\bar{R}^2 = 1 - \frac{SSR/(n-k-1)}{SST/(n-1)}$$Koryguje za liczbę zmiennych. Może spaść gdy dodamy nieistotną zmienną.
Testy istotności
Test t dla współczynnika
Hipoteza zerowa: $H_0: \beta_j = 0$ (zmienna $j$ nie ma wpływu)
Statystyka:
$$t = \frac{\hat{\beta}_j - 0}{SE(\hat{\beta}_j)} \sim t_{n-k-1}$$Odrzucamy $H_0$ gdy $|t| > t_{\alpha/2, n-k-1}$ lub gdy p-wartość $< \alpha$.
Test F dla całego modelu
$H_0: \beta_1 = \beta_2 = \cdots = \beta_k = 0$ (model nie wyjaśnia niczego)
$$F = \frac{(SST - SSR)/k}{SSR/(n-k-1)} \sim F_{k, n-k-1}$$Diagnostyka modelu
1. Wykres reszt vs. dopasowanie
Powinno wyglądać jak “chmura” — brak wzorca. Wzorzec → problem z modelem.
2. Normalność reszt
Test Shapiro-Wilka lub wykres QQ. Przy dużych próbach ($n > 100$) mniej krytyczne.
3. Heteroskedastyczność
Test Breusha-Pagana lub Whitea. Gdy wykryta — używaj odpornych błędów standardowych (robust standard errors):
# R — odporne błędy (HC standard errors)
library(sandwich); library(lmtest)
coeftest(model, vcov = vcovHC(model, type = "HC3"))
4. Multikolinearność
VIF (Variance Inflation Factor): $VIF_j = \frac{1}{1-R_j^2}$
- $VIF < 5$ → OK
- $VIF > 10$ → poważny problem
Następnie: Testy hipotez w ekonometrii
- Khan Academy — Regression
- Podręcznik: Wooldridge, Introductory Econometrics (rozdziały 2-4) — najlepsza książka do nauki
- Podręcznik: Greene, Econometric Analysis
- YouTube: Ben Lambert — Econometrics Course
R:
# Wczytaj dane
data(mtcars)
# Regresja prosta: mpg = β0 + β1*wt + ε
model1 <- lm(mpg ~ wt, data = mtcars)
summary(model1)
# Regresja wieloraka
model2 <- lm(mpg ~ wt + hp + cyl, data = mtcars)
summary(model2)
# Diagnostyka
plot(model2) # wykresy diagnostyczne
car::vif(model2) # VIF (multikolinearność)
Python (statsmodels):
import statsmodels.formula.api as smf
import statsmodels.api as sm
# Regresja prosta
model = smf.ols('mpg ~ wt', data=mtcars).fit()
print(model.summary())
# Regresja wieloraka
model2 = smf.ols('mpg ~ wt + hp + cyl', data=mtcars).fit()
print(model2.summary())
# Diagnostyka reszt
sm.qqplot(model2.resid, line='s')