Nhóm 9.5: DID cổ điển & Nghiên cứu sự kiện (staggered_did_modern)

Estimated reading: 16 minutes 2 views
Tóm tắt Nhóm phương pháp 9.5 (AEO Quick Answer): Nhóm 9.5 — DID cổ điển & Nghiên cứu sự kiện (mã nhóm staggered_did_modern) là phân nhánh chuyên sâu thuộc Chương 09: Suy luận nhân quả và đánh giá tác động chính sách, quy tụ 8 phương pháp ước lượng (từ B142 đến B152). Phần tổng quan này giúp chúng ta so sánh trực diện điều kiện áp dụng, cấu trúc toán học và cú pháp thực thi trên Stata 18 MP, R 4.x và Python 3.11+ để chọn đúng mô hình cho bài toán nghiên cứu.

1. Bản chất Học thuật & Vị trí của Nhóm 9.5 (DID cổ điển & Nghiên cứu sự kiện)

Khi triển khai nghiên cứu định lượng trong miền Suy luận nhân quả và đánh giá tác động chính sách, chúng ta thường đứng trước câu hỏi: giữa 8 mô hình cùng thuộc nhóm phương pháp con (econometric sub-group, staggered_did_modern), đâu là công cụ khớp nhất với quá trình sinh dữ liệu (DGP) của đề tài?

Mọi phương pháp trong Nhóm 9.5 đều xuất phát từ khung biểu diễn đại số cơ sở của chương như trình bày tại công thức (1):

$$text{ATT}(g, t) = text{E}[Y_{it}(g) – Y_{it}(infty) mid G_{ig} = 1] tag{1}$$

Sự khác biệt giữa các mô hình từ B142 (bacon_decomposition) đến B152 (synthetic_did) nằm ở cách chúng ta đặt giả định lên phân phối của sai số ngẫu nhiên, cấu trúc nội sinh và phương pháp tối ưu hóa hàm mục tiêu từ công thức (1).

2. Bảng So sánh Trực diện 8 Mô hình thuộc Nhóm 9.5

Bảng đối chiếu dưới đây giúp bạn nhìn tổng thể toàn bộ 8 bài học trong Nhóm 9.5 kèm câu lệnh cốt lõi trên cả ba phần mềm:

