数据变量为:
ID Assets(资产)Lev(资产负债率)ROA(总资产收益率)LNSize(企业规模)Growth(成长性)Dual(两职合一)Board(董事会规模)Indepen(董事独立性)Mshare(高管持股) Opinion(审计意见) Big10(十大审计事务所)Ind(行业)Year(年度) Restate(是否财务重述)
Restate=1样本样本700多个 Restate=0样本6000多个
我希望现根据(1)同行业(2)同年度(3)规模相近,资产相差在30%以内,为Restate=1的实验组匹配对照组样本
但是除了规模、年度、行业需要直接控制,然后需要根据其他变量(Lev ROA LNSize Growth Dual Board Indepen Mshare Opinion Big10)用倾向得分匹配进行二次匹配。
也就是说,需要根据行业、年度、规模对每个实验组样本在Restate=0的样本内进行第一次重复匹配,每个实验组样本会得到至少一个满足行业相同,年度相同、规模相近的对照组样本集合,这个集合至少包含一个对照组样本,而无法获得匹配样本则剔除该实验组样本。
再对实验组样本根据(Lev ROA LNSize Growth Dual Board Indepen Mshare Opinion Big10)在自身对应的集合内进行PSM匹配,且和其他实验组样本的匹配对象不会重复,最后得到1:1的对照组样本。
请问这样的匹配逻辑 stata可以实现吗?如何实现?
(这可能太复杂了,实现起来太困难的话就算了,我也只是思考一种理想状况)
退而求其次,如果只是根据同行业、同年度、相近规模,我根据李春涛的《随机模拟与金融数据处理Stata教程》里的方法写了一段
<
keep if restate==1
save C:\Users\uoe\Documents\01_课程\毕业论文\数据\restate1.dta, replace
restore
use C:\Users\uoe\Documents\01_课程\毕业论文\数据\test1.dta #样本总数据
keep if restate==.
save C:\Users\uoe\Documents\01_课程\毕业论文\数据\restate0.dta, replace
clear
set matsize 5000
use C:\Users\uoe\Documents\01_课程\毕业论文\数据\restate1.dta
local N=_N
mkmat Code Assets Lev ROA LNSize Growth Dual Board Indepen Mshare Opinion Big10 Ind Year restate,mat(restate)
capture postclose match
postfile match Code Year restate match_group using C:\Users\uoe\Documents\01_课程\毕业论文\数据\match.dta
forval i = l(1)`N'{
di"`i'of`N' loops completeted"
drop _ all
use C:\Users\uoe\Documents\01_课程\毕业论文\数据\restate0.dta
qui keep if Year == scalar(restate1[`i',2])
qui keep if Ind == scalar(restate1[`i',3])
gen asset_ratio = abs(Assets/scalar(restate1[`i',5])-1)
qui keep if asset_ratio<0.3
if _N<1 {
continue
}
sort asset_ratio Code
qui keep if _n==1
local Code1 = scalar(restate1[`i',1])
local Year1 = scalar(restate1[`i',2])
local Code2 = Code[1]
local Year2 = Year[1]
post match(`Code1')(`Year1')(1)(`i')
post match(`Code2')(`Year1')(0)(`i')
} #这里提示invalid syntax
postclose match
>
之后还有未执行
<
use C:\Users\uoe\Documents\01_课程\毕业论文\数据\match.dta, clear
sort Code Year
merge Code Year using C:\Users\uoe\Documents\01_课程\毕业论文\数据\test1.dta, nokeep
drop _ m
sort match_group Code Year
list match_group Code Year Lev ROA LNSize Growth Dual Board Indepen Mshare Opinion Big10 Ind
>
请教各位命令应该哪里出错了?
十分感谢。我的目的是为了检验媒体监督对财务重述的影响,媒体监督数据需要确定实验组样本和对照组样本之后才能获取。
现在卡在样本匹配上,之前看了一些PSM匹配的教程,觉得不能直接把行业、年度、规模作为协变量进行匹配,最后匹配对应样本之间下来年度、行业都是不同的,规模差距也很大。
第一次用Stata,很多地方不懂。请各位指教。