PSM傾向性評(píng)分匹配的Python實(shí)現(xiàn)

在Python上做PSM,可以使用causalinference這個(gè)庫(kù)。以下介紹使用方法。

import pandas as pd 
import statsmodels.api as sm
# 拿數(shù)據(jù)集
dataset = sm.datasets.get_rdataset('Wages',package = 'plm')
dataset = dataset.data
dataset
數(shù)據(jù)集

這個(gè)數(shù)據(jù)集是員工的個(gè)人信息(經(jīng)驗(yàn)、性別、種族等等)和工資。假如我們要看性別這一個(gè)因素對(duì)工資的影響。
首先把類別變量轉(zhuǎn)換為dummy變量。

# 類別變量轉(zhuǎn)換為dummy變量
dataset = pd.get_dummies(data = dataset,
                        drop_first=True
                        )
dataset
get_dummies

拆分出Y、X、confounders,分別是工資、性別、其他因素

# 拆分出Y、X、confounders,分別是工資、性別、其他因素
Y = dataset['lwage'].values
X = dataset['sex_male'].values
confounders = dataset.drop(columns = ['lwage','sex_male']).values

PSM傾向性得分匹配

# PSM傾向性得分匹配
from causalinference import CausalModel
model = CausalModel(Y,X,confounders)
model.est_via_matching(bias_adj = True)
print(model.estimates)
計(jì)算結(jié)果

結(jié)果的通俗理解:
ATT=0.258,你們這些男人,你的“男人”身份給你帶來(lái)了25.8%的工資加成。
ATC=0.421,女人們,以你們的條件,如果你是男人的話,工資能漲42.1%。
ATE=0.276,所有同志們,“男人”這個(gè)標(biāo)簽,可以給帶來(lái)27.6%的工資加成。

(這個(gè)數(shù)據(jù)集是國(guó)外幾十年前的數(shù)據(jù),現(xiàn)在應(yīng)該不會(huì)有這么大的差距了。)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容