PSM — Propensity Score Matching
PSM (Propensity Score Matching) đánh giá tác động của can thiệp trên dữ liệu quan sát bằng cách ghép cặp mỗi đối tượng xử lý (treated) với đối tượng đối chứng (control) có điểm xu hướng (propensity score) — xác suất tham gia ước lượng từ các biến quan sát — tương tự nhau. Mục tiêu: mô phỏng thí nghiệm ngẫu nhiên, giảm thiên lệch chọn lọc theo biến quan sát được.
Giả định then chốt
Quy trình
Điểm xu hướng ước lượng bằng Logit/Probit.
Thực hiện trong EcoLab
- Module Mô hình hóa → họ Suy luận nhân quả → PSM.
- Khai báo biến xử lý, biến kết quả, biến nền (covariates); chọn thuật toán ghép cặp.
- Chạy; kiểm tra balance + common support; đọc ATT; xuất mã tái lập.
Minh họa mã tái lập
- Stata
- R
- Python
* === PSM — Propensity Score Matching ===
* Ghép cặp: nearest neighbor, caliper = 0.05
* cần cài: ssc install psmatch2
psmatch2 treated x1 x2 x3, outcome(y) neighbor(1) caliper(0.05)
* Kiểm tra cân bằng (balance) sau ghép cặp
pstest x1 x2 x3
* ATT nằm trong kết quả psmatch2
# === PSM — Propensity Score Matching ===
library(MatchIt)
# Ghép cặp nearest neighbor với caliper
m <- matchit(treated ~ x1 + x2 + x3,
method = "nearest",
caliper = 0.05,
data = df)
# Kiểm tra cân bằng
summary(m)
plot(m, type = "jitter")
# Ước lượng ATT trên mẫu đã ghép cặp
matched_df <- match.data(m)
att_model <- lm(y ~ treated, data = matched_df)
summary(att_model)
# === PSM — Propensity Score Matching ===
from causalinference import CausalModel
import numpy as np
Y = df['y'].values
D = df['treated'].values
X = df[['x1', 'x2', 'x3']].values
# Mô hình nhân quả
cm = CausalModel(Y, D, X)
# Ước lượng điểm xu hướng + ghép cặp
cm.est_propensity()
cm.est_via_matching(matches=1, bias_adj=True)
print(cm.estimates)
# Hoặc dùng DoWhy:
# import dowhy
# model = dowhy.CausalModel(data=df, treatment='treated',
# outcome='y', common_causes=['x1','x2','x3'])
# identified = model.identify_effect()
# estimate = model.estimate_effect(identified,
# method_name='backdoor.propensity_score_matching')
Hạn chế
- Không xử lý nhiễu không quan sát được.
- Nhạy với lựa chọn thuật toán ghép cặp; cần kiểm tra cân bằng kỹ.