楼主: vincent829
17316 24

[其他] 关于连乘的问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
515 个
通用积分
0.1673
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1736 点
帖子
99
精华
0
在线时间
108 小时
注册时间
2005-10-6
最后登录
2013-9-25

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小弟被这个问题困扰多时了,一直进行不下去,帮帮忙吧有一个叫做X的变量,我想generate出一个新变量叫Y
Y[1]=X[1]
Y[2]=X[1]*X[2]
Y[3]=X[1]*X[2]*X[3]

Y[_n]=X[1]*X[2]*......*X[_n-1]*X[_n]

是不是要用循环的命令啊,我看了不少,foreach, forvalue, while,再配上local,可都试过了还是解决不了,急死了

对了,我数据是panel data,上面的只是针对一个ID,如果很多个ID,是不是只要前缀bysort ID就行了啊?谢谢,
二维码

扫码加我 拉你入群

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

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

关键词:panel data generate forvalue foreach bysort generate local

本帖被以下文库推荐

沙发
sungmoo 发表于 2009-2-13 10:57:00 |只看作者 |坛友微信交流群

g y=x

replace y=y[_n-1]*x in 2/l

已有 1 人评分经验 学术水平 热心指数 信用等级 收起 理由
ofse + 100 + 5 + 5 + 5 精彩帖子

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

使用道具

藤椅
sungmoo 发表于 2009-2-13 11:08:00 |只看作者 |坛友微信交流群

*按ID做递乘

sort id

g y=x

by id: g z=_n

by id: replace y=y[_n-1]*x if z>1

drop z

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
nkczxx + 1 + 1 + 1 热心帮助其他会员

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

使用道具

板凳
vincent829 发表于 2009-2-13 17:57:00 |只看作者 |坛友微信交流群

可能我表述的不太清楚,这个Y是在不同的ID中重复出现产生的,所以要前缀bysort (id),但是显示出错,说in may not be combined with by,怎么办啊? 

使用道具

报纸
vincent829 发表于 2009-2-13 18:48:00 |只看作者 |坛友微信交流群

我想了个办法,因为我样本有1084个id

forvalues no = 1/1084 {
replace Y = Y[_n-1]*X in 2/l if id ==`no`
}

为什么一直显示`no` invalid name?? 我起其他的名字也一样

使用道具

地板
蓝色 发表于 2009-2-13 18:51:00 |只看作者 |坛友微信交流群
以下是引用sungmoo在2009-2-13 11:08:00的发言:

*按ID做递乘

sort id

g y=x

by id: g z=_n

by id: replace y=y[_n-1]*x if z>1

drop z

这个没错的啊

是可以达到目的的

使用道具

7
sungmoo 发表于 2009-2-13 18:53:00 |只看作者 |坛友微信交流群
以下是引用vincent829在2009-2-13 17:57:00的发言:这个Y是在不同的ID中重复出现产生的

不懂你这句话的意思。可否举一个例子说明你想要的结果?

使用道具

8
sungmoo 发表于 2009-2-13 19:25:00 |只看作者 |坛友微信交流群

g y=x
bysort id: replace y=y[_n-1]*x if _n>1

*3楼等价于以上两条命令。

已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

9
vincent829 发表于 2009-2-13 19:45:00 |只看作者 |坛友微信交流群
以下是引用sungmoo在2009-2-13 19:25:00的发言:

g y=x
bysort id: replace y=y[_n-1]*x if _n>1

*3楼等价于以上两条命令。

it works

太感谢了

使用道具

10
vincent829 发表于 2009-2-13 20:02:00 |只看作者 |坛友微信交流群

可能表达能力有限,我贴了一点我的样本,我现在想gen一个新的variable A,我想把每个月的收益率连乘。在不同的id sub group里面重复这样的命令,所以还是连乘的问题,怎么能达到呢?

因为Variable msr代表的是monthly stock return,所以一个event_m (代表event month) 会对应3个相同的值,event_d代表event day

idevent_mevent_dmsr
1111
1121
1131
1210.983333
1220.983333
1230.983333
1311.042373
1321.042373
1331.042373
2111.01626
2121.01626
2131.01626
2211.04
2221.04
2231.04
2310.961539
2320.961539
2330.961539

使用道具

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

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

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

GMT+8, 2024-4-19 16:46