Phương pháp sai biệt kép
Chào mừng các bạn sinh viên đến với chuỗi bài học về một trong những công cụ mạnh mẽ và phổ biến nhất trong kinh tế lượng ứng dụng: phương pháp Khác biệt trong Khác biệt, hay còn gọi là Difference-in-Differences (DiD). Nếu bạn từng thắc mắc làm thế nào các nhà kinh tế có thể đo lường tác động thực sự của một chính sách mới, chẳng hạn như việc tăng lương tối thiểu ảnh hưởng đến việc làm, hay một chiến dịch marketing mới tác động đến doanh số, thì DiD chính là câu trả lời. Phương pháp này cung cấp một cách tiếp cận thông minh để tách bạch tác động của chính sách ra khỏi các yếu tố nhiễu khác có thể xảy ra cùng lúc.
Trong chuỗi bài học này, chúng ta sẽ cùng nhau “giải phẫu” phương pháp DiD một cách chi tiết, từ những ý tưởng trực quan nhất đến các ứng dụng thực tế phức tạp. Chúng ta sẽ không chỉ học lý thuyết suông mà còn thực hành từng bước với phần mềm Stata, giúp các bạn xây dựng sự tự tin để áp dụng kỹ thuật này vào các dự án nghiên cứu của riêng mình. Hãy coi đây là một hành trình khám phá, nơi chúng ta học cách tư duy như một nhà kinh tế lượng thực thụ để trả lời những câu hỏi nhân quả quan trọng.
Để bắt đầu, hãy làm quen với ba khái niệm cốt lõi sẽ đồng hành cùng chúng ta:
- Difference-in-Differences (DiD): Một kỹ thuật so sánh sự thay đổi của một nhóm được can thiệp (ví dụ: bang tăng lương tối thiểu) với sự thay đổi của một nhóm không được can thiệp (nhóm đối chứng) trong cùng một khoảng thời gian.
- Nhóm đối chứng (Control Group): Một nhóm tương đồng với nhóm được can thiệp nhưng không nhận sự can thiệp đó. Nhóm này đóng vai trò là “phiên bản phản thực tế”, cho chúng ta biết điều gì có thể đã xảy ra nếu không có chính sách.
- Tác động can thiệp (Treatment Effect): Tác động nhân quả thực sự của chính sách lên kết quả mà chúng ta quan tâm. Đây chính là con số mà phương pháp DiD giúp chúng ta ước lượng.
Cấu trúc chuỗi bài học
Để giúp các bạn tiếp thu kiến thức một cách có hệ thống, chuỗi bài học của chúng ta sẽ được chia thành các phần nhỏ, đi từ cơ bản đến nâng cao.
- Bài 1: Giới thiệu phương pháp DiD qua ví dụ kinh điểnChúng ta sẽ bắt đầu bằng việc tìm hiểu trực giác đằng sau DiD thông qua nghiên cứu nổi tiếng về lương tối thiểu của Card và Krueger.
- Bài 2: Các điều kiện để DiD là một ước lượng nhân quảBài học này sẽ đi sâu vào các giả định lý thuyết quan trọng, giúp bạn hiểu khi nào kết quả từ mô hình DiD thực sự đáng tin cậy.
- Bài 3: Mở rộng mô hình DiD với nhiều nhóm và nhiều thời kỳChúng ta sẽ học cách áp dụng DiD trong các bối cảnh thực tế phức tạp hơn và phân tích một ví dụ thú vị về tác động của cảnh sát.
- Bài 4: Tầm quan trọng của đặc tả xu hướng trong mô hình DiDMột trong những cạm bẫy phổ biến nhất sẽ được làm rõ, đó là làm thế nào để xử lý các xu hướng riêng biệt giữa các nhóm một cách chính xác.
- Bài 5: Suy luận thống kê và các lỗi cần tránh khi thực hànhBài học này trang bị các kiến thức về sai số chuẩn, tầm quan trọng của việc kiểm tra code và củng cố lý thuyết qua các bài tập.
- Bài 6: Hướng dẫn thực hành phân tích DiD từ A-Z với StataĐây là bài học tổng kết, nơi chúng ta sẽ cùng nhau thực hiện một dự án phân tích DiD hoàn chỉnh từ khâu chuẩn bị dữ liệu đến diễn giải kết quả.
MỤC TIÊU HỌC TẬP
Sau khi hoàn thành chuỗi bài viết này, các bạn sẽ có khả năng:
- Hiểu sâu sắc: Nắm vững trực giác, các giả định và cơ chế hoạt động của phương pháp Difference-in-Differences.
- Thực hành thành thạo: Tự tin sử dụng Stata để ước lượng các mô hình DiD từ cơ bản đến nâng cao, bao gồm cả mô hình có biến kiểm soát và hiệu ứng cố định.
- Phân tích và diễn giải: Có khả năng đọc, hiểu và diễn giải kết quả từ các nghiên cứu sử dụng DiD, cũng như trình bày kết quả phân tích của chính mình.
- Tư duy phản biện: Nhận biết được các điểm mạnh, điểm yếu và các cạm bẫy tiềm tàng khi áp dụng phương pháp DiD trong thực tế.
TÀI LIỆU THAM KHẢO
- Chính: Hansen, B. E. (2022). Econometrics. Princeton University Press. (Chương 18).
- Kinh điển: Card, D., & Krueger, A. B. (1994). Minimum Wages and Employment: A Case Study of the Fast-Food Industry in New Jersey and Pennsylvania. The American Economic Review, 84(4), 772–793.
- Bổ sung: Angrist, J. D., & Pischke, J. S. (2009). Mostly Harmless Econometrics: An Empiricist’s Companion. Princeton University Press.
- Thực hành Stata: Cameron, A. C., & Trivedi, P. K. (2010). Microeconometrics Using Stata, Revised Edition. Stata Press.
PHỤ LỤC: Dữ liệu mô phỏng cho chuỗi bài viết
Để giúp việc học và thực hành trở nên trực quan, chúng ta sẽ sử dụng một bộ dữ liệu mô phỏng đơn giản trong suốt chuỗi bài viết. Bộ dữ liệu này mô phỏng việc đánh giá tác động của một chương trình học bổng mới đến điểm trung bình (GPA) của sinh viên.
Bối cảnh: Một trường đại học triển khai chương trình học bổng mới cho một nhóm sinh viên (nhóm can thiệp), trong khi một nhóm khác không tham gia (nhóm đối chứng). Chúng ta có dữ liệu GPA của cả hai nhóm trước và sau khi chương trình được triển khai.
Các bạn hãy mở Stata, chạy đoạn code dưới đây để tạo và lưu file dữ liệu student_gpa.dta. Chúng ta sẽ sử dụng file này trong các bài học sau.
* ==================================================
* TẠO DỮ LIỆU MÔ PHỎNG CHO PHÂN TÍCH DiD
* Chủ đề: Tác động của học bổng đến GPA sinh viên
* ==================================================
clear all
set obs 400
* --- BƯỚC 1: TẠO CÁC BIẾN ĐỊNH DANH ---
* Tạo ID cho mỗi sinh viên (200 sinh viên)
gen student_id = mod(_n-1, 200) + 1
* Tạo biến thời gian (0 = trước can thiệp, 1 = sau can thiệp)
gen time = ( _n > 200)
* Tạo biến nhóm (1 = nhóm nhận học bổng, 0 = nhóm đối chứng)
gen treatment_group = (student_id > 100)
* --- BƯỚC 2: TẠO BIẾN KẾT QUẢ (GPA) ---
* Giả sử GPA ban đầu có phân phối chuẩn với trung bình 2.8
set seed 123
gen gpa = 2.8 + rnormal()*0.3
* Tác động của thời gian: Giả sử GPA của tất cả sinh viên đều tăng nhẹ theo thời gian (ví dụ: do quen với môi trường)
replace gpa = gpa + 0.1*time
* Tác động cố định của nhóm: Giả sử nhóm được chọn nhận học bổng có năng lực cao hơn một chút
replace gpa = gpa + 0.15*treatment_group
* Tác động can thiệp (Treatment Effect): Đây là tác động thực sự của học bổng
* Chỉ tác động lên nhóm can thiệp (treatment_group=1) và ở thời kỳ sau (time=1)
gen treatment_effect = 0.25
replace gpa = gpa + treatment_effect * treatment_group * time
* Thêm một chút nhiễu ngẫu nhiên
replace gpa = gpa + rnormal()*0.1
* Làm tròn GPA cho thực tế
replace gpa = round(gpa, 0.01)
replace gpa = 3.9 if gpa > 4 // Đảm bảo GPA không vượt quá 4.0
replace gpa = 1.0 if gpa < 1 // Đảm bảo GPA không quá thấp
* --- BƯỚC 3: GÁN NHÃN VÀ LƯU DỮ LIỆU ---
label variable student_id "Mã số sinh viên"
label variable time "Thời kỳ (0=Trước, 1=Sau)"
label variable treatment_group "Nhóm (0=Đối chứng, 1=Can thiệp)"
label variable gpa "Điểm GPA trung bình"
label variable treatment_effect "Tác động can thiệp thực sự"
label define time_label 0 "Trước HB" 1 "Sau HB"
label values time time_label
label define group_label 0 "Đối chứng" 1 "Nhận HB"
label values treatment_group group_label
* Lưu bộ dữ liệu để sử dụng cho các bài sau
save "student_gpa.dta", replace
* Xem qua một vài dòng dữ liệu
list student_id time treatment_group gpa in 1/10
list student_id time treatment_group gpa in 201/210
📚 Bài tiếp theo: Giới thiệu phương pháp Difference-in-Differences (DiD) qua ví dụ kinh điển
💡 Lưu ý: Hãy đảm bảo bạn đã chạy đoạn code trên và tạo thành công file dữ liệu. Việc chuẩn bị sẵn sàng sẽ giúp bạn theo dõi bài học tiếp theo một cách hiệu quả nhất.