PSM的stata實現


1. PSM 簡介
在經濟學中,我們通常希望評估某項公共政策實施后的效應,為此,我們構建 "處理組" 和 "控制組" 以評估「處理效應 (treatment effect)」。然而,我們的數據通常來自非隨機的觀察研究中,處理組和控制組的初始條件不完全相同,故存在「選擇偏差 ( selection bias)」問題。「傾向得分匹配 (PSM)」法使用傾向得分函數將多維向量的信息壓縮到一維,然后根據傾向得分進行匹配。這樣可以在既定的可觀測特征變量下,使得處理組個體和控制組個體盡可能相似,因而可以緩解處理效應的選擇偏差問題。

匹配的思想如下:

假如某個體在處理組,為了找到對照,找至少一個其他各方面與該個體盡量相似但出於控制組的個體,這樣兩者就有可比性。

傾向得分匹配是指,找一個其他各方面與該個體盡量相似意味着要考慮兩個個體的很多方面,讓盡可能多的方面盡量相似,而高維匹配並不容易,因為維度越高找一個各方面相似的兩個個體越難。為了解決這個問題,Rosenbaum and Rubin (1983)提出了傾向得分的概念。個體的傾向得分是指在個體情況一定的前提下,其進入處理組的概率。傾向得分用logit回歸,選擇盡可能多的協變量,也就是剛才說的“其他各方面”,類似於回歸中的控制變量。計算傾向得分類似於一個降維的過程,把非常多的協變量維度降為一個維度,就是傾向得分,也就是傾向得分綜合包含了所有協變量的信息。兩個個體的傾向得分非常接近,並不意味着這兩個個體的其他屬性也接近,這不好判斷。不過根據PSM的原理,傾向得分接近就夠了,其他屬性也接近更好。


2. PSM 的分析過程

2.1 PSM 模型設定
對於個體 ,根據是否進行某項處理可以分為兩種結果:表示個體 是否進行某項處理,即 1 表示處理,0表示未處理;
對於離散變量:

gen dv_dum=2 //dv是指變量,dv_dum是指生成自變量的二元變量。
replace dv_dum=0 if dv=0 
replace dv_dum=1 if dv=1

如果你的自變量本身就是標為0和1,這一步可以不用,但是如果標為1和2或者其他符號,一定要轉換為0和1.

對於連續變量:
quantities dv, gen (dv_dum) nq(3)//根據分位數產生三個虛擬變量,也就是決定選擇一個三分位數(上三分位或者下三分位數)為臨界值。

replace dv_dum=0 if dv_dum==1
replace dv_dum=0 if dv_dum==2
replace dv_dum=1 if dv_dum==3    //意思是把自變量從小到大排列,最大的1/3作為較高的組,標為1,剩余較小的2/3作為較低的組,標為0.

 

2.2 PSM 的假設條件
共同支撐假設 (Common Support Assumption)
平行假設 (Balancing Assumption)

2.3 PSM 一般步驟
選擇協變量 :盡可能涵蓋有影響的相關變量;

獲取 PS 值:可以使用 probit 或 logit 模型估計;

檢驗平行假設是否滿足:使得在匹配后的處理組均值和控制組均值較接近,保證數據平衡;

根據 PS值將處理組個體和控制組個體進行配對:匹配的方法有最近鄰匹配、半徑匹配、核匹配等;

根據匹配后樣本計算 ATT 。

 


3. PSM 的 Stata 實例

*-安裝命令
ssc install psmatch2, replace
set seed 10101
gen ranorder=runiform()
sort ranorder
psmatch2 Ln_geodistance_ew $control, out(ln_Cash_ratio1) neighbor(
1) ate ties logit common
  • out(ln_wage)指明結局變量
  • logit指定使用logit模型進行擬合,默認的是probit模型(Logit模型具體分三類:第一類為二分類logistic模型,其對應的命令代碼分別為logit;有序多分類logistic模型,其對應的命令代碼分別為ologit;無序多分類logistic回歸模型,其對應的命令代碼為mlogit。)
  • neighbor(1)指定按照1:1進行匹配,如果要按照1:3進行匹配,則設定為neighbor(3)
  • common強制排除試驗組中傾向值大於對照組最大傾向值或低於對照組最小傾向值
  • caliper(.05)試驗組與匹配對照所允許的最大距離為0.05
  • ties強制當試驗組觀測有不止一個最優匹配時同時記錄
  • ate 求平均處理效應即求ATT估計值

 

 

 

估計結果包含 3 個部分:

第 1 部分是 logit 回歸的結果。

