楼主: nkxhm
3564 6

[原创博文] 请教 SAS simulation [推广有奖]

  • 0关注
  • 0粉丝

大专生

6%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
522 点
帖子
22
精华
0
在线时间
43 小时
注册时间
2009-12-7
最后登录
2016-6-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教版上SAS达人, 我原来有五个obs, 两个var,
想用这五组数 生成新的一个有五个数的var, code 如下,但是为啥生成25个呢? 我理解是可能一个e用了五次,但是出来每个e都是不同的。 想不明白啊想不明白。 多谢解答了!
data insurance;
input x1 x2;
datalines;
1.2 2.2
1.3 2.3
1.4 2.4
1.5 2.5
1.6 2.6
;
run;

data sim;
set insurance;
call streaminit(84732);
do sim=1 to 5;
e=rand('normal',0,1);
y_sim=2 -3*x1+ 4*x2+e;
output;
end;
run;

proc print data=sim;
run;
二维码

扫码加我 拉你入群

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

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

关键词:Simulation ulation ATION ATI IMU

沙发
yugao1986 发表于 2011-9-11 13:39:00 |只看作者 |坛友微信交流群
"data sim;
set insurance;
call streaminit(84732);
do sim=1 to 5;"
数据insurance有5个观测值,每个观测值对应生成一组随机数,
对比下
data sim;
call streaminit(84732);
do sim=1 to 5;
set insurance;
...
先定义生成随机数,在读入数据
三人行必有我师

使用道具

藤椅
nkxhm 发表于 2011-9-12 01:14:17 |只看作者 |坛友微信交流群
yugao1986 发表于 2011-9-11 13:39
"data sim;
set insurance;
call streaminit(84732);
非常感谢回答。 我试了一下,得到一些缺失值。不知道为什么, 还是得到25个obs,而且前五个的x1 x2 和sim是缺失值。

使用道具

板凳
nkxhm 发表于 2011-9-12 01:27:15 |只看作者 |坛友微信交流群
yugao1986 发表于 2011-9-11 13:39
"data sim;
set insurance;
call streaminit(84732);
我问了另一个人。他告诉我SAS看到我有五个obs,就会自动用e填补剩下的四个。
我的理解是, 在SAS编译的时候,有一个expression e=rand('normal', 0, 1), 然后有一个equation
y_sim=2 -3*x1+ 4*x2+e; 它就用 e=rand('normal', 0, 1) 代入到五个obs中,但是这个时候并没有生成随机数,直到执行过程run statement被执行了。 因为这个过程在do loop里面,所以被执行了5次,所以总共产生25个完全不同的e。 不知道我的理解对不对。

使用道具

报纸
jingju11 发表于 2011-9-12 02:17:18 |只看作者 |坛友微信交流群
nkxhm 发表于 2011-9-12 01:27
我问了另一个人。他告诉我SAS看到我有五个obs,就会自动用e填补剩下的四个。
我的理解是, 在SAS编译的时 ...
说几句话:
在这里,用random number 生成方程来说明sas执行的逻辑或许有些不妥当,因为这一类方程具备其特殊性。比如说,call streaminit这个routine其实只执行一次(或者说,执行多次跟执行一次是一样的),换句话说,在同一个data步里,你无法更换初始的seed。值得说明的是,seed更换也是没有必要的。因为更换seed往往适得其反,有可能无法保障生成数字的随机性。这种的误解类似于使用seed=0,好像随机的seed使得random number更加‘random’。
京剧

使用道具

地板
nkxhm 发表于 2011-9-16 05:56:31 |只看作者 |坛友微信交流群
jingju11 发表于 2011-9-12 02:17
说几句话:
在这里,用random number 生成方程来说明sas执行的逻辑或许有些不妥当,因为这一类方程具备其 ...
非常感谢您的解答!其实不是很理解这里call streaminit()的作用, 如果用rand function 生成随机数的时候, 如果用同样的seed值 会产生类似的数吗? seed的作用是什么? 非常感谢!

使用道具

7
jingju11 发表于 2011-9-16 21:12:02 |只看作者 |坛友微信交流群
seed的作用就是让不同时间的运行产生可重复的结果。京剧

使用道具

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

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

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

GMT+8, 2024-5-1 05:53