楼主: 朱星
5350 12

[回归分析求助] 分组回归之后如何求每一个组的残差 [推广有奖]

  • 0关注
  • 0粉丝

大专生

13%

还不是VIP/贵宾

-

威望
0
论坛币
1692 个
通用积分
0.1800
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
250 点
帖子
25
精华
0
在线时间
38 小时
注册时间
2014-10-20
最后登录
2015-12-15

楼主
朱星 学生认证  发表于 2015-10-31 03:40:00 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

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'

}




二维码

扫码加我 拉你入群

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

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

关键词:分组回归 predict Sample AMPL forv stata 分组回归

回帖推荐

夏目贵志 发表于8楼  查看完整内容

只有一行?为什么会只有一行?那有多少列?

夏目贵志 发表于5楼  查看完整内容

reg和predict前加上cap

夏目贵志 发表于2楼  查看完整内容

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 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'
    }
}

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
朱星 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
朱星 学生认证  发表于 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
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
朱星 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

地板
夏目贵志 发表于 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的帮助。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
朱星 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

7
朱星 学生认证  发表于 2015-11-1 11:03:22 |只看作者 |坛友微信交流群
夏目贵志 发表于 2015-10-31 22:38
只保留s和d还有又出来的方差,然后
duplicates drop
然后用reshape命令转换成需要的格式。具体的根据需 ...
谢谢谢谢
但是我看了下reshape 没太明白 不知道怎么适用到我这
我要在一行当中分段转置

我现在的情况是只有一行所有企业在所有d里的方差的数据,其他全删了。
就是s1_d1...s1_d189........s1942_d189
总共1942家企业

现在想做的是建立1942个方差的时序列变量
      t1 t2 .....t1942
1
2
3
.
.
189
从一行的格式变成上面那种格式

使用道具

8
夏目贵志 发表于 2015-11-1 11:12:49 |只看作者 |坛友微信交流群
朱星 发表于 2015-11-1 11:03
谢谢谢谢
但是我看了下reshape 没太明白 不知道怎么适用到我这
我要在一行当中分段转置
我现在的情况是只有一行所有企业在所有d里的方差的数据,其他全删了。
就是s1_d1...s1_d189........s1942_d189
总共1942家企业
只有一行?为什么会只有一行?那有多少列?

使用道具

9
朱星 学生认证  发表于 2015-11-1 13:11:37 |只看作者 |坛友微信交流群
夏目贵志 发表于 2015-11-1 11:12
只有一行?为什么会只有一行?那有多少列?
我把其余行都删除了
总有有1942*189列
就是所有公司(1942家)的所有期间(189)的方差

使用道具

10
朱星 学生认证  发表于 2015-11-1 13:14:46 |只看作者 |坛友微信交流群
朱星 发表于 2015-11-1 13:11
我把其余行都删除了
总有有1942*189列
就是所有公司(1942家)的所有期间(189)的方差
就是把这一行所有方差当中的每家每家公司抽出来进行转置
最后分别形成每家公司方差的时许列

s11,s12,s13,s21,s22,s23,s31,s32,s33
换成
s11   s21   s31
s12   s22   s32
s13   s23   s33

使用道具

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

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

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

GMT+8, 2024-5-13 18:34