全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2428 2
2016-07-06
我有一个时间序列,需要以60天为一个时间段来求某变量的最大值及其序号。

我要根据每个时间段的最大值来求解该时间段内的最大收益差
因为时间段之间大部分是有间隔的,也有些时间段可能存在重叠。所以我想将每个时间段的最大值及其序号,赋值给该时间段的第一个观测值以此来方便之后的计算
求问我该怎么把最大值及其序号赋值给该时间段的第一个观测值?

举个例子,比方说某个时间段是从20150101开始的,我希望得到的数据格式:
时间          收益        最大值        最大值序号
20150101        0.5        0.8                   24
20150102        0.6        .                    .
…                …        …                 …
20150228        0.4        .                   .       


之前有帖子提过相似问题,但需要sort,我的数据量太大,而且时间段很多,sort起来太慢了
我自己的想法是:
forv i=1/n{
gen id=_n if daily<=0 & daily>=60 & stock==z
egen maxc=max(Clsprc) if id!=.
replace maxc_id=id if maxc==Clsprc
}
但我不知道怎么把id赋值给第一个观测值?
求问各位高手该怎么编程?
二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-6 10:19:28
其实sort很快的,因为你只要60个数。假设你有个变量period对应每个时间段, 在时间段内变量time从1-60对应时间序列

sort period time
by period: egen max = max(Clsprc)
gen date = time if Clsprc)==max
sort period date
by period: replace date=date[_n-1] if _n>1
sort period time


二维码

扫码加我 拉你入群

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

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

2016-7-6 11:50:23
非常感谢你的解答
但是我的总数据量太大了,有百万条观测值,如果用了sort的话在进行下一个时间段的计算时需要对整体sort,这样比较慢
我自己想了个办法,单独求这个最大值的编号然后赋值给第一个观测值,这样应该会快一些。
谢谢你啦

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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