楼主: uoe
5858 3

[编程问题求助] 如何用stata对实验组进行对照组多次匹配 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

小学生

71%

还不是VIP/贵宾

-

威望
0
论坛币
14 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
60 点
帖子
1
精华
0
在线时间
16 小时
注册时间
2018-6-30
最后登录
2024-11-2

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
数据变量为:
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,很多地方不懂。请各位指教。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
admin_kefu 在职认证  发表于 2019-3-26 17:13:16 |只看作者 |坛友微信交流群
您好,如果您的求助没有解决,请到项目交易发布需求,会有更快更专业的用户帮助您 https://bbs.pinggu.org/prj/

使用道具

藤椅
Kayla1225ke 发表于 2021-4-21 17:17:15 |只看作者 |坛友微信交流群
您好,请问您的数据处理最后解决了吗?

使用道具

板凳
thz514 发表于 2023-12-22 18:06:25 |只看作者 |坛友微信交流群
教材原文有几处代码有问题,需要修改下。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 23:30