标题: 标准差怎么求 [打印本页] 作者: shiyiming 时间: 2009-11-9 00:55 标题: 标准差怎么求 有一个变量x,一共1000行,1000个数据,我想对每一个数据都和其前面30个数据(x lag(x) ``````lag30(x))求一个标准差,这样得到1000个标准差,请问该如何实现,STD无法对列进行处理,是否应该转置呢,该如何编写程序,请指教!作者: shiyiming 时间: 2009-11-9 01:30 标题: Re: 标准差怎么求 何谓前面?如果是第一个数据怎么办?我想此问题不难,只要定义准确就有办法的。作者: shiyiming 时间: 2009-11-9 02:40 标题: Re: 标准差怎么求 [code:3u7aa6fp]data NewData;
set UrData;*your dataset contains a variable x;
array x_{31} x0-x30;*assign x and its lag values;
x0 =x;
do i =1 to 30;
x_[i+1] =lag(x_[i]);
end;
std =std(of x0-x30);
drop x0-x30 i;
run;[/code:3u7aa6fp]作者: shiyiming 时间: 2009-11-9 12:36 标题: Re: 标准差怎么求 谢谢,我的数据有超多,这样运算很慢,我想改成每30个数据就运算一下STD,第30个数据就是下一个数组的1,比如1 2 3 ·······30 2 3 ·······30 2······· ,最后剩下的数据按实际的个数计算STD,请问该如何实现呢,谢谢!作者: shiyiming 时间: 2009-11-9 12:57 标题: Re: 标准差怎么求 大麻沙拉蒂,请问你是印度人还是基地组织成员?不过你的中文说得真好迪?赞一个!作者: shiyiming 时间: 2009-11-9 21:50 标题: Re: 标准差怎么求 [quote:1jq4dwlb]大麻沙拉蒂,请问你是印度人还是基地组织成员?不过你的中文说得真好迪?赞一个![/quote:1jq4dwlb]
他显然既不是印度人也不是基地组织成员。因为他的汉语带有80后的口音,[quote:1jq4dwlb]我的数据有超多。。。[/quote:1jq4dwlb]作者: shiyiming 时间: 2009-11-9 22:24 标题: Re: 标准差怎么求 [code:1lpzc7zj]data _null_; set UrData end =endof;
if endof then call symput('r', ifn(mod(_n_, 29), mod(_n_, 29)-2, 27));
run;
%let r =&r; %put &r;
data NewData;
set UrData end =endof;*your dataset contains a variable x;
array x_{30} x0-x29;*assign x and its lag values;
x0 =x;
do i =1 to 29; x_[i+1] =lag(x_[i]); end;
if mod(_n_, 29) =1 then std =std(of x0-x29);
else if endof then std =std(of x0-x&r.);
drop x0-x29 i;
run;[/code:1lpzc7zj]作者: shiyiming 时间: 2009-11-10 12:39 标题: Re: 标准差怎么求 谢谢,请问在程序那一段能体现出每30个数据求一次,30个数据和下30个数据首尾相连这个特点??谢谢了