全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
3374 3
2020-07-19

各位大佬们好!遇到了难题来求助一下!

我的数据如下(完整数据在附件里):

stkcd        rptdt        fenddt        ananmid        ananm        reportid        feps

000001        16dec2019        2019-12-31        30000000000000088632,30438664        邹恒超,栾天悦        13522616        1.49

000001        13jan2020        2019-12-31        30000000000000088632,30438664        邹恒超,栾天悦        14362086        1.45

000001        14jan2020        2019-12-31        30000000000000092889,30434917        戴志锋,邓美君        14367224        1.41

000001        14feb2020        2019-12-31        30000000000000092889,30434917        戴志锋,邓美君        14656799        1.41

000001        14jan2020        2019-12-31        30000000000000168969,30376789        傅慧芳,陈绍兴        14362637        1.54

000001        14jan2020        2019-12-31        30000000000000181394,30357643,30440118        肖斐斐,冉宇航,彭博        14374692        1.41

000001        14feb2020        2019-12-31        30000000000000181394,30357643,30440118        肖斐斐,冉宇航,彭博        14659565        1.41

000001        14jan2020        2019-12-31        30243281,30000000000000160926        倪军,屈俊        14367244        1.54

000001        14jan2020        2019-12-31        30253262        杨仁文        14383082       

000001        25dec2019        2019-12-31        30259292        唐子佩        13712682        1.62

000001        14jan2020        2019-12-31        30288942        沈娟        14390363        1.45

000001        14jan2020        2019-12-31        30292624,30431428,30355057        王剑,陈俊良,李锦儿        14384074        1.42

000001        14jan2020        2019-12-31        30324619        廖志明        14367234        1.45

stkcd是证券代码,rptdt是分析师发布预测的日期, fenddt是分析师预测的会计年度,ananmid是分析师的编号 ananm是分析师的名字 reportid是分析师预测报告的编号 feps是分析师的预测值。举例来说,第一行数据就表明,编号为30000000000000088632,30438664的这个分析师团队(ananmid里面没有用","隔开表明是该预测是一个分析师做的,用“,”隔开表明该预测是多个分析师做的)在2019年12月16日时发布了对证券代码为000001的上市公司在2019年这个会计年度(fenddt="2019-12-31")的eps预测。

我的毕业论文需要我计算分析师的一致预测,这个一致预测我下的定义是,分析师某次预测报告发布的前30天内(-1,-30)除该分析师外的所有分析师的预测均值,如果在那30天内某个分析师发布了多次预测,就取它最新一次预测来算。目前我想到的方法是用rangestat来做,命令是rangestat (mean) feps,interval(rptdt -30 -1) excludeself by(stkcd fenddt)。这个方法有两个问题我不知道怎么解决:1.它没有取分析师过去三十天最新一次的预测值 2.在之前的30天的期间内,也没有排除该分析师的预测数据。

完整数据链接:

这个问题想了好几天了,也再尝试用循环做,但总是卡着想不出来,黔驴技穷,向各位大佬求助!




二维码

扫码加我 拉你入群

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

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

全部回复
2020-10-5 09:14:52
一致预测的定义是怎么下的啊
二维码

扫码加我 拉你入群

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

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

2020-10-6 14:13:16
andreawzy 发表于 2020-10-5 09:14
一致预测的定义是怎么下的啊
我根据文献下的定义,万得数据库也有一致预测的数据和定义。
二维码

扫码加我 拉你入群

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

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

2022-2-27 10:05:25
首先,你可以用python根据ananm进行分隔,把每行数据变成单个分析师。
然后再使用STATA进行操作。

*保留距离真实EPS发布-90到-4天的数据并生成consensus与suspects
use 分析师预测EPS.dta,clear
merge m:1 stkcd fenddt using actualeps.dta,gen(m1)
keep if m1==3
drop m1
//通过excel相减得到priortoissuedays
keep if (priortoissuedays > = -90) & (priortoissuedays < -4)

drop if feps == .

bys stkcd fenddt: egen sumconsensus = total(feps*numanalyst)
bys stkcd fenddt: egen sumnum = total(numanalyst)
gen concensus = sumconsensus / sumnum
duplicates drop stkcd fenddt, force

gen bar = (meps-concensus)/concensus
gen suspects = 0
replace suspects = 1 if (bar >= 0) & (bar < 0.02)
save suspects.dta,replace
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群