请选择 进入手机版 | 继续访问电脑版
楼主: fyfzhdsfdx
11009 9

sas随机数seed的选择!求解 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
966 点
帖子
97
精华
0
在线时间
89 小时
注册时间
2012-8-22
最后登录
2016-9-24

fyfzhdsfdx 发表于 2012-12-31 14:51:07 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我想问一下sas里关于产生随机数的问题,请教高手指点。seed的值可以随便取吗?有什么要求吗?求解!十分感谢。
我要产生AR(1),自相关系数为你0.99的序列,重复产生60次,下面的代码对吗?
%macro simu(r);
%do t=1 %to &r;data a&t;y=0;do i=1 to 10000;x=normal(&t);y=0.99*y+x;output;drop i x;end;run;%end;
%mend simu;
%simu(60);
二维码

扫码加我 拉你入群

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

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

关键词:seed see 随机数 output normal amp normal

ziyenano 发表于 2012-12-31 16:13:31 |显示全部楼层 |坛友微信交流群
计算机生成的随机数,都是伪随机数,是根据数字生成的随机数。
通俗的讲就是每个seed对应一列随机数,不同seed对应的随机数列也不一样,
SAS中也是根据seed产生随机数列,
当seed取0的时候,seed的值其实是系统当前的时间

使用道具

fyfzhdsfdx 发表于 2013-1-1 15:05:05 |显示全部楼层 |坛友微信交流群
ziyenano 发表于 2012-12-31 16:13
计算机生成的随机数,都是伪随机数,是根据数字生成的随机数。
通俗的讲就是每个seed对应一列随机数,不同 ...
十分感谢您,谢谢!
那我写的程序有错误吗?运算结果和理论值差距有点大!具体程序如下:
产生自相关系数为0.99的ar(1)的序列
%macro simu(r);
%do t=1 %to &r;data a&t;y=0;do i=1 to 10000;x=normal(&t);y=0.99*y+x;output;end;drop i x;;run;%end;
%mend simu;
%simu(60);
对每个数据集的变量y每6个为一组,计算6个数的均值
%macro exp(r);%do i=1 %to &r;PROC EXPORT DATA= a&i OUTFILE= "E:\学习资料\paper simulation\&i..txt"  DBMS=TAB REPLACE;PUTNAMES=no;run;
data group&i;infile "E:\学习资料\paper simulation\&i..txt";input y1-y6;avg=mean(of y1-y6);stand=std(of y1-y6);run;%end;
%mend exp;
%exp(60);
求数据集分组后均值的均值
%macro std(r);
%do i=1 %to &r;proc means data=group&i mean std;var avg;output out=directlystd&i mean=means std=stdxbar;run;%end;
%mend std;
%std(60);
60个数据集均值的评均
data directlystd;set directlystd1-directlystd60;run;
proc means data=directlystd;var means stdxbar;run;
输出结果如下:

                                          MEANS PROCEDURE

           变量        N            均值          标准差          最小值          最大值
           -----------------------------------------------------------------------------
           means      60       0.2144988       1.0364777      -2.1021175       3.5494270
           stdxbar    60       6.8842706       0.4956768       6.1270661       8.2991823
           -----------------------------------------------------------------------------
而means的理论值应该是0 啊,差的有点大!求解?是不是程序不对那?再次谢谢!

使用道具

fyfzhdsfdx 发表于 2013-1-1 15:45:23 |显示全部楼层 |坛友微信交流群
ziyenano 发表于 2012-12-31 16:13
计算机生成的随机数,都是伪随机数,是根据数字生成的随机数。
通俗的讲就是每个seed对应一列随机数,不同 ...
我觉得这段代码有问题,见下
%macro simu(r);
%do t=1 %to &r;data a&t;y=0;do i=1 to 10000;x=normal(&t);y=0.99*y+x;output;drop i x;end;run;%end;
%mend simu;
%simu(60);
如果我有同样的代码产生
%macro simu(r);
%do t=1 %to &r;data b&t;y=0;do i=1 to 10000;x=normal(&t);y=0.99*y+x;output;drop i x;end;run;%end;
%mend simu;
%simu(60);
数据集a1-a60和b1-b60竟然相同,这和随机性不符。如果改为x=normal(0)模拟了几次感觉还可以。所以感觉问题应该出在&t宏这块,但具体原因不知道,求解,十分感谢!谢谢!
还有,rannor和normal均可产生标准正态分布,他俩什么区别,上面的代码用rannor(0)模拟觉得是对的。但用normal(0)模拟的结果还是偏大,不理想,求解,谢谢。

使用道具

playmore 发表于 2013-1-2 19:54:41 |显示全部楼层 |坛友微信交流群
fyfzhdsfdx 发表于 2013-1-1 15:45
我觉得这段代码有问题,见下
%macro simu(r);
%do t=1 %to &r;data a&t;y=0;do i=1 to 10000;x=normal ...
你这里种子取&t
&t就是循环从1到60
在两个宏里都一样
种子一样随机数当然就一样了

还有rannor和normal功能一样,只不过rannor命名更规范,还有call rannor可以用
而normal估计是历史遗留下来的函数
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

使用道具

fyfzhdsfdx 发表于 2013-1-4 23:15:11 |显示全部楼层 |坛友微信交流群
playmore 发表于 2013-1-2 19:54
你这里种子取&t
&t就是循环从1到60
在两个宏里都一样
十分感谢

使用道具

250603730 发表于 2013-1-6 20:54:00 |显示全部楼层 |坛友微信交流群
楼主是模拟什么数据?纵向数据吗?问题解决了吗。我也一直困惑怎么模拟

使用道具

fyfzhdsfdx 发表于 2013-1-15 21:16:00 |显示全部楼层 |坛友微信交流群
250603730 发表于 2013-1-6 20:54
楼主是模拟什么数据?纵向数据吗?问题解决了吗。我也一直困惑怎么模拟
不好意思,最近没上论坛。我觉得seed<=0时,重复data步可以产生不同的随机数,而seed>0时,重复data步可以产生相同的随机数,你试一下。你想摸你什么数据?可以讨论一下的。

使用道具

lqwoailuo 发表于 2013-11-15 14:53:56 |显示全部楼层 |坛友微信交流群

使用道具

NOVEMAND 发表于 2017-3-28 21:16:20 |显示全部楼层 |坛友微信交流群
seed到底有什么用啊?感觉书上也没有讲。求大神解释一下

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-3-29 06:10