楼主: lipeng0809
2319 14

实在是想不出来,为啥每个数据集数值都一样啊?求大神指点迷津 [推广有奖]

  • 1关注
  • 0粉丝

高中生

60%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1033 点
帖子
40
精华
0
在线时间
11 小时
注册时间
2016-3-11
最后登录
2016-6-19

楼主
lipeng0809 发表于 2016-3-24 09:49:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
/*group=3*/
%macro sim ;
%let j=1 ;
%do j=1 %to 100;**随机抽取样本100次***;
%let i=0 ;
%do i= 0 %to 2 ;
DATA SIMU&i.&j ;
d=0.1+&i*0.4;  ***因变量***;
DO n = 1 to 67  ;/*67sample size,样本含量67例*/
R=1.002+9.023/(1+exp(10.47*(0.5-d)));**效应值***;
v&i=R+3*rannor(1); /*标准差不变,蒙特卡罗模拟效应值*/
output ;
end;
run ;
%end ;
proc sql ; create table new&j as
select mean(v0) as m0,mean(v1)as m1 ,mean(v2) as m2
from simu&i.&j;
output;
quit;
proc append data=new&j base=a3 ; run;
我想要d=0.1、0.5、0.9时的效应值被模拟67例的均数,放入新的数据集&newj,共抽取100次样本,所以应该每种剂量100个均值,可我为什么每次生成的simu&i&j数据集都是相同的啊?求大神指点?
二维码

扫码加我 拉你入群

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

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

关键词:指点迷津 数据集 proc sql output Select

沙发
lipeng0809 发表于 2016-3-24 22:15:14
求解,跪求,高人啊,快快光顾指导吧

藤椅
lipeng0809 发表于 2016-3-25 07:53:47 来自手机
差距太大吗?为啥没人回贴

板凳
lipeng0809 发表于 2016-3-25 20:47:35 来自手机
能不能告诉我怎样才有人回帖?急啊,毕业论文急需啊!

报纸
高贵林 发表于 2016-3-26 09:06:56
rannor(1) 用的是同一个 random seed 1, 所以每个循环跑出来的结果都一样。只需要把 1 改成 -1, 让 SAS 根据系统时钟来选 random seed 就可以了。

地板
lipeng0809 发表于 2016-3-26 23:30:27 来自手机
那d=0.5和0.1的时候数据都一样啊,这是怎么回事

7
lipeng0809 发表于 2016-3-26 23:32:40 来自手机
高贵林 发表于 2016-3-26 09:06
rannor(1) 用的是同一个 random seed 1, 所以每个循环跑出来的结果都一样。只需要把 1 改成 -1, 让 SAS 根 ...
那d=0.5和d=0.1时数据都一样啊,这是怎么回事?先跪谢一下,上一次你对我的回答,这次再拜

8
casper2 发表于 2016-3-27 04:46:54
没时间仔细看,不过是不是每次循环应该用不同的seed?

9
高贵林 发表于 2016-3-27 09:33:20
lipeng0809 发表于 2016-3-26 23:32
那d=0.5和d=0.1时数据都一样啊,这是怎么回事?先跪谢一下,上一次你对我的回答,这次再拜
你的程序有点问题,帮你改了一下:

%macro sim ;
%do j=1 %to 100;
      DATA SIMU&j ;
          do n = 1 to 67  ;
              %do i= 0 %to 2 ;
                  d=0.1+&i*0.4;
                  R=1.002+9.023/(1+exp(10.47*(0.5-d)));
                  v&i=R+3*rannor(-1);   
                     /* 如果想让每次运行结果完全一样,可以把 rannor(-1) 改成 rannor(&j) */
                  %end;
                  output;
          end;
      run;

      proc sql ; create table new&j as
      select mean(v0) as m0,mean(v1)as m1 ,mean(v2) as m2
      from SIMU&j;
      quit;

      proc append data=new&j base=a3;
      run;
%end;
%mend;

%sim

10
lipeng0809 发表于 2016-3-27 19:53:30
高贵林 发表于 2016-3-27 09:33
你的程序有点问题,帮你改了一下:

%macro sim ;
高手,为啥要把n=1 to 67 写道%do i=0 % to 2的上边,要是反过来会怎么样?生成的simu&j数据库,v0应该对应d=0.1,v1对应d=0.5,v2对应d=0.9,时的随机R值。为什么只有d=0.9?是只保存了最后的d的缘故吗?再次感谢您对我的帮助。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 08:43