SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 780|回复: 7
打印 上一主题 下一主题

标准差怎么求

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-11-9 00:55:24 | 只看该作者

标准差怎么求

有一个变量x,一共1000行,1000个数据,我想对每一个数据都和其前面30个数据(x lag(x) ``````lag30(x))求一个标准差,这样得到1000个标准差,请问该如何实现,STD无法对列进行处理,是否应该转置呢,该如何编写程序,请指教!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-11-9 01:30:41 | 只看该作者

Re: 标准差怎么求

何谓前面?如果是第一个数据怎么办?我想此问题不难,只要定义准确就有办法的。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-11-9 02:40:23 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-11-9 12:36:45 | 只看该作者

Re: 标准差怎么求

谢谢,我的数据有超多,这样运算很慢,我想改成每30个数据就运算一下STD,第30个数据就是下一个数组的1,比如1 2 3 ·······30 2 3 ·······30 2······· ,最后剩下的数据按实际的个数计算STD,请问该如何实现呢,谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-11-9 12:57:27 | 只看该作者

Re: 标准差怎么求

大麻沙拉蒂,请问你是印度人还是基地组织成员?不过你的中文说得真好迪?赞一个!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-11-9 21:50:14 | 只看该作者

Re: 标准差怎么求

[quote:1jq4dwlb]大麻沙拉蒂,请问你是印度人还是基地组织成员?不过你的中文说得真好迪?赞一个![/quote:1jq4dwlb]

他显然既不是印度人也不是基地组织成员。因为他的汉语带有80后的口音,[quote:1jq4dwlb]我的数据有超多。。。[/quote:1jq4dwlb]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-11-9 22:24:30 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2009-11-10 12:39:31 | 只看该作者

Re: 标准差怎么求

谢谢,请问在程序那一段能体现出每30个数据求一次,30个数据和下30个数据首尾相连这个特点??谢谢了
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-3-4 02:21 , Processed in 0.069454 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表