SAS中文论坛

标题: 如何取前期数值来计算标准差、平均值等各数值? [打印本页]

作者: shiyiming    时间: 2010-8-26 20:06
标题: 如何取前期数值来计算标准差、平均值等各数值?
请问各位前辈,我除了用lag外,有办法求出本身前20期的平均值、均方差、变异数、最大值、最小值等数值吗? 请各位高手帮帮忙!!

例:
期数        报酬率        平均值        均方差        变异数        最大值        最小值
1        12                                             
2        10                                             
3        5                                             
4        13                                             
5        20                                             
6        5                                             
7        11                                             
8        15                                             
9        9                                             
10        8                                             
11        9                                             
12        10                                             
13        11                                             
14        12                                             
15        8                                             
16        14                                             
17        15                                             
18        10                                             
19        17                                             
20        18        11.2632         4.0184         16.1474         20        5
21        8        11.5789         4.0962         16.7789         20        5
22        11        11.4737         4.0843         16.6816         20        5
23        15        11.7895         3.8590         14.8921         20        5
作者: Qiong    时间: 2010-9-7 09:50
标题: Re: 如何取前期数值来计算标准差、平均值等各数值?
obs很多,非得用sas么?Excel拖拖更快吧
作者: shiyiming    时间: 2010-9-13 01:08
标题: Re: 如何取前期数值来计算标准差、平均值等各数值?
因为数据量很大,无法用Excel来进行!
作者: shiyiming    时间: 2010-9-13 02:58
标题: Re: 如何取前期数值来计算标准差、平均值等各数值?
[code:3l95gtaq]proc expand data = had out = out1 method = none;  
        convert         rate = rate_max/transformout = (movmax 20  trimleft 19);       
        convert         rate = rate_min/transformout = (movmin 20  trimleft 19);
        convert         rate = rate_ave/transformout = (movave 20  trimleft 19);
        convert         rate = rate_std/transformout = (movstd 20  trimleft 19);
        convert         rate = rate_var/transformout = (movvar 20  trimleft 19);
run;[/code:3l95gtaq]

你的平均数有问题吧。20期的均数,怎么都不应该有那么多的小数位啊。1/20 =0.05.
话外:我在某个论坛上推广过类似的code,非常高效简洁,并且举例5million的数据,求moving std大概二分钟。不过许多人还是钟情于令人眩目的sql并且斤斤计较如何做才能快些。当然这个proc 有很多的局限性,务请留意。JingJu




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2