全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
7095 17
2014-06-05
目前,小弟我有一个面板数据,上市公司从03年到12年股票的月收益率,由于本身并不是平衡面板数据,但是直接调用连玉君老师的xtbalance命令的话会造成数据量损失巨大。目前我希望的筛选条件定为:任意一公司,只要从03年到12年之间,其中一整年之内的连续12个月的观测值都缺失的话,就把这个公司所有观测值drop掉。
本人思前想后,想到头都爆炸了还是想不到实现方法,请各位大牛指教指教,说说思路都可以。
PS:某些股票一整年的观测值确实有可能是因为,财务问题导致停牌,停牌时长1年到3年的都有。
谢谢啊~~~
二维码

扫码加我 拉你入群

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

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

全部回复
2014-6-5 23:06:55
没明白,如果只是想drop obs的话,if不就好了,各月观测值等于0,用&连一起,然后把各年的都写了,删完了之后不就是你想要的了?如果嫌麻烦就用loop。

不过不推荐用drop,还是新建一个新的dta,万一错了还能改。
二维码

扫码加我 拉你入群

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

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

2014-6-5 23:35:28
réussite 发表于 2014-6-5 23:06
没明白,如果只是想drop obs的话,if不就好了,各月观测值等于0,用&连一起,然后把各年的都写了,删完了之 ...
可能我没把问题说清楚,我是想把其中有一年的是没有观测值的公司给drop掉,至于没有观测值,并不是说那个公司的收益率为空缺,而是这个公司在某一年都没有观测值(不仅仅是收益率空缺),我想编程识别出这些公司。譬如一个公司3年以内应该有36个obs(月度数据),但是由于停牌两年,结果只有12个obs。
其实我就是想把这些公司都找出来,然后drop掉。
二维码

扫码加我 拉你入群

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

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

2014-6-5 23:53:14
wingguy 发表于 2014-6-5 23:35
可能我没把问题说清楚,我是想把其中有一年的是没有观测值的公司给drop掉,至于没有观测值,并不是说那个 ...
Ok,还是没明白。如果您的月度数据已经按年月命名的话,应该会容易些。

gen missing=0
replace missing=1 if 0301==0 & 0302==0 & 0303==0 & 0304==0 & 0305==0 & 0306==0 & 0307==0 & 0308==0 & 0309==0 & 0310==0 & 0311==0 & 0312==0
replace missing =1 if 把03改成04,剩下copy
……如此,做各年

drop if missing==1
各年的都木有鸟

或者用loop,不用辣么多字,但要求您的变量名比较统一

二维码

扫码加我 拉你入群

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

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

2014-6-5 23:53:29
réussite 发表于 2014-6-5 23:06
没明白,如果只是想drop obs的话,if不就好了,各月观测值等于0,用&连一起,然后把各年的都写了,删完了之 ...
我现在有个想法,不过卡住了,思路是:
forvalue每一个公司(大概有1000家),然后生成关于年份的虚拟变量,正常来说只要不是停牌超过一年的公司,在03年到12年期间应该是会生成10个虚拟变量,如果少于10的话就代表中间有至少一年停牌,那么我就直接在面板数据里面drop掉这家公司。
但是,我在怎么数生成了多少个虚拟变量上卡住了,不知道怎么写程序。
二维码

扫码加我 拉你入群

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

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

2014-6-5 23:57:21
wingguy 发表于 2014-6-5 23:53
我现在有个想法,不过卡住了,思路是:
forvalue每一个公司(大概有1000家),然后生成关于年份的虚拟变 ...
用loop生成missing=1,一年都木有就是12,然后各年求sum,=12就生成当年missing——year=1,然后drop if missing_year==1。好吧,很麻烦,就是一点点建议,您慢慢想
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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