处理效应模型stata实例_Stata手动:各类匹配方法大全 A——理论篇
Stata 連享會 ? 主頁 || 視頻 || 推文溫馨提示: 定期 清理瀏覽器緩存,可以獲得最佳瀏覽體驗。
? 作者:黃俊凱 (中國人民大學)
E-Mail: kopanswer@126.com
Note: 助教招聘信息請進入「課程主頁」查看。因果推斷-內(nèi)生性 專題 ? 2020.11.12-15
主講:王存同 (中央財經(jīng)大學);司繼春(上海對外經(jīng)貿(mào)大學)
課程主頁:https://gitee.com/arlionn/YG | 微信版空間計量 專題 ? 2020.12.10-13
主講:楊海生 (中山大學);范巧 (蘭州大學)
課程主頁:https://gitee.com/arlionn/SP | 微信版
目錄
匹配是研究處理效應(yīng)的常見工具,本文總結(jié)了常見的匹配方法,并在第三部分給出 Stata 模擬以比較不同的匹配方法的優(yōu)劣。
1. 單變量匹配 uni-variate match
單變量匹配的方法有精確匹配、粗糙精確匹配,k-近鄰匹配和半徑 (卡尺) 匹配。
1.1 精確匹配 exact match
顧名思義,當且僅當兩個觀測值的匹配變量相等時匹配成功。
1.2 粗糙精確匹配 coarsened exact match
粗糙精確匹配用途廣泛,通常要求匹配變量是分類變量。比如公司金融中同行業(yè)的公司,又比如教育經(jīng)濟學中在同一個班的同學。粗糙精確匹配可以輕松的推廣到多變量匹配的情形,如同行業(yè)同年度的公司,同班同性別的同學。
1.3 k-近鄰匹配 k-nearest neighbor match
k-近鄰匹配要求匹配變量是距離,它選取距離最近的 k 個觀測值作為對照組。
1.4 radius (caliper) match
k-近鄰匹配要求匹配變量也是距離,它事先設(shè)定半徑 (上下半徑可以不同),找出設(shè)定范圍內(nèi)的全部觀測值作為對照組。顯然,隨著半徑的降低,匹配要求也更趨嚴格。
2. 多變量匹配 multi-variate match
多變量匹配的核心思路是降維 (dimension reduction),將多變量降維為距離或得分,然后再運用單變量匹配的方法。多變量匹配的方法有歐氏距離、百分等級、馬氏距離和傾向得分匹配等。
為能直觀的圖示,下文全部示例僅考慮雙變量 (平面) 的情形。
2.1 歐氏距離匹配 euclidean distance match
最簡單的測度空間就是歐氏距離空間。你可以輕松的用尺子直接量出點到原點、或任意兩點之間的距離。
平面上任意點
到原點的距離公式為:
平面上任意兩點
和
之間的距離公式為:
在歐式距離空間中,坐標軸之間是相互垂直的,也就意味著隨機變量之間的相關(guān)系數(shù)為零。這是一個非常強的假設(shè),而實際研究中該假設(shè)往往不能成立。比如研究一個人的健康時,作為影響因素的身高和體重之間往往是正相關(guān)的。
在歐式距離空間中,坐標軸上的量綱也是默認相同的,也就意味著隨機變量必須有相同的量綱。這同樣是一個過于嚴苛的假設(shè)。同樣是研究一個人的健康,身高的單位是厘米,體重的單位是公斤,無論如何長度單位和重量單位是不可比的。
2.2 馬氏距離匹配 mahalanobis distance match
為了克服匹配時歐氏距離空間的上述兩個缺陷,印度數(shù)學家 Mahalanobis 提出了著名的馬氏距離空間。馬氏距離對多匹配變量的聯(lián)合分布的位置、形狀做了標準化調(diào)整,也對多匹配變量之間的相關(guān)性做了正交化調(diào)整,從而將多匹配變量的聯(lián)合分布轉(zhuǎn)變?yōu)榭梢杂脷W氏距離計算的情形。
馬氏距離實現(xiàn)上述功能的關(guān)鍵在于用協(xié)方差矩陣的逆矩陣做了調(diào)整。我們將在第三部分用 Stata 代碼逐步展示它。任意點
到質(zhì)心 (centroid)
的距離公式如下:
任意兩點
和
之間的距離公式如下:
其中
為多維隨機變量的樣本協(xié)方差矩陣,
是質(zhì)心或樣本均值。若樣本協(xié)方差矩陣是單位矩陣 (各維度之間獨立同部分),馬氏距離退化為歐氏距離。
馬氏距離測量相對于質(zhì)心的距離,質(zhì)心是一個基準點或中心點,可以認為是多元數(shù)據(jù)的總體平均值。質(zhì)心是多元空間中所有變量的均值相交的點。馬氏距離越大,數(shù)據(jù)點離質(zhì)心越遠。
2.3 百分等級匹配 percentile rank match
在多隨機變量的聯(lián)合分布中,距離近的點在概率分布函數(shù) (PDF) 上往往不一定靠近。我們以如下標準正態(tài)分布 (鐘形曲線) 為例,說明距離相近并不必然等于概率分布上的靠近。
不妨設(shè)樣本容量為
。處理組觀測值點 A 位于距離原點
處。則
的點 B 和
處的點 C 與點 A 的距離相等,都等于
。但是點 A 與點 B 之間有
(
) 個觀測值,而點 A 與點 C 之間僅有
(
) 個觀測值。顯然,盡管點 A 到點 B 和點 C 的距離是相等的,但從概率分布的角度來看在點 A 前后抽樣更容易抽到點 C。
百分等級是一個相對位置量數(shù)。它是指將距離按照從小到大的順序排列,小于某觀測值距離的觀測值個數(shù)與樣本數(shù)的百分比,即為該觀測值的百分等級。
不同于百分數(shù) (percentile),有相同距離的觀測值總是有相同的百分等級 (percentile rank),以消除指定百分等級時的武斷性 (arbitrariness)。因此,百分等級的公式如下:
其中,PR 是百分等級,L 是距離小于該觀測值距離的觀測值數(shù),E 是距離等于該觀測值距離的觀測值數(shù),N 是樣本數(shù)。例如,樣本有
個同學參加考試,你的物理得分是
分,其中有
個人分數(shù)低于你,
個人的分數(shù)和你相同,則你的百分等級數(shù)就等于:
百分等級匹配就是選擇百分等級最接近的觀測值作為反事實觀測值,顯然它是一種非參數(shù)方法。基于距離的百分等級不僅克服了距離不能體現(xiàn)隨機變量分布函數(shù)的特點 (比如距離很遠的點也可能有相似的百分等級),而且將匹配變量之間的差異限制在
區(qū)間。然而它仍有自己的局限,就是無法體現(xiàn)個體進入處理組的選擇過程,或者說并沒有利用到底哪些個體進入了處理組這個關(guān)鍵信息。
2.4 傾向得分匹配 propensity score match
傾向得分匹配不是基于距離而是基于得分。傾向得分 (propensity score) 是指個體 i 在給定可觀測變量
的情況下進入處理組的條件概率。即
,或簡記為
。
對傾向得分的估計可使用參數(shù)估計或非參數(shù)估計,最流行的方法是 logit。Rosenbaum and Rubin (1983) 證明,如果可忽略性假定成立,則在給定傾向得分的情況下,結(jié)果變量在事前和事后的取值獨立于是否個體進入處理組。
使用傾向得分匹配需要滿足兩個假定:1.共同支撐假設(shè);2.平衡性假定。
共同支撐集是指這樣一個集合,不妨設(shè)備擇組觀測值的傾向得分的取值范圍為
, 設(shè)處理組觀測值得傾向得分取值范圍為
,則共同支撐集內(nèi)的任意觀測值的傾向得分必需大于備擇組和處理組的最小傾向得分中較大的那個,也必需小于最大傾向得分中較小的那個。即進入共同支撐集的觀測值必需位于如下區(qū)間內(nèi):
其中
是對照組傾向得分的最小值,
是對照組傾向得分的最大值;
是處理組傾向得分的最小值,
是處理組傾向得分的最大值。
在匹配時,為提供匹配質(zhì)量,可僅保留傾向得分重疊部分的個體。共同支撐假設(shè)要求共同支撐集的取值范圍不能太小,則匹配成功的樣本可能不具有代表性。
再說平衡性假定,如果傾向得分估計是準確的,那么協(xié)變量
在匹配后的處理組與控制組之間分布較均勻。例如,匹配后處理組的均值
與對照組的均值
應(yīng)該較接近,也就是所謂的“數(shù)據(jù)平衡”。
多接近是接近?均值之間的差異與計量單位有關(guān),你當然可以做組建軍之差異或中位數(shù)差異檢驗,也可以使用標準化偏差 (standarized bias) 進行比較,公式如下:
經(jīng)驗法則告訴我們,標準化差距不得超過 10%。如果超過,則應(yīng)重新估計傾向得分,或改變具體的匹配方法。
盡管傾向得分匹配體現(xiàn)了選擇過程,但它仍有一些缺陷,比如它只能依可測變量選擇,對共同支撐集有要求等。
3. 代碼展示
我們用簡單的二維模擬數(shù)據(jù)來展示不同多變量匹配方法之間的差異。
3.1 數(shù)據(jù)生成過程
clear
set obs 200
gen id = _n
set seed 10000
gen r0 = rnormal()
set seed 12345
gen r1 = rnormal()
set seed 65432
gen r2 = rnormal()
set seed 10101
gen re = rnormal()
*-選擇變量
gen x1 = 2 * (r0 + r1)
gen x2 = 3 + (r0 + r2)
*-選擇機制
gen group = 2 * x1 - 3 * x2 + 10 * re > 0
label def group 0 "非對照組" 1 "處理組"
label val group group
*-數(shù)據(jù)分布
keep id x1 x2 group
tab group
correlate x1 x2
twoway (scatter x1 x2 if group == 0, mcolor(black))///
(scatter x1 x2 if group == 1, mcolor(red)), ///
title("數(shù)據(jù)分布") xlabel(-10(5)10) ///
ylabel(-10(5)10, nogrid) ///
aspect(1) legend(off)
下圖種,紅色的點為處理組觀測值,黑色的點為對照組觀測值
3.2 歐氏距離匹配的結(jié)果
變量 ec 記錄歐氏距離匹配得到的匹配值
gen ec = .
gen ed = .
forvalues i = 1(1)200 {
if group[`i'] == 1 {
forvalues j = 1(1)200 {
if group[`j'] == 0 {
local d = sqrt((x1[`i'] - x1[`j'])^2 + (x2[`i'] - x2[`j'])^2)
if `d' < ed[`i'] {
qui replace ec = `j' in `i'
qui replace ed = `d' in `i'
}
}
}
}
}
tab group
misstable sum ec ed
歐氏距離匹配的結(jié)果:
3.3 馬氏距離匹配的結(jié)果
變量 mc 記錄馬氏距離匹配得到的匹配值
corr x1 x2, cov
mat cov = r(C)
mat cov = inv(cov)
mat list cov
scalar a_11 = cov[1, 1]
scalar a_22 = cov[2, 2]
scalar a_21 = cov[2, 1]
gen mc = .
gen md = .
forvalues i = 1(1)200 {
if group[`i'] == 1 {
forvalues j = 1(1)200 {
if group[`j'] == 0 {
local d = sqrt(a_11*(x1[`i'] - x1[`j'])^2 + a_22*(x2[`i'] - x2[`j'])^2 + 2 * a_21 * (x1[`i'] - x1[`j']))
if `d' < md[`i'] {
qui replace mc = `j' in `i'
qui replace md = `d' in `i'
}
}
}
}
}
馬氏距離匹配的結(jié)果:
3.4 傾向得分匹配的結(jié)果
變量 pc 記錄傾向得分匹配得到的匹配值
gen pc = .
gen pd = .
probit group x1 x2
predict score, xb
replace score = normal(score)
forvalues i = 1(1)200 {
if group[`i'] == 1 {
forvalues j = 1(1)200 {
if group[`j'] == 0 {
local d = abs(score[`i'] - score[`j'])
if `d' < pd[`i'] {
qui replace pc = `j' in `i'
qui replace pd = `d' in `i'
}
}
}
}
}
傾向得分匹配的結(jié)果:
4. 參考文獻和資料Mahalanobis Distance: Simple Definition, Examples link
Mahalanobis, P. C. (1936). On the generalized distance in statistics. National Institute of Science of India. pdf
Percentiles, Percentile Rank & Percentile Range: Definition & Examples link
Rosenbaum, P. R., & Rubin, D. B. (1983). The central role of the propensity score in observational studies for causal effects. Biometrika, 70(1), 41-55. pdf
附:文中使用的 dofiles
*-3.1 數(shù)據(jù)生成過程
clear
set obs 200
gen id = _n
set seed 10000
gen r0 = rnormal()
set seed 12345
gen r1 = rnormal()
set seed 65432
gen r2 = rnormal()
set seed 10101
gen re = rnormal()
*-選擇變量
gen x1 = 2 * (r0 + r1)
gen x2 = 3 + (r0 + r2)
*-選擇機制
gen group = 2 * x1 - 3 * x2 + 10 * re > 0
label def group 0 "非對照組" 1 "處理組"
label val group group
*-數(shù)據(jù)分布
keep id x1 x2 group
tab group
correlate x1 x2
twoway (scatter x1 x2 if group == 0, mcolor(black))///
(scatter x1 x2 if group == 1, mcolor(red)), ///
title("數(shù)據(jù)分布") xlabel(-10(5)10) ///
ylabel(-10(5)10, nogrid) ///
aspect(1) legend(off)
*-3.2 歐氏距離匹配的結(jié)果
gen ec = .
gen ed = .
forvalues i = 1(1)200 {
if group[`i'] == 1 {
forvalues j = 1(1)200 {
if group[`j'] == 0 {
local d = sqrt((x1[`i'] - x1[`j'])^2 + (x2[`i'] - x2[`j'])^2)
if `d' < ed[`i'] {
qui replace ec = `j' in `i'
qui replace ed = `d' in `i'
}
}
}
}
}
tab group
misstable sum ec ed
*-3.3 馬氏距離匹配的結(jié)果
corr x1 x2, cov
mat cov = r(C)
mat cov = inv(cov)
mat list cov
scalar a_11 = cov[1, 1]
scalar a_22 = cov[2, 2]
scalar a_21 = cov[2, 1]
gen mc = .
gen md = .
forvalues i = 1(1)200 {
if group[`i'] == 1 {
forvalues j = 1(1)200 {
if group[`j'] == 0 {
local d = sqrt(a_11*(x1[`i'] - x1[`j'])^2 + a_22*(x2[`i'] - x2[`j'])^2 + 2 * a_21 * (x1[`i'] - x1[`j']))
if `d' < md[`i'] {
qui replace mc = `j' in `i'
qui replace md = `d' in `i'
}
}
}
}
}
*-3.4 傾向得分匹配的結(jié)果
gen pc = .
gen pd = .
probit group x1 x2
predict score, xb
replace score = normal(score)
forvalues i = 1(1)200 {
if group[`i'] == 1 {
forvalues j = 1(1)200 {
if group[`j'] == 0 {
local d = abs(score[`i'] - score[`j'])
if `d' < pd[`i'] {
qui replace pc = `j' in `i'
qui replace pd = `d' in `i'
}
}
}
}
}
相關(guān)課程直擊面板數(shù)據(jù)模型 - 連玉君,時長:1小時40分鐘
Stata 33 講 - 連玉君, 每講 15 分鐘.
部分直播課 課程資料下載 (PPT,dofiles等)
課程一覽支持回看,所有課程可以隨時購買觀看。
Note: 部分課程的資料,PPT 等可以前往 連享會-直播課 主頁查看,下載。關(guān)于我們Stata連享會 由中山大學連玉君老師團隊創(chuàng)辦,定期分享實證分析經(jīng)驗。直播間 有很多視頻課程,可以隨時觀看。
連享會-主頁 和 知乎專欄,300+ 推文,實證分析不再抓狂。
公眾號推文分類: 計量專題 | 分類推文 | 資源工具。推文分成 內(nèi)生性 | 空間計量 | 時序面板 | 結(jié)果輸出 | 交乘調(diào)節(jié) 五類,主流方法介紹一目了然:DID, RDD, IV, GMM, FE, Probit 等。
公眾號關(guān)鍵詞搜索/回復(fù) 功能已經(jīng)上線。大家可以在公眾號左下角點擊鍵盤圖標,輸入簡要關(guān)鍵詞,以便快速呈現(xiàn)歷史推文,獲取工具軟件和數(shù)據(jù)下載。常見關(guān)鍵詞:課程, 直播, 視頻, 客服, 模型設(shè)定, 研究設(shè)計, stata, plus, 繪圖, 編程, 面板, 論文重現(xiàn), 可視化, RDD, DID, PSM, 合成控制法 等連享會小程序:掃一掃,看推文,看視頻……掃碼加入連享會微信群,提問交流更方便
總結(jié)
以上是生活随笔為你收集整理的处理效应模型stata实例_Stata手动:各类匹配方法大全 A——理论篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人生的诗意
- 下一篇: yuv 420 8 bit 转 10bi