全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
15982 39
2017-07-01
悬赏 100 个论坛币 已解决
本人的学位论文需要用到会计信息可比性指标,可是当我在计算时出现问题,请计算过该指标或者数据处理高手提供帮助,万分感激。计算步骤如下:
        具体地,De Franco 等 (2011) 利用股票收益代表经济业务对公司的净影响,利用会计盈余这一指标反映公司的会计信息。对于公司 i 和 j 的会计信息可比性,先分别对它们使用第 t 期的连续 16 个季度数据估计式 (1) 的系数。

        Earningit i i Returnit it (1)
然后,将估计出来的系数分别代入式 (2) 和式 (3),分别计算在公司 i 第 t 期以该期收益 Returnit衡量的经济事项下,经由两公司会计系统 fi ( )和 fj ( )变换得到的期望盈余 E(Earnings)iit 和 E(Earnings)ijt。此期望盈余即为该经济事项经由公司会计系统处理得到的会计盈余。两公司期望盈余的差即为其在相同经济业务情况下的会计系统差异,也即是公司 i 和公司 j 的会计信息可比性差异程度。  
     E(Earnings)iit i i Returnit (2)
     E(Earnings)ijt j j Returnit (3)  为增加结果的可靠性,我们将用式 (2) 和式 (3) 计算连续 16 期的 E(Earnings)iit 和 E(Earnings)ijt ,同时,为使越大的该数值表示的会计信息可比性越高,还对此差额的绝对值取负值,然后再取 16 期数据的均值即得公司 i 和公司 j 第 t 期的会计信息可比性 COMPACCTijt ,具体如式 (4) 所示  
    COMPACCTijt =-1/16×∑ E(Earnings)iit -E(Earnings)ijt  (4)
本人已经将16期的期望盈余计算出来了,就卡在最后一步的计算了,不知道这个循环语句怎么写,请求大神的帮助。

最佳答案

nightwings 查看完整内容

你只需要在我那段code之前做额外的一步,create a new dataset with i-j pairs: use olddata rename id id1 sort ind qu id1 save newdata1 rename id1 id2 rename earning1 earning2 sort ind qu id2 joinby ind qu using newdata1 drop if id1==id2 这样你的data就是i-j成对的了,然后用我上面回帖的代码就可以了,根本不用loop。 一般而言,能不用loop就不要用loop,stata的loop比较耗时。 其实用SAS的proc sql ...
二维码

扫码加我 拉你入群

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

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

全部回复
2017-7-1 18:16:21
icehh 发表于 2017-7-7 14:22
好,大神,那我就不问你怎么计算可比性了,我请教一下如何计算同一行业和同一年度任意两个观测值的差值, ...
你只需要在我那段code之前做额外的一步,create a new dataset with i-j pairs:
use olddata
rename id id1
sort ind qu id1
save newdata1
rename id1 id2
rename earning1 earning2
sort ind qu id2
joinby ind qu using newdata1
drop if id1==id2

这样你的data就是i-j成对的了,然后用我上面回帖的代码就可以了,根本不用loop。
一般而言,能不用loop就不要用loop,stata的loop比较耗时。
其实用SAS的proc sql更有效率,基本一步就出来了
二维码

扫码加我 拉你入群

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

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

2017-7-4 10:19:59
有没有人能帮忙一下,可以有偿。
二维码

扫码加我 拉你入群

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

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

2017-7-4 10:56:17
* concatenate ID_i and ID_j to create the ID for each pair *;
gen pairid=ID_i+ID_j /*if your ID_i and ID_j are strings, you can use "+" to concatenate them. Otherwise, use string(ID_i)+string(ID_j)*/
gen diff = E(Earnings)iit -E(Earnings)ijt /*replace E(Earnings)iit and E(Earnings)ijt with the ones you have already calculated out */
xtset pairid year,yearly
rangestat (sum) diff (count) diff, interval(year -16 0) by(pairid)
gen COMPACCTijt = -1/16*diff_sum
** you can also check diff_count and keep pairs with only, say, at least 12 observations. **
二维码

扫码加我 拉你入群

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

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

2017-7-4 12:03:08
nightwings 发表于 2017-7-4 10:56
gen pairid=cats(ID_i,ID_j)
gen diff = E(Earnings)iit -E(Earnings)ijt
xtset pairid year,yearly
谢谢大神,好人!但是我想问一下cats这个命令是做什么的呀?还有E(Earnings)就是一个变量,怎么实现E(Earnings)iit -E(Earnings)ijt 呢?
二维码

扫码加我 拉你入群

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

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

2017-7-4 13:50:04
icehh 发表于 2017-7-4 12:03
谢谢大神,好人!但是我想问一下cats这个命令是做什么的呀?还有E(Earnings)就是一个变量,怎么实现E(Ear ...
但是我想问一下cats这个命令是做什么的呀?
Sorry, I made a mistake, CATS is a SAS function . I 've changed the code above.
还有E(Earnings)就是一个变量,怎么实现E(Earnings)iit -E(Earnings)ijt 呢?
I'm just referring to the variables you have already calculated. Just replace these two variables with the ones you have.
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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