IV / 2SLS — Biến công cụ & bình phương nhỏ nhất hai giai đoạn
IV/2SLS xử lý nội sinh (endogeneity) — khi biến giải thích tương quan với sai số (do biến bị bỏ sót, sai số đo lường, hoặc đồng thời). Khi đó OLS chệch và không nhất quán. IV dùng biến công cụ (instrument) để tách phần ngoại sinh của biến nội sinh.
Điều kiện biến công cụ hợp lệ
Một công cụ hợp lệ phải: (1) liên quan (relevance) — tương quan với biến nội sinh; (2) ngoại sinh (exogeneity/exclusion) — chỉ ảnh hưởng qua biến nội sinh, không trực tiếp. Công cụ yếu (weak instrument) gây ước lượng chệch nặng.
Cơ chế 2 giai đoạn
Kiểm định bắt buộc
- Công cụ yếu: thống kê F giai đoạn 1 (kinh nghiệm: F > 10).
- Nội sinh: kiểm định Durbin-Wu-Hausman (có cần IV không?).
- Overidentification: kiểm định Sargan/Hansen J (khi số công cụ > số biến nội sinh).
Thực hiện trong EcoLab
- Module Mô hình hóa → họ IV & hệ phương trình → IV/2SLS.
- Khai báo , biến ngoại sinh, biến nội sinh và biến công cụ .
- Chạy, đọc F giai đoạn 1, hệ số 2SLS, Sargan/Hansen; xuất mã tái lập.
Minh họa mã tái lập
- Stata
- R
- Python
* === IV / 2SLS — Ước lượng biến công cụ ===
* Hồi quy 2SLS: educ là biến nội sinh, near_college & parent_educ là công cụ
ivregress 2sls lnwage exper exper2 (educ = near_college parent_educ), first
* Kiểm định công cụ yếu (F giai đoạn 1 > 10)
estat firststage
* Kiểm định overidentification (Sargan/Hansen)
estat overid
* Kiểm định nội sinh (Durbin-Wu-Hausman)
estat endogtest
# === IV / 2SLS — Ước lượng biến công cụ ===
library(AER)
# Hồi quy 2SLS: educ là nội sinh, near_college & parent_educ là công cụ
# Công thức: Y ~ endogenous + exogenous | instruments + exogenous
iv <- ivreg(lnwage ~ educ + exper + I(exper^2) |
near_college + parent_educ + exper + I(exper^2),
data = df)
# Kết quả với kiểm định chẩn đoán (weak instruments, Wu-Hausman, Sargan)
summary(iv, diagnostics = TRUE)
# === IV / 2SLS — Ước lượng biến công cụ ===
from linearmodels.iv import IV2SLS
# Chuẩn bị biến
dep = df['lnwage'] # Biến phụ thuộc
exog = df[['exper', 'exper2']] # Biến ngoại sinh
endog = df[['educ']] # Biến nội sinh
instruments = df[['near_college', 'parent_educ']] # Biến công cụ
# Ước lượng 2SLS
model = IV2SLS(dep, exog, endog, instruments)
result = model.fit(cov_type='robust')
print(result)
# Kiểm định: first-stage F, Sargan overid, Wu-Hausman đều có trong result
Hạn chế
- Công cụ yếu/không hợp lệ làm IV tệ hơn OLS.
- Tìm công cụ tốt thường khó; cần lập luận lý thuyết vững.