Słownik metodologiczny · Modele regresji

Dwustopniowa MNK (2SLS) – jak policzyć i czego nie brać z drugiego lm()?

Dwustopniowa MNK szacuje efekt przy niezmierzonym zakłóceniu dzięki zmiennej instrumentalnej. Pokazujemy dwa etapy w R, poprawny błąd standardowy, skutki słabego instrumentu i opis do pracy.

Strona główna / Słownik / Dwustopniowa MNK (2SLS)
W skrócie: Dwustopniowa MNK (2SLS) szacuje efekt X na Y z instrumentem Z: najpierw przewiduje X z Z, potem regresuje Y na przewidywanym X. Błąd standardowy z ręcznego drugiego etapu jest niepoprawny, a słaby instrument obciąża wynik.

Co to jest dwustopniowa MNK?

Dwustopniowa metoda najmniejszych kwadratów (2SLS, ang. two-stage least squares) szacuje efekt X na Y za pomocą instrumentu Z, gdy X zależy od niezmierzonej zmiennej zakłócającej. Zwykła MNK jest wtedy obciążona. 2SLS wykorzystuje tylko tę część zmienności X, którą wyjaśnia instrument (Lousdal, 2018). Przy jednym binarnym instrumencie 2SLS daje estymator Walda, czyli LATE.

Dwa etapy

  1. Pierwszy etap: regresja X na Z i zmiennych kontrolnych. Zapisz wartości przewidywane X̂. Statystyka F instrumentu mierzy jego siłę.
  2. Drugi etap: regresja Y na X̂ i tych samych zmiennych kontrolnych. Współczynnik przy X̂ to efekt 2SLS.

Współczynnik z ręcznego drugiego lm() jest poprawny, ale błąd standardowy nie. Program liczy reszty z X̂, a poprawne reszty to Y − b₀ − b₁X z rzeczywistym X. SE trzeba przeskalować ilorazem odchyleń standardowych obu reszt albo dopasować model w lavaan.

Przykład

W symulacji (N = 500) prawdziwy efekt wynosi 2, a niezmierzona zmienna U wpływa na X i Y. Instrument jest silny: F = 93.0. MNK daje 3.27, a 2SLS 1.97. Drugie lm() podaje SE = 0.432, a poprawny błąd wynosi 0.281. Tyle samo daje lavaan (b = 1.966, SE = 0.281).

Staiger i Stock (1997) pokazali, że przy słabym instrumencie 2SLS bywa silnie obciążony nawet w dużych próbach. W 2000 symulacjach ze słabym instrumentem (mediana F = 0.83) mediana 2SLS wyniosła 2.88. To bliżej obciążonej MNK (3.50) niż prawdziwego efektu. W praktyce F pierwszego etapu poniżej 10 traktuje się jako sygnał ostrzegawczy.

Jak opisać w pracy

Efekt X na Y oszacowano dwustopniową metodą najmniejszych kwadratów z Z jako instrumentem. Instrument był silny (F pierwszego etapu = 93.0). Efekt wyniósł b = 1.97, SE = 0.28, 95% CI [1.41, 2.52]. Zwykła regresja dała 3.27, co jest zgodne z obciążeniem przez niezmierzone zakłócenie.

Na co uważać

Przykład reprodukowalny

2SLS w R bez pakietów ekonometrycznych

Kod liczy oba etapy ręcznie, poprawia błąd standardowy, sprawdza wynik w lavaan i powtarza badanie 2000 razy ze słabym instrumentem.

Ręczne 2SLS, poprawny SE i słaby instrument

Dane wejściowe: 500 obserwacji, instrument Z, niezmierzone zakłócenie U, prawdziwy efekt X = 2 (dane symulowane, set.seed(3331); słaby instrument set.seed(3332)).

Co odczytać: F pierwszego etapu, MNK, 2SLS, SE z drugiego lm() i poprawne, wynik lavaan, 95% CI oraz mediany F, 2SLS i MNK przy słabym instrumencie.

R
suppressPackageStartupMessages(library(lavaan))
set.seed(3331)
n <- 500
U <- rnorm(n)                                   # niezmierzone zakłócenie
Z <- rnorm(n)                                   # instrument
X <- 0.5 * Z + U + rnorm(n)
Y <- 2 * X + 3 * U + rnorm(n, sd = 2)           # prawdziwy efekt X = 2
d <- data.frame(Y, X, Z)
etap1 <- lm(X ~ Z, data = d)
F1 <- summary(etap1)$fstatistic[1]
d$X_hat <- fitted(etap1)
etap2 <- lm(Y ~ X_hat, data = d)                # ręczny drugi etap
b <- coef(etap2)
res <- d$Y - (b[1] + b[2] * d$X)                # reszty z X rzeczywistym
sigma_ok <- sqrt(sum(res^2) / (n - 2))
se_ok <- summary(etap2)$coef["X_hat", 2] * sigma_ok / summary(etap2)$sigma
iv <- sem("Y ~ X\nX ~ Z\nY ~~ X", data = d)     # to samo w lavaan
round(c(F_etap1 = unname(F1), b_MNK = unname(coef(lm(Y ~ X, d))[2]),
        b_2SLS = unname(b[2]), SE_drugie_lm = summary(etap2)$coef["X_hat", 2],
        SE_poprawne = unname(se_ok), b_lavaan = coef(iv)["Y~X"],
        SE_lavaan = sqrt(vcov(iv)["Y~X", "Y~X"])), 3)
round(b[2] + c(-1, 1) * qnorm(.975) * se_ok, 2)   # 95% CI z poprawnym SE

# ---- Część 2: słaby instrument (2000 powtórzeń) ----
set.seed(3332)
slaby <- replicate(2000, {
  Z <- rnorm(n); U <- rnorm(n)
  X <- 0.05 * Z + U + rnorm(n)
  Y <- 2 * X + 3 * U + rnorm(n, sd = 2)
  e1 <- lm(X ~ Z)
  c(F = unname(summary(e1)$fstatistic[1]), b_2SLS = cov(Z, Y) / cov(Z, X),
    b_MNK = unname(coef(lm(Y ~ X))[2]))
})
round(apply(slaby, 1, median), 2)                # mediany z 2000 badań
Wynik w R
     F_etap1        b_MNK       b_2SLS SE_drugie_lm  SE_poprawne b_lavaan.Y~X 
      93.019        3.273        1.966        0.432        0.281        1.966 
   SE_lavaan 
       0.281 
[1] 1.41 2.52
     F b_2SLS  b_MNK 
  0.83   2.88   3.50

Bibliografia oprogramowania

Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet lavaan). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).

  1. R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
  2. lavaan (wersja 0.7.2): Rosseel, Y. (2012). lavaan: An R package for structural equation modeling. Journal of Statistical Software, 48(2), 1–36. https://doi.org/10.18637/jss.v048.i02

Najczęstsze pytania

Dlaczego błąd standardowy z drugiego etapu 2SLS jest zły?

Drugie lm() liczy reszty z przewidywanym X, a nie z rzeczywistym. Wariancja reszt jest więc błędna. Współczynnik jest dobry, ale SE trzeba poprawić albo użyć gotowego estymatora.

Kiedy instrument jest za słaby?

Gdy słabo przewiduje zmienną endogeniczną. W praktyce F pierwszego etapu poniżej 10 traktuje się jako sygnał ostrzegawczy, bo 2SLS przesuwa się wtedy w stronę obciążonej MNK.

Jak policzyć 2SLS w lavaan?

Zapisz model Y ~ X, X ~ Z oraz korelację reszt Y ~~ X. Przy jednym instrumencie oszacowanie i błąd standardowy są praktycznie takie jak w 2SLS.

Powiązane hasła

Poradniki, w których użyjesz tego pojęcia

Potrzebujesz wsparcia w analizie danych?

Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.

Wyceń analizęOferta dla studentów

Bibliografia i dalsza literatura naukowa (APA 7)

  1. Lousdal, M. L. (2018). An introduction to instrumental variable assumptions, validation and estimation. Emerging Themes in Epidemiology, 15(1), Article 1. https://doi.org/10.1186/s12982-018-0069-7 ● Otwarty dostęp
  2. Staiger, D., & Stock, J. H. (1997). Instrumental variables regression with weak instruments. Econometrica, 65(3), 557–586. https://doi.org/10.2307/2171753

Cytowania BibTeX

@article{lousdal2018introduction, author={Lousdal, Mette Lise}, title={{An introduction to instrumental variable assumptions, validation and estimation}}, journal={Emerging Themes in Epidemiology}, year={2018}, volume={15}, number={1}, eid={1}, doi={10.1186/s12982-018-0069-7}}
@article{staiger1997instrumental, author={Staiger, Douglas and Stock, James H.}, title={{Instrumental variables regression with weak instruments}}, journal={Econometrica}, year={1997}, volume={65}, number={3}, pages={557--586}, doi={10.2307/2171753}}
R