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