全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
5976 12
2015-10-31

t从1到5

以d进行分组回归(d从1到100),现在想求每一个组里的残差和残差的方差。

下面的代码回归没有问题,会分组进行,但是到了求残差的时候最后只剩下d=100的时候的残差,前面的都不见了。


求大神告知,怎么保留所有d的残差并求他们的方差


forval i=1/5{

        sort d

        by d:reg t`i' rmrf

        predict u`i' if e(sample),r

        su u`i'

}




二维码

扫码加我 拉你入群

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

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

全部回复
2015-10-31 05:52:56
forval i=1/5{
    forvalues d=1/100 {
        reg t`i' rmrf if d==`d'
        predict u`i'_d`d' if e(sample), r
        su u`i'_d`d'
    }
}

二维码

扫码加我 拉你入群

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

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

2015-10-31 10:21:17
夏目贵志 发表于 2015-10-31 05:52
forval i=1/5{
    forvalues d=1/100 {
        reg t`i' rmrf if d==`d'
非常感谢!但还有一个问题,因为我的d的分组里有些公司的有些日期是没有数据的。如果是你这个代码的话,碰到没有数据的组程序就会停掉,这如何解决呢?

比如说d=1的时候企业1,2,4,5有数据,但企业3没有,企业3从d=4的时候开始有,怎么skip掉没有数据的情况。
如果是sort by的话他会自动skip但就会求不出每组的残差。

不好意思,问题比较多。

万分感谢!!
二维码

扫码加我 拉你入群

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

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

2015-10-31 11:08:03
夏目贵志 发表于 2015-10-31 05:52
forval i=1/5{
    forvalues d=1/100 {
        reg t`i' rmrf if d==`d'
关于有些部分没有观测值的问题已经解决了
forval i=1/3{
    forvalues d=1/189 {
            su t`i' if d==`d'
            local n = r(N)
            if `n'<15{
            gen s`i'_d`d'=0
            }
            else{
        reg t`i' rmrf if d==`d'
        predict u`i'_d`d' if e(sample), r
        su u`i'_d`d'
        gen s`i'_d`d'=r(Var)
                }
    }
}

我想最终求出每家企业在每个d分组里的方差,就是对每家企业求方差的时序列。
如果按上面的代码,求出来的方差的形式是s`i'_d`d'是一列,而且整列都是一样的数据。
如果最终想按照s1,s2,...s5的形式的方差的时序列进行输出,应该怎么改代码?
二维码

扫码加我 拉你入群

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

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

2015-10-31 12:03:55
朱星 发表于 2015-10-31 10:21
非常感谢!但还有一个问题,因为我的d的分组里有些公司的有些日期是没有数据的。如果是你这个代码的话,碰 ...
reg和predict前加上cap
二维码

扫码加我 拉你入群

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

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

2015-10-31 22:38:54
朱星 发表于 2015-10-31 11:08
关于有些部分没有观测值的问题已经解决了
forval i=1/3{
    forvalues d=1/189 {
只保留s和d还有又出来的方差,然后
duplicates drop
然后用reshape命令转换成需要的格式。具体的根据需要看一下reshape的帮助。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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