倾向匹配得分教程【pscore、psmatch2、官方命令Teffects操作及应用】
本文主要包括倾向匹配得分命令简介、语法格式、倾向匹配得分操作步骤 思路,涉及倾向匹配得分应用、平衡性检验、共同取值范围检验、核密度函数图等内容。
1
命令简介
Stata没有一个内置的倾向评分匹配的命令,一种非实验性的抽样方法,它产生一个控制组,它的协变量分布与被处理组的分布相似。但是,这个方法有几个用户编写的模块。以下是最受欢迎的模块(主要有如下几个外部命令)
psmatch2.ado
pscore.ado
nnmatch.ado
上述主要介绍了如何获得PSM相关的命令,本文主要介绍如何使用pscore、psmatch2以及Stata官方的PSM命令Teffects。
2
语法格式
pscore语法格式为:
pscore treatment varlist [weight] [if exp] [in range] , pscore(newvar) [blockid(newvar) detail logit comsup level(#) numblo(#) ]
选项含义为:
pscore(newvar)是必需的,它要求用户为估计的倾向评分指定变量名,并将其添加到数据集中。
blockid(newvar)允许用户为估计倾向分数指定变量名,并将其添加到数据集中。
detail显示更详细的输出,说明为获得最终结果而执行的步骤。
logit使用logit模型来估计倾向评分,而不是默认的probit模型
本文将平衡特性的分析局限于所有处理和共同支撑区域的控制。选项comsup表示使用具有共同支撑区域样本。
level(real)允许设置平衡属性测试的显著性水平。默认值是0.01。
teffects语法格式为:
help teffects
teffects psmatch (ovar) (tvar tmvarlist [, tmodel]) [if] [in] [weight] [, stat options]
选项含义为:
ovar 结果变量
tvar 处理变量
tmvarlist 预测变量
logit指定使用logit模型进行拟合,默认的是probit模型;
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]
选项含义为:
depvar因变量 ;
indepvars表示协变量;
outcome(varlist)表示结果变量;
logit指定使用logit模型进行拟合,默认的是probit模型;
neighbor(1)指定按照1:1进行匹配,如果要按照1:3进行匹配,则设定为neighbor(3);
radius表示半径匹配
核匹配 (Kernel matching)
其他匹配方法
广义精确匹配(Coarsened Exact Matching) || help cem
局部线性回归匹配 (Local linear regression matching)
样条匹配 (Spline matching)
马氏匹配 (Mahalanobis matching)
pstest $X, both做匹配前后的均衡性检验,理论上说此处只能对连续变量做均衡性检验,对分类变量的均衡性检验应该重新整理数据后运用χ2检验或者秩和检验。但此处对于分类变量也有一定的参考价值。
psgraph对匹配的结果进行图示。
3
案例应用1
背景数据描述:
这是国家支持工作示范(NSW)处理组数据的子样本和当前人口调查(CPS)的比较样本。Lalonde(1986)、Dehejia和Wahba(1999)对这些数据进行了广泛的分析。
1、首先进行数据结构查看
use "ldw_exper.dta", clear
ed
desc
结果为:
2、描述性分析
tabstat age edu black hisp married re74 re75 u74 u75,statistics(mean) by(t)
结果为:
3、Pscore命令进行操作
pscore t age edu black hisp married re74 re75 u74 u75, logit blockid(myblock) comsup pscore(mypscore)
结果为:
4、使用attnd命令进行后续分析
attnd re78 t, pscore(mypscore)
结果为:
等价于下面命令
attnd re78 t age edu black hisp married re74 re75 u74 u75, logit
结果为:
5、psmatch2命令进行操作
psmatch2 t age edu black hisp married re74 re75 u74 u75, out(re78) neighbor(1) ate ties logit common
结果为:
6、teffects命令进行操作
teffects psmatch (re78) (t married age edu black hisp married re74 re75 u74 u75,logit), atet nneighbor(1)
结果为:
7、平衡性检验,需要在psmatch2后面做,上述teffects实现不了。
7.1 倾向匹配得分
local v1 "t"
local v2 "age edu black hisp married re74 re75 u74 u75"
global x "`v1' `v2' "
psmatch2 $x, out(re78) neighbor(1) ate ties logit common // 1:1 匹配
$表示引用宏变量,
等价于
psmatch2 t age edu black hisp married re74 re75 u74 u75, out(re78) neighbor(1) ate ties logit common
结果为:
7.2 查看匹配后数据
结果为:
打开数据编辑窗口,会发现软件自动生成了几个新变量:
其中_pscore是每个观测值对应的倾向值;
_id是自动生成的每一个观测对象唯一的ID(事实上这列变量即是对_pscore排序);
_treated表示某个对象是否试验组;
_n1表示的是他被匹配到的对照对象的_id(如果是1:3匹配,还会生成_n2, _n3);
_pdif表示一组匹配了的观察对象他们概率值的差。
7.3 均衡性检验
pstest $v2, both graph
结果为:
7.4 共同取值范围
psgraph
结果为:
7.5 核密度函数图
twoway(kdensity _ps if _treat==1,legend(label(1 "Treat")))(kdensity _ps if _treat==0, legend(label(2 "Control"))),xtitle(Pscore
> ) title("Before Matching")
. twoway(kdensity _ps if _treat==1,legend(label(1 "Treat")))(kdensity _ps if (_weight!=1&_weight!=.), legend(label(2 "Control"))),
> xtitle(Pscore) title("After Matching")
结果为:
4
案例应用1
1、首先进行数据结构查看
webuse cattaneo2
Estimate the average treatment effect of mbsmoke on bweight, using a logistic model (the default) to predict each subject's propensity score
teffects psmatch (bweight) (mbsmoke mmarried c.mage##c.mage fbaby medu)
Refit the previous model, but only consider a pair of observations a match if the absolute difference in the propensity score is less than 0.1
teffects psmatch (bweight) (mbsmoke mmarried c.mage##c.mage fbaby medu), caliper(0.1)
结果为:
5
2020国庆Stata研讨班
课程详情
大纲
Class 1. A Quick Tour of Stata
stata简介Why Stata?/what is stata
软件界面The Stata Interface/What Stata looks like
参考书籍推荐Textbooks
log工作日志和do文档What to do first?Set a working directory/Keeping track of things(Do-files and log-files )
命令以及帮助the command & Getting Help(包括help的使用以及ssc install 、findit等外部命令获取和使用)
Class 2. DATABASE MANIPULATION数据管理
导入导出 Import and Export
面板数据、时间数据、官方数据Time series data &Panel data & Example Datasets
变量以及数据Variable and data types/Indicator or data variables
数据管理Data management
排序Order, aorder, and move
变量标签Variable Labels and Notes
文字变量处理之数据类型转换Converting strings to numerics and vice versa(encode 、decode、 destring、 tostring 等)
数据横向合并和纵向合并Append and merge(merge,包括一对一、一对多、多对一等合并,append、cross、joinby等,)
数据生成Generating new variables
描述分析Describing the data (summarize)
基础命令Basic commands(table tabulate)
tabstat命令
CSMAR及中经网数据库复杂的使用技巧
Class 3. 相关分析Correlation analysis(相关分析简介、相关命令corr、pwcorr、pwcorr_a等应用介绍、分析结果输出等)
Class 4. 回归分析Estimation
线性回归模型估计方法OLS
回归估计标准流程应用讲解估
估计系数统计推断
假设检验(多重共线性、自相关、异方差等)
Stata与Word、Excel结合的估计结果输出等
主题范文讲解
Class 5. 时间序列
平稳性检验
协整检验
格兰杰检验
课程总结以及论文讲解
Class 6&7. 静态面板与动态面板数据
面板数据描述性分析
面板数据平稳性检验
静态面板数据回归分析:随机效应模型和固定效应模型、Hausman检验
动态面板模型
Class 8. 门限回归
包括横截面与面板模型的门限回归,主讲xthreg、xtthres、threshold等命令,并与Eviews软件对比,让大家对门限回归有一个全面的了解。
门限回归理论介绍
门限回归操作流程图
门限回归操作以及结果解释等
论文讲解以及课程总结
Class 9. 内生性问题专题I:倾向匹配得分
倾向匹配得分简介、为何使用 PSM ?、传统的配对方法、配对过程中的两个核心问题、匹配方法、优缺点
倾向匹配得分建模流程图
PSM操作命令及其具体应用
论文讲解
课程总结
Class 10. 内生性问题专题II:合成控制法
Class 11. 结果输出Extracting results
Post summary statistics(summarize、tabstat)
Post correlation coefficients (pwcorr、correlate、logout )
Coefficients/equations
Basic syntax and usage
estout、esttab、estadd and other useful Stata commands
Standard errors, p-values, and summary statistics
Use with Word/Rtf/Excel/LaTeX
Other Advanced Examples(esttab、outreg2、logout等)
Class 12. 经济金融数据库(国泰安数据库、中经网)使用技巧
Class 13. 论文写作专题(从源头数据处理到分析)
Class 14. 空间计量经济学模型(横截面空间计量模型与面板空间模型,包括空间自相关检验、空间效应检验、SAR、SEM模型以及空间面板随机与固定效应检验等)
空间计量发展概述
空间回归模型动因
空间效应
空间权重矩阵
空间相关性度量
空间计量模型简介、流程图、识别检验、判别准则等
横截面空间计量模型及stata应用
面板空间计量模型及stata应用(面板固定效应与随机效应等检验)
2020国庆Stata研讨班
学习优势
理论与软件并重,手把手教学,零基础起步,小白也能学会的Stata研讨班!
重要的事情说三遍,我们课程手把手带大家操作学习,并提供完整do文档以及数据、讲义、资料书等,手把手教学和操作学习!
学习礼包
2,学术学习资料大礼包一份;
3,课后赠送三个配套精品课程视频:《零基础学空间计量:空间计量及Geoda、stata应用》+初级班视频《零基础学stata,让每一个文科生都成为计量高手》+高级班视频《高级量化回归分析:让每一个文科生都能学会回归分析》,全网累计1000人订阅,价值1000元;
4,后续相同课程现场班可以五折优惠参加。
立体化的服务体系,真正保障学有所成!
1、系统化的知识体系。15场线上+线下班成功举办的经验积累,知识点精细,学习成长路径更放心;
2、在线直播。授课以直播形式,能够及时答疑,互动性更强,感受线下课堂学习氛围
3、课后答疑。有学习上的疑问,可与老师1对1沟通解答。
4、零基础起步,理论与软件并重,手把手教学,小白也能学会的计量班。
学习礼包
开课时间:
时间:2020年10月1日-10月4日(四天)
参会人数:限额60人,报名成功与否以实际付款为准,不接受口头报名。
价格:原价4000元 /3600元 (学生价,仅限全日制本科生和硕士在读);
授课形式:老师讲授指导、学员操作练习、线上答疑解惑。
课程资料:提供PPT、课程讲义以及完整的do文档等。
优惠信息
1.同一单位3人以上报名,9折优惠;
2.同一单位5人以上报名,8折优惠(前2项优惠不能叠加)
学习目标
2、了解常用模型的思路、原理和建模方法,从源头数据库等数据下载、搜集、整理、管理,到stata数据操作,培养数据分析能力;
3、通过中心精心准备的do文档讲义来完成学习,并实现do文档中现成命令的可复制性(只需要修改部分do文档命令的变量,就可以一键实现数据分析和数据管理的结果,具有复制性),然后根据相关计量经济学知识学习,能够独立完成计量经济学模型建模以及实证分析!
学习对象
经济及社科类青年教师、博士生、硕士生、高年级本科生。(1 Stata爱好学习者。2 经济管理以及人文社科领域人员、各类市场调查公司、咨询公司、互联网公司和科研机构需要进行数据处理的人士。)
报名流程
支持网络付款以及对公转账
报名流程
2、交费(微信、支付宝或者对公转账等),报名前请确认信息。
3、开课前发送培训通知以及软件准备,电子版预习资料等。
4、开课后领取发票及邀请函。
网络付款:扫描下方二维码立即报名哦
▲(教师)扫码报名
▲(学生价)扫码报名
注意事项
在线咨询:
王老师
电话:18729083980
微信:Xindream1992
扫码添加微信