楼主: 夏目贵志
1445 1

[Eviews] 求一个group里每行的median [推广有奖]

贵宾

学科带头人

96%

还不是VIP/贵宾

-

威望
1
论坛币
238570 个
通用积分
17117.5494
学术水平
851 点
热心指数
971 点
信用等级
711 点
经验
759232 点
帖子
4029
精华
1
在线时间
793 小时
注册时间
2012-7-15
最后登录
2017-9-16

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
尽管大家一致要求EViews提供@cmedian(一个可以求每行数据的median的命令)这个功能,但是EViews一直没有提供。参见:
http://forums.eviews.com/viewtopic.php?f=3&t=9931
http://forums.eviews.com/viewtopic.php?f=3&t=11829

这次我来介绍一下如何自己编程求出一个group里每行的median。注意,如果是panel data,可以通过对pool对象求descriptive statistics来得到每行的median。但是并不是所有的数据都适用这个方法。

代码如下。当中,test是需要求median的group,需要事先定义好。执行完这几行代码会生成一个叫rowmedian的series,当中保存着group里每行的median。

这个程序其实十分简单。即把group存为matrix,然后每次取出一行,求出median,然后保存结果。当然,如果行数很多,这个程序的速度必然不会非常理想。但是在EViews提供一个native的解决方案之前,这也不失为一个实用的办法。有兴趣的朋友可以把它改成一个subroutine,然后就可以更方便的用在自己的程序里了。这个subroutine可以叫做rquantile,接受两个参数,一个是matrix的名字,另一个是quantile,即下述代码中的0.5
  1. ' initialize result vector
  2. series rowmedian = NA
  3. stomna(rowmedian,rme)
  4. stomna(test,target)
  5. ' get the total number of rows
  6. !numrows = @rows(rme)
  7. ' for each row, get the median
  8. for !i = 1 to !numrows
  9.     rme(!i)=@quantile(target.@row(!i),0.5)
  10. next
  11. ' put results back to the series and clean up
  12. mtos(rme, rowmedian)
  13. delete rme target
复制代码
实例如下:
group test的内容
group.png

执行程序
program.png

结果:
result.png


二维码

扫码加我 拉你入群

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

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

关键词:median Media Group Dia edi median

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

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

本帖被以下文库推荐

沙发
niuniuyiwan 在职认证  发表于 2015-9-21 17:45:18 |只看作者 |坛友微信交流群
好贴,感谢分享。

使用道具

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

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

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

GMT+8, 2024-4-27 19:55