Mã Bài model_key Tên Mô hình (VI / EN) Cấp độ Lệnh Thực thi Chuẩn (Stata 18 · R 4.x · Python 3.11+) Ý nghĩa Kinh tế lượng Trọng tâm
B142 bacon_decomposition Định lý phân rã trọng số $2times 2$ và so sánh bị cấm của Goodman-Bacon (bacondecomp)
Goodman-Bacon $2times 2$ TWFE Weight & Forbidden-Comparison Decomposition
L3 Stata: bacondecomp (ssc install bacondecomp: bacondecomp y treat, ddetail)
R: bacondecomp (bacondecomp::bacon(y ~ treat, data = df, id_var = "id", time_var = "year") trên CRAN active)
Python: Exact Goodman-Bacon Theorem 1 closed-form $2times 2$ DID variance-weight & within/between decomposition solver (numpy/pandas)
Phân rã chính xác hệ số $hat{beta}_{text{TWFE}}$ trên dữ liệu bảng lệch pha thành trung bình có trọng số của mọi cặp so sánh $2times 2$: (1) Treated vs Never-Treated, (2) Earlier vs Later Treated (hợp lệ) và (3) **Later vs Already-Treated** (so sánh bị cấm gây trọng số âm và đảo dấu hệ số chính sách).
B144 sun_abraham_did Nghiên cứu sự kiện trọng số tương tác đoàn hệ của Sun–Abraham (eventstudyinteract / sunab)
Sun & Abraham Interaction-Weighted Event-Study DID
L3 Stata: eventstudyinteract (ssc install eventstudyinteract: eventstudyinteract y lead* lag*, cohort(first_treat) control_cohort(never) absorb(id time) vce(cluster id))
R: fixest (fixest::feols(y ~ x1 + sunab(first_treat, year) | id + year, cluster = ~id))
Python: pyfixest / Interaction-WeightedFE (saturated cohort x relative_time FE + Sun–Abraham cohort-share aggregation & delta-method cluster SE)
Ước lượng riêng từng hiệu ứng đoàn hệ – thời gian tương đối $text{CATT}_{e,ell}$ bằng tương tác bão hòa rồi gộp theo tỷ phần đoàn hệ, loại bỏ hoàn toàn hiện tượng “ô nhiễm chéo giữa các kỳ dẫn–trễ” của Event-Study TWFE truyền thống.
B145 borusyak_imputation_did Ước lượng DID suy diễn hiệu quả cao Borusyak–Jaravel–Spiess và Gardner (did_imputation / did2s)
Borusyak–Jaravel–Spiess Imputation DID / Gardner Two-Stage DID
L3 Stata: did_imputation / did2s (ssc install did_imputation: did_imputation y id year first_treat, horizons(0/5) pretrends(4))
R: didimputation / did2s (did2s::did2s(df, yname = "y", first_stage = ~ 0 | id + year, second_stage = ~ i(rel_time), treatment = "treat", cluster_var = "id"))
Python: pyfixest (pyfixest.did2s(...) / BJS conservative cluster-robust leave-cohort-out imputation variance)
Ước lượng hiệu ứng cố định đơn vị $hat{alpha}_i$, thời gian $hat{lambda}_t$ và biến kiểm soát **chỉ trên tập quan sát chưa chịu xử lý** ($Omega_0$), suy diễn kết quả phản thực tế $hat{Y}_{it}(0)$ cho nhóm xử lý rồi tính trung bình trọng số $hat{tau}_{it} = Y_{it} – hat{Y}_{it}(0)$ — đạt hiệu quả tiệm cận cao nhất (BLUE dưới Gauss–Markov).
B146 dechaisemartin_did Ước lượng DID động cho xử lý bật–tắt đảo chiều De Chaisemartin–D’Haultfœuille (did_multiplegt_dyn)
De Chaisemartin & D’Haultfœuille Dynamic Switching DID (DID_M)
L4 Stata: did_multiplegt_dyn (ssc install did_multiplegt_dyn: did_multiplegt_dyn y id time d, effects(5) placebo(3) cluster(id))
R: DIDmultiplegtDYN (DIDmultiplegtDYN::did_multiplegt_dyn(df, "y", "id", "time", "d", effects = 5, placebo = 3))
Python: Cohort-baseline switching DID_M & dynamic DID_l solver với cluster-level influence-function SE
Ước lượng nhân quả không chệch cho thiết kế DID tổng quát nơi trạng thái xử lý **có thể bật rồi tắt (non-absorbing / reversible)** hoặc là biến xử lý không nhị phân/liên tục bằng cách so sánh các nhóm chuyển trạng thái với nhóm giữ nguyên mức xử lý ban đầu.
B147 wooldridge_etwfe Mô hình hiệu ứng cố định hai chiều mở rộng bão hòa Mundlak của Wooldridge (ETWFE / jwdid)
Wooldridge Extended Two-Way Fixed Effects (ETWFE)
L3 Stata: Stata 18 xthdidregress twfe / jwdid (xthdidregress twfe (y x1) (treat), group(id) hoặc ssc install jwdid)
R: etwfe + marginaleffects (etwfe::etwfe(fml = y ~ x1, tvar = year, gvar = first_treat, data = df, vcov = ~id) + etwfe::emfx() trên CRAN active)
Python: Saturated Mundlak Cohort $times$ Post-Period FE estimator (pyfixest/linearmodels + delta-method marginal aggregation ATT, cohort-ATT, event-ATT)
Chứng minh rằng TWFE truyền thống chỉ sai do thiếu bão hòa tương tác: bằng cách đưa đầy đủ tương tác đoàn hệ × thời kỳ kèm biến kiểm soát khử tâm theo đoàn hệ $(X_{it} – bar{X}_g)$, ETWFE khôi phục ước lượng ATT không chệch và mở rộng tự nhiên sang **Poisson, Logit/Probit, Fractional DID**.
B148 lp_did Phương pháp chiếu cục bộ kết hợp mẫu đối chứng sạch Dube–Girardi–Jordà–Taylor (LP-DID)
Clean-Control Local Projections Difference-in-Differences (LP-DID)
L4 Stata: lpdid (ssc install lpdid: lpdid y, unit(id) time(year) treat(treat) pre_window(4) post_window(6))
R: fixest clean-control LP loop (for (h in -K:H) fixest::feols(dy_h ~ d_treat | time, subset = clean_h, cluster = ~id))
Python: pyfixest (pyfixest.did.lpdid(...) / Clean-control equally-weighted & variance-weighted LP-DID với cluster-robust SE & pooled post-treatment ATT)
Kết hợp sự linh hoạt động học của Jordà Local Projections $Y_{i,t+h} – Y_{i,t-1}$ với điều kiện lọc mẫu đối chứng sạch (clean controls: chỉ giữ các đơn vị mới chuyển trạng thái xử lý tại $t$ và các đơn vị chưa chịu xử lý cho tới tận $t+h$), khử hoàn toàn chệch trọng số âm mà vẫn dễ dàng kiểm soát động học trễ của biến kết quả.
B149 honest_did_sensitivity Phân tích độ nhạy vi phạm giả định xu hướng song song Rambachan–Roth (HonestDiD)
Rambachan & Roth HonestDiD Parallel-Trends Sensitivity
L3 Stata: honestdid (ssc install honestdid: honestdid, pre(1/4) post(5/8) mvec(0.5(0.5)2))
R: HonestDiD (HonestDiD::createSensitivityResults_relativeMagnitudes(betahat, sigma, numPrePeriods, numPostPeriods, Mbarvec))
Python: ARP / Fixed-Length Confidence Interval (FLCI) & Conditional/Hybrid LP bounds solver trên $(hat{beta}_{text{event}}, hat{Sigma}_{text{event}})$
Thay vì giả định xu hướng song song sau can thiệp đúng tuyệt đối 100%, thiết lập khoảng nhận dạng từng phần (robust confidence sets) cho hiệu ứng chính sách khi vi phạm xu hướng sau xử lý tối đa bằng $bar{M}$ lần độ lệch tiền xu hướng lớn nhất ($Delta^{RM}(bar{M})$) hoặc bị chặn đạo hàm bậc hai ($Delta^{SD}(M)$).
B152 synthetic_did Sai biệt trong sai biệt tổng hợp Arkhangelsky–Athey–Hirshberg–Imbens–Wager (SDID)
Synthetic Difference-in-Differences (SDID)
L3 Stata: sdid (ssc install sdid: sdid y id time treat, vce(placebo) reps(200))
R: fect / Synth + Frank–Wolfe SDID (Synth & fect CRAN active + Frank–Wolfe regularized $hat{omega}, hat{lambda}$ weighted fixest::feols & placebo/jackknife SE; tương thích synthdid)
Python: pysyncon / Frank–Wolfe regularized unit $hat{omega}$ ($L_2$-penalized) + simplex time $hat{lambda}$ weighted TWFE + Placebo / Jackknife / Clustered Bootstrap SE
Kết hợp tối ưu trọng số đơn vị đối chứng $hat{omega}_i$ của Synthetic Control với trọng số thời kỳ tiền xử lý $hat{lambda}_t$ và hiệu ứng cố định hai chiều của DID, vừa nới lỏng giả định xu hướng song song tự nhiên vừa bất biến với độ lệch mức cố định và giảm mạnh phương sai.

3. Hướng dẫn Chọn nhanh Mô hình Phù hợp trong Nhóm 9.5

Dựa trên kinh nghiệm phản biện và hướng dẫn luận văn, luận án thực tế, chúng ta có thể áp dụng quy tắc chọn nhanh sau đây:

Điều hướng Học tập trong Nhóm 9.5:
↑ Quay lại Tổng quan Chương 09: Chương 09 — Suy luận nhân quả và đánh giá tác động chính sách
→ Đi tới Bài học đầu tiên của Nhóm 9.5: Bài B142 — Định lý phân rã trọng số $2times 2$ và so sánh bị cấm của Goodman-Bacon (bacondecomp) (bacon_decomposition)
→ Thực hành trực tiếp trên EcoLab: Mở Phòng thí nghiệm Kinh tế lượng EcoLab (Tri-Engine)

Bài liên quan

Back to top button