PSM第一篇鏈接:模型系列-PSM原理介紹
第一篇主要介紹了為什么需要匹配甚负?匹配的思路是什么柬焕?什么是傾向值审残?什么是傾向值匹配?這篇中將會介紹和PSM有關(guān)的stata操作斑举。
以下原理復(fù)習(xí)取自 許老師的計量經(jīng)濟(jì)學(xué)講義搅轿,推薦公號 宏觀經(jīng)濟(jì)學(xué)會
PSM原理復(fù)習(xí)
首先來溫習(xí)下“傾向值匹配”在說些什么?
使用匹配估計量的條件:假設(shè)個體根據(jù)可觀測變量來選擇是否可參與項目
以一個就業(yè)培訓(xùn)項目為例富玷,在對項目進(jìn)行效應(yīng)評估時璧坟,我們除了能觀測到人們是否參與了該項目Di和項目實施前后的收入Yi,還可以觀測到參與者一些個體特征赎懦,比如年齡雀鹃、受教育程度、膚色励两、性別等等協(xié)變量黎茎。
如果個體是否參與項目完全是由某些協(xié)變量X決定的,那么我們就可以使用匹配估計方法來估計處理效應(yīng)当悔。
匹配估計的思想簡單易懂:實踐中傅瞻,個體i參與了培訓(xùn)(處理組),這人就不可能再穿越回去選擇不參加培訓(xùn)盲憎。此時嗅骄,我們就需要在沒有參加培訓(xùn)的人中(控制組)找到某個或某些人j,如何找到這些人呢饼疙?
前面說溺森,參與項目Di完全取決于可觀測變量Xi,那么自然就是找那些與參與者i有相近X的未參與人j宏多。我們選擇到的Xj與Xi越接近儿惫,j參與培訓(xùn)的概率就越接近i。那么伸但,我們就可以把j的收入Yj近似當(dāng)作i在沒有參與培訓(xùn)情形下的收入肾请,然后將i的實際收入Yi減去近似收入Yj,得到培訓(xùn)的處理效應(yīng)更胖,即匹配估計量铛铁。
一般來說,匹配估計量會存在偏出却妨,因為Xi不可能和Xj完全相同饵逐。那么在非精確匹配的情形下:
- 一對一匹配,偏差較大彪标,方差較小
- 一對多匹配倍权,偏差較小,方差加大
經(jīng)驗法則:最好進(jìn)行一堆四匹配捞烟,這樣能使均方誤差MSE最小薄声。
PSM的思想即当船,將多個X轉(zhuǎn)換成一個指標(biāo),即通過某種函數(shù)f(X)默辨,把多維變量變成一維變量德频。這個一維變量就是傾向得分。然后缩幸,我們就可以根據(jù)這個傾向得分進(jìn)行上述匹配壹置。
PSM計算處理效應(yīng)的步驟
- 選擇協(xié)變量X。盡量將影響D和Y的相關(guān)變量都包括在協(xié)變量中表谊。如果協(xié)變量選擇不當(dāng)或太少钞护,就會引起效應(yīng)估計偏誤;
- 計算傾向得分铃肯,一般用logit回歸患亿;
- 進(jìn)行傾向得分匹配。如果傾向得分估計較為精確押逼,那么步藕,X在匹配后的處理組和控制組之間均勻分布,這就是數(shù)據(jù)平衡挑格。那么我們檢驗得分是否準(zhǔn)確就需要計算X中每個分量的“標(biāo)準(zhǔn)化偏差”咙冗。經(jīng)驗法則:一般來說,標(biāo)準(zhǔn)化偏差不能超過10%漂彤,如果超過10%雾消,就需要返回第2步重新計算,甚至第1步重新選擇匹配協(xié)變量挫望,或者改變匹配方法立润。
- 根據(jù)匹配后的樣本計算處理效應(yīng)
在第三部中,得分匹配效果不好媳板,可能要改變匹配方法
- k鄰近匹配
- 卡尺匹配或半徑匹配
- 卡尺內(nèi)最近鄰匹配
- 核匹配
- 局部線性回歸匹配
- 樣條匹配
在實踐中桑腮,并沒有明確的規(guī)則來限定使用哪種匹配方法,但有一些經(jīng)驗法則可以來參考:
- 如果控制個體不多蛉幸,應(yīng)選擇又放回匹配
- 如果控制組有較多個體破讨,應(yīng)選擇核匹配
最常用的方法:嘗試不同的匹配方法,然后比較它們的結(jié)果奕纫,結(jié)果相似說明很穩(wěn)健提陶。結(jié)果差異較大,就要深挖其中的原因匹层。
但PSM也有局限性:
- 大樣本
- 要求處理組和控制組有較大的共同取值范圍
- 只控制了可觀測的變量隙笆,如果存在不可觀測的協(xié)變量,就會引起“隱性偏差”
PSM實操stata命令
數(shù)據(jù)準(zhǔn)備
*使用美國國家調(diào)查數(shù)據(jù)
webuse nlswork
*設(shè)置面板
xtset idcode year
*面板數(shù)據(jù)描述
xtdes
*生成平方項
gen age2 = age^2
gen ttl_exp2 = ttl_exp^2
gen tenure2 = tenure^2
*定義全局變量
global xlist "grade age age2 ttl_exp ttl_exp2 tenure tenure2 not_smsa south race"
*描述性統(tǒng)計
sum ln_wage $xlist
*定義種子
set seed 0001
*生成隨機(jī)數(shù)
gen tmp = runiform()
*將數(shù)據(jù)庫隨機(jī)整理
sort tmp
傾向值匹配
*設(shè)置idcode大于2000的地方執(zhí)行政策
gen treated = (idcode > 2000) &! missing(idcode)
首次使用需要安裝外部命令*
ssc install psmatch2,replace
*使用二值選擇模型 logit 回歸估計傾向值,并基于近鄰匹配(默認(rèn) K=1)實現(xiàn)一對一匹配仲器;
*其它匹配方法煤率,例如半徑匹配、核匹配乏冀、樣條匹配等,選項格式見psmatch2 命令的幫助文檔
psmatch2 treated $xlist,out(ln_wage) logit ate neighbor(1) common caliper(.05) ties
模型擬合結(jié)果洋只,此處無太多實際意義辆沦。
ATT估計值
試驗組可匹配的觀測概覽,按照命令中設(shè)定的匹配規(guī)則识虚,試驗組有22組未能匹配到合適對照肢扯。
*檢驗協(xié)變量在處理組與控制組之間是否平衡
pstest $xlist, both graph
gen common = _support
均衡性檢驗結(jié)果
pstest, both做匹配后均衡性檢驗,理論上說此處只能對連續(xù)變量做均衡性檢驗担锤,對分類變量的均衡性檢驗應(yīng)該重新整理數(shù)據(jù)后運(yùn)用χ2檢驗或者秩和檢驗蔚晨。但此處對于分類變量也有一定的參考價值。
*去掉不滿足共同區(qū)域假定的觀測值
drop if common == 0
*繪圖顯示傾向值的共同取值范圍
psgraph
psgraph對匹配的結(jié)果進(jìn)行圖示肛循。
匹配結(jié)果的圖示化
關(guān)于PSM語法命令
以下是幫助菜單的中psmatch2語法格式:
psmatch2 depvar [indepvars] [if exp] [in range] [, outcome(varlist) pscore(varname) neighbor(integer) radius caliper(real) mahalanobis(varlist) ai(integer) population altvariance kernel llr kerneltype(type) bwidth(real) spline nknots(integer) common trim(real) noreplacement descending odds index logit ties quietly w(matrix) ate]
簡單說就是:psmatch2 因變量 協(xié)變量铭腕,[選擇項]。
以文中為例:
psmatch2 treated $xlist,out(ln_wage) logit ate neighbor(1) common caliper(.05) ties
重點(diǎn)解讀命令語句中選擇項的含義多糠。本例中選擇“nearest neighbor matching within caliper”匹配方法累舷。
- out(ln_wage)指明結(jié)局變量
- logit指定使用logit模型進(jìn)行擬合,默認(rèn)的是probit模型
- neighbor(1)指定按照1:1進(jìn)行匹配夹孔,如果要按照1:3進(jìn)行匹配被盈,則設(shè)定為neighbor(3)
- common強(qiáng)制排除試驗組中傾向值大于對照組最大傾向值或低于對照組最小傾向值
- caliper(.05)試驗組與匹配對照所允許的最大距離為0.05
- ties強(qiáng)制當(dāng)試驗組觀測有不止一個最優(yōu)匹配時同時記錄
- ate 求平均處理效應(yīng)即求ATT估計值
參考資料:
1.PSM與政策評估(附Stata實現(xiàn))阿虎定量筆記
2.應(yīng)用計量經(jīng)濟(jì)學(xué)講稿 許文立
3.實例演示Stata軟件實現(xiàn)傾向性匹配得分(PSM)分析