第 2 部分是處理組和控制組在匹配前后的差異及其顯著性,可以看出,匹配前處理組和控制組差異為 1.15901406,t 值為 2.15,匹配后處理組和控制組差異 -1.39805928,而 t 值為 -2.24。

第 3 部分則匯報觀測值共同取值范圍情況。在 3100 個觀測值中,除了處理組 17 個不在共同取值范圍中,其余 3083 個均在共同取值范圍中。

重點關注的是ATT的difference值及其T值(實際上這個T值也可不關注),匹配后仍然顯著。ATT是個體在干預狀態下的平均干預效應,也就是在控制其他匹配變量不變的情況下,自變量從0變為1,因變量的變化。這里ATT的difference意思是在其他匹配變量一致的情況下,自變量是1與自變量是0導致的因變量的差異是1.15個單位,這就是我們要求的系數。接下來根據T值確定p值,這里的T值就是個T檢驗,T值1.96對應的p值是0.05,一半要求大於1.96,具體可查看T檢驗統計表。

不過Note提示了,這個表格的標准誤差有兩個問題,就是沒有考慮傾向得分為估計所得的事實,即假設傾向得分為真實值,然后求標准誤,並且該標准誤假設同方差,也可能不成立。為此,考慮使用自助法求標准誤,盡管自助標准誤差也未必正確。

打開數據編輯窗口,會發現軟件自動生成了幾個新變量:

其中_pscore是每個觀測值對應的傾向值;

_id是自動生成的每一個觀測對象唯一的ID(事實上這列變量即是對_pscore排序);

_treated表示某個對象是否試驗組;

_support表示觀測對象是否在共同取值范圍內

_weight是觀測對象用於匹配的頻率,如果_weight為空值,那就說明雖然你看上了對方(會有一個匹配對象),但是你並沒有被對方看上(對方匹配上的不是你);

_id是自動生成的每一個觀測對象唯一的ID;

_n1表示的是他被匹配到的對照對象的_id(如果是1:3匹配,還會生成_n2, _n3);

_pdif表示一組匹配了的觀察對象他們概率值的差。

*-考慮自助法估計標准誤
set seed 2019     //首先,我們需要產生隨機數,對樣本進行排序。為了保證結果可復現
bootstrap r(att) r(atu) r(ate),reps(500):psmatch2 distance_ew_high $control, out(ln_Cash_ratio1) neighbor(1) ate ties logit common 

 p值求出來了,大於0.1,不顯著。這不能說明PSM得到了一個不顯著的結果。剛才用的匹配法是一對一匹配,一般來說要把幾種常見匹配都試試。陳強書中就把8種匹配法都試了,其中有幾種得到了顯著的結果。例如用核匹配得到的結果,T值大於1.96,不過這里也應該用自助法求出控制異方差的p值。

*-使用pstest來考查匹配結果是否較好平衡了數據
quiet psmatch2 distance_ew_high $control, out(ln_Cash_ratio1) neighbor(1) ate ties logit common
pstest $control,both graph

 

 

*-畫條形圖來顯示傾向得分匹配的共同取值范圍
psgraph

 

從U到M,P值由顯著變為不顯著即該變量通過平衡性檢驗。要得到的結果是每個匹配變量在匹配后,各匹配變量的均值不存在顯著差異,其標准化誤差(即bias)小於10%,且所有 t 檢驗結果接受原假設「處理組與控制組無系統差異」,因此平行假設得到滿足。以age為例,5.6就是匹配后樣本組與控制組的age的標准化差異,小於10%。只有一個變量u74的標准化誤差大於10% ,但是也不大很多,並且只有一個變量,因此這個匹配的平衡性可以接受。平衡性檢驗了可以在匹配前進行,也可以在匹配后進行,只要檢驗結果可接受。

我們希望能夠通過PSM的匹配消除這些差異

PSM的過程在這里就可以結束了,不過有的文章還會用匹配后的數據做個回歸,你主分析用的什么回歸,這里就用什么回歸,只不過樣本變了。

*-PSM 匹配樣本的回歸
drop if _weight==. //_weight是指樣本是否參與了匹配,參與了則標為數字,沒參與則標為點.,因此這一步是把沒參與匹配的樣本去掉。
或者可以使用if _weight!=. 在后方添加不影響原數據
xi:reg ln_Cash_ratio1 Ln_geodistance_ew $control i.year i.industry2 if flag==1 ,robust 
outreg2 using Table4B,excel drop(_I
*) dec(3) tdec(3) bdec(3) alpha(0.01,0.05,0.1) symbol(***,**,*) stats(coef tstat) e(r2_a)
xi:reg ln_Cash_ratio1 Ln_geodistance_ew $control i.year i.industry2
if flag==1 [pw=_weight] //加入了weight加權的結果
outreg2 using Table4B,excel drop(_I
*) dec(3) tdec(3) bdec(3) alpha(0.01,0.05,0.1) symbol(***,**,*) stats(coef tstat) e(r2_a)

問題一: 關於一對一匹配和一對多匹配

  • 重復和不可重復匹配。不可重復匹配使得每個控制組只能匹配一次,即使該控制組是多個處理組的最佳匹配,這就使得匹配質量降低和樣本變小。相反,重復匹配則可以有效避免這些問題,但是在估計處理效應時,需進行加權和調整標准誤,以反映匹配次數的影響。當然,也要注意極端控制組被重復匹配多次對推斷結果的影響。
  • 匹配半徑的設定。設定一個相對嚴格的「半徑」值一般可以有效避免「糟糕」的匹配和提高協變量的平衡性。
  • 「1 對 1」 和「1 對多」匹配。會計研究中最常見的匹配方法是 1:1 匹配,但是在存在多個合理匹配樣本時,「一對多」匹配可以降低抽樣方差。與重復匹配一樣,在「一對多」匹配時,也需要考慮加權。

經驗法則:一對四匹配,均方誤差MSE最小。

試一下1:1, 1:2, 1:3的匹配結果進行比較做決定。

問題二:原變量是連續變量手動生成了虛擬變量,在進行回歸的時候是進行原回歸還是對虛擬變量回歸

你主分析用的什么回歸,這里就用什么回歸,只不過樣本變了。匹配后的多元回歸,首先要把不參與匹配的樣本刪除,代碼:

drop if _weight==.  //_weight是指樣本是否參與了匹配,參與了則標為數字,沒參與則標為點.,因此這一步是把沒參與匹配的樣本去掉。
xtset firm year
xtreg Y dv_dum controls, fe r

對匹配方法進行對比

1. k近鄰匹配,令k=4,節省空間,采用quietly省去結果的匯報

psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) n(4) ate ties logit common quietly

*上表顯示,一對四匹配和一對一匹配類似,下面進行卡尺內一對四匹配,首先計算傾向得分的標准差,乘以0.25

sum _pscore
dis 0.25*r(sd)

0.01979237
*由此可知0.25倍的標准差約等於0.02,將卡尺范圍定為0.01,對傾向得分相差1%的觀測值進行一對四匹配

psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) n(4) cal(0.01) ate ties logit common quietly

2. 半徑匹配:大多數一對四匹配發生在卡尺0.01范圍內,不存在太遠的近鄰,進行半徑(卡尺)匹配

psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) radius cal(0.01) ate ties logit common quietly

3. 核匹配

psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) kernel ate ties logit common quietly

4. 局部線性回歸匹配(使用默認核函數與帶寬)

psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) llr ate ties logit common quietly

*上表未匯報ATT標准誤,采用自助法得到標准誤

set seed 2019
bootstrap r(att) r(atu) r(ate),reps(500):psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) llr ate ties logit common quietly


*根據上表自助標准誤,對平均處理效應的三種度量均至少在5%水平上顯著
5. 條匹配(同樣使用自助法),先安裝一個非官方命令spline

findit snp7_1
set seed 2019
bootstrap r(att) r(atu) r(ate),reps(500):psmatch2 t age educ black hisp married re74 re75 u74 u75,outcome(re78) spline ate ties logit common quietly


*估計結果仍然類似,總之,以上各匹配得分結果顯示,參加就業培訓的平均處理效應為正,在經濟意義和統計意義上均顯著
6. 馬氏匹配,計算異方差穩健標准誤

psmatch2 t, outcome(re78) mahal(age educ black hisp married re74 re75 u74 u75) n(4) ai(4) ate 

 

在實踐中,並沒有明確的規則來限定使用哪種匹配方法,但有一些經驗法則可以來參考:

  • 如果控制個體不多,應選擇又放回匹配
  • 如果控制組有較多個體,應選擇核匹配

最常用的方法:嘗試不同的匹配方法,然后比較它們的結果,結果相似說明很穩健。結果差異較大,就要深挖其中的原因。

但PSM也有局限性:

  • 大樣本
  • 要求處理組和控制組有較大的共同取值范圍
  • 只控制了可觀測的變量,如果存在不可觀測的協變量,就會引起“隱性偏差”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM