Zmienne instrumentalne i endogeniczność (IV, 2SLS)
Endogeniczność, obciążenie estymatora MNK, metoda zmiennych instrumentalnych i 2SLS — teoria, słabe instrumenty, test Hausmana, przykłady w R i Python
Problem: endogeniczność
Klasyczna Metoda Najmniejszych Kwadratów (MNK) jest nieobciążona i zgodna tylko gdy spełnione jest założenie egzogeniczności:
$$ \mathbb{E}[\varepsilon_i \mid X_i] = 0 $$Gdy regresor jest skorelowany ze składnikiem losowym, $\text{Cov}(X, \varepsilon) \neq 0$, mówimy o endogeniczności. Estymator MNK staje się wtedy obciążony i niezgodny — i to obciążenie nie znika nawet przy $n \to \infty$.
Trzy główne źródła endogeniczności
| Źródło | Mechanizm | Przykład |
|---|---|---|
| Pominięte zmienne | Nieobserwowalna cecha wpływa na X i Y | Zdolności wpływają na edukację i płacę |
| Błąd pomiaru | X mierzony z błędem | Deklarowany dochód vs. rzeczywisty |
| Symultaniczność | X i Y wzajemnie się wyznaczają | Cena i ilość (podaż = popyt) |
Przykład: zwrot z edukacji
Chcemy oszacować wpływ edukacji na płacę:
$$ \ln(\text{płaca}_i) = \beta_0 + \beta_1 \text{edukacja}_i + \varepsilon_i $$Problem: zdolności (nieobserwowalne) są w $\varepsilon$ i jednocześnie korelują z edukacją (zdolniejsi uczą się dłużej). MNK myli zwrot z edukacji ze zwrotem ze zdolności — $\hat{\beta}_1$ jest zawyżony.
Rozwiązanie: zmienna instrumentalna
Instrument $Z$ to zmienna, która wpływa na $Y$ wyłącznie poprzez endogeniczny regresor $X$. Dobry instrument musi spełniać dwa warunki:
- Trafność (relevance): $\text{Cov}(Z, X) \neq 0$ — instrument jest skorelowany z endogenicznym regresorem. Sprawdzalne empirycznie.
- Egzogeniczność (exclusion): $\text{Cov}(Z, \varepsilon) = 0$ — instrument nie wpływa bezpośrednio na Y ani nie koreluje z pominiętymi czynnikami. Niesprawdzalne — wymaga argumentu merytorycznego.
Intuicja graficzna
Z ───────► X ───────► Y
(instrument) (endogen.) (wynik)
▲
│ ε (zdolności)
└──────────────┘
Instrument $Z$ wprowadza egzogeniczną zmienność do $X$ — zmienność niezależną od $\varepsilon$. Wykorzystujemy tylko tę „czystą" część $X$ do estymacji $\beta_1$.
Klasyczne instrumenty
- Odległość do uczelni (Card 1995) — instrument dla edukacji
- Kwartał urodzenia (Angrist & Krueger 1991) — wpływa na lata edukacji przez obowiązek szkolny
- Pogoda — instrument dla podaży produktów rolnych w równaniu popytu
Estymator IV (jeden instrument)
Dla jednego regresora i jednego instrumentu:
$$ \hat{\beta}_1^{IV} = \frac{\text{Cov}(Z, Y)}{\text{Cov}(Z, X)} = \frac{\sum (z_i - \bar{z})(y_i - \bar{y})}{\sum (z_i - \bar{z})(x_i - \bar{x})} $$Estymator jest zgodny, ale tylko asymptotycznie nieobciążony (w małych próbach ma obciążenie).
Metoda 2SLS (dwustopniowa MNK)
Gdy instrumentów jest więcej niż endogenicznych regresorów, stosujemy Two-Stage Least Squares:
Etap 1 — regresja endogenicznego $X$ na wszystkie instrumenty i egzogeniczne zmienne:
$$ X_i = \pi_0 + \pi_1 Z_i + \pi_2 W_i + v_i \quad\Rightarrow\quad \hat{X}_i $$Etap 2 — regresja $Y$ na dopasowane $\hat{X}$ (zamiast oryginalnego X):
$$ Y_i = \beta_0 + \beta_1 \hat{X}_i + \beta_2 W_i + u_i $$$\hat{X}$ zawiera tylko zmienność wyjaśnioną przez instrumenty — egzogeniczną.
Uwaga: Nie rób tego ręcznie w dwóch krokach! Błędy standardowe z etapu 2 byłyby błędne. Używaj dedykowanej funkcji (
ivreg,IV2SLS), która liczy poprawne SE.
Implementacja w R
library(AER)
data("CollegeDistance") # dane Card (1995)
# MNK (obciążone — edukacja endogeniczna)
mnk <- lm(log(wage) ~ education + experience + ethnicity,
data = CollegeDistance)
# IV: distance (odległość do college) jako instrument dla education
iv <- ivreg(log(wage) ~ education + experience + ethnicity |
distance + experience + ethnicity, # po | : instrumenty
data = CollegeDistance)
summary(iv, diagnostics = TRUE)
Składnia ivreg: po znaku | podajemy wszystkie egzogeniczne zmienne — instrumenty plus egzogeniczne regresory z modelu (experience, ethnicity wchodzą jako własne instrumenty).
Diagnostyka (kluczowa!)
summary(iv, diagnostics = TRUE) zwraca trzy testy:
| Test | H0 | Interpretacja |
|---|---|---|
| Weak instruments | Instrument słaby | Odrzuć H0 → instrument trafny (F > 10) |
| Wu-Hausman | X egzogeniczne | Odrzuć H0 → IV potrzebne, MNK obciążone |
| Sargan | Instrumenty egzogeniczne | NIE odrzucaj → instrumenty OK (tylko gdy nadidentyfikacja) |
Implementacja w Python
import pandas as pd
from linearmodels.iv import IV2SLS
import statsmodels.api as sm
df = pd.read_csv("dane.csv")
df = sm.add_constant(df)
# IV2SLS: endogeniczne w [], instrumenty w []
model = IV2SLS(
dependent=df['log_wage'],
exog=df[['const', 'experience']], # egzogeniczne
endog=df[['education']], # endogeniczne
instruments=df[['distance']] # instrumenty
).fit(cov_type='robust')
print(model.summary)
print(model.first_stage) # diagnostyka etapu 1
Słabe instrumenty — najczęstszy błąd
Gdy $\text{Cov}(Z, X)$ jest bliskie zera, instrument jest słaby. Konsekwencje:
- Estymator IV ma ogromną wariancję
- Obciążenie w małej próbie wraca w kierunku MNK
- Przedziały ufności są zawodne
Reguła kciuka (Staiger-Stock): statystyka F z pierwszego etapu powinna być F > 10. Poniżej — instrument za słaby.
# Test siły instrumentu = F dla instrumentów w I etapie
etap1 <- lm(education ~ distance + experience + ethnicity,
data = CollegeDistance)
# Porównaj z modelem bez instrumentu
library(car)
linearHypothesis(etap1, "distance = 0") # F powinno być > 10
Test Hausmana — zasadność zastosowania IV
IV jest mniej efektywne niż MNK (większe SE). Stosuj je tylko gdy endogeniczność rzeczywiście występuje. Test Wu-Hausmana porównuje oba estymatory:
$$ H_0: \text{Cov}(X, \varepsilon) = 0 \quad (\text{MNK zgodne, użyj MNK}) $$- Nie odrzucamy H0 → brak dowodu endogeniczności → MNK (efektywniejsze)
- Odrzucamy H0 → endogeniczność → IV (mimo większych SE)
Podsumowanie — checklist IV
- ✅ Czy masz teoretyczny powód podejrzewać endogeniczność?
- ✅ Czy instrument jest trafny? (F > 10 w I etapie)
- ✅ Czy instrument jest egzogeniczny? (argument merytoryczny + Sargan przy nadidentyfikacji)
- ✅ Test Hausmana potwierdza potrzebę IV?
- ✅ Używasz dedykowanej funkcji (poprawne SE)?
Złota zasada (Angrist & Pischke): Dobry instrument wymaga przekonującej historii o tym, dlaczego jest losowy względem wyniku. Statystyka nie udowodni egzogeniczności — to argument ekonomiczny.
- Wooldridge, Introductory Econometrics, rozdz. 15
- Angrist & Pischke, Mostly Harmless Econometrics, rozdz. 4
- Pakiet R:
AER::ivreg() - Python:
linearmodels.iv.IV2SLS
Wymagane pakiety:
install.packages(c("AER", "lmtest", "sandwich"))
library(AER) # ivreg
pip install linearmodels statsmodels pandas
from linearmodels.iv import IV2SLS