楼主: 许愿142001
3857 5

sas宏中生成不同分布类型的随机数,rand函数中字符串设置 或 其他方法 [推广有奖]

  • 5关注
  • 0粉丝

本科生

37%

还不是VIP/贵宾

-

威望
0
论坛币
433 个
通用积分
0.1200
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4060 点
帖子
59
精华
0
在线时间
42 小时
注册时间
2016-8-31
最后登录
2023-6-12

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. %macro normal(m,n ,mean,sigma,name,type) ;
  2. data &name.;
  3.         array x x1-x&m.;
  4.         %do i =1 %to &n.;
  5.                 do over x;
  6.                         x=Rand('&type',&mean.,sqrt(&sigma.));
  7.                 end;  
  8.                 output;
  9.         %end;
  10.   run;
  11. %mend;

  12. %normal(2,2,2,2,fff,normal);
复制代码
运行提醒 RAND 函数的第一个参数值必须是以下字符串: BERNOULLI、BETA………………,请问这怎么修改呢?


二维码

扫码加我 拉你入群

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

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

关键词:rand SAS宏 字符串 随机数 RAN 字符串

回帖推荐

Strive、 发表于6楼  查看完整内容

%macro ran(type = ,nvar = ,n =,name = ,c1 = ,c2 = ); data &name.; array x{&nvar.} x1 - x&nvar.; %if &c2. = . %then %do; do j = 1 to &n.; do i = 1 to &nvar.; x{i} = Rand("&type",&c1.); end; output; end; %end; %else %do; do j = 1 to &n.; do i = 1 to &nvar.; x{i} = Rand("&type",&c1.,&c2.); end; output; end; %end; run; %men ...
沙发
许愿142001 发表于 2016-9-27 13:18:54 |只看作者 |坛友微信交流群
具体问题在这个帖子中一个回复的第五个问题
https://bbs.pinggu.org/forum.php?mod=viewthread&tid=4825926&pid=39046219&page=1&extra=#pid39046219

使用道具

藤椅
孤单的我们 发表于 2016-9-27 14:27:19 |只看作者 |坛友微信交流群
  1. %macro normal(m,n ,mean,sigma,name,type) ;
  2. data &name.;
  3.         array x x1-x&m.;
  4.         %do i =1 %to &n.;
  5.                 do over x;
  6.                         x=Rand("&type",&mean.,sqrt(&sigma.));
  7.                 end;  
  8.                 output;
  9.         %end;
  10.   run;
  11. %mend;

  12. %normal(2,2,2,2,fff,normal);
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
许愿142001 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

板凳
许愿142001 发表于 2016-9-27 18:46:58 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-9-27 14:27
你好,请问复制代码运行的情况怎么是这样?

11.PNG (41.7 KB)

11.PNG

使用道具

报纸
许愿142001 发表于 2016-9-27 20:19:20 |只看作者 |坛友微信交流群
解决了最后我的题目和代码是这样,谢谢啦!

4、请将程序改写成宏,要求如下
  产生数据集,包含m个变量
  每个变量有n个随机数
  所有变量都服从以下规律
  第i个变量的第j个随机数服从均数为(i除以3的余数),方差为j/2的正态分布
  并可以定义数据集的名称。

5、在以上基础上,新增功能,指定不同的分布类型

  1. %macro F(m,n ,name,type) ;
  2. data &name.;
  3.         array x{&m} x1-x&m.;
  4.         %do i =1 %to &n.;
  5.                 do j=1 to &m. ;
  6.                         %let mean=mod(j,3);
  7.                         %let sigma_sd = sqrt(0.5*&i.);
  8.                          x{j}=Rand("&type", &mean.,&sigma_sd.);
  9.                 end;  
  10.                 output;
  11.         %end;
  12.   run;
  13. %mend;

  14. %F(100,100,eee,NORMAL);
复制代码

使用道具

地板
Strive、 发表于 2016-9-27 21:36:33 |只看作者 |坛友微信交流群
%macro ran(type = ,nvar = ,n =,name = ,c1 = ,c2 = );
        data &name.;
                array x{&nvar.} x1 - x&nvar.;
                %if &c2. = . %then %do;
                        do j = 1 to &n.;
                                do i = 1 to &nvar.;
                                        x{i} = Rand("&type",&c1.);
                                end;
                                output;
                        end;
                %end;
                %else %do;
                        do j = 1 to &n.;
                                do i = 1 to &nvar.;
                                        x{i} = Rand("&type",&c1.,&c2.);
                                end;
                                output;
                        end;
                %end;
        run;
%mend;
%ran(type = poisson ,nvar = 10,n = 19,name = temp2,c1 = 5,c2 = .);
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
许愿142001 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

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

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

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

GMT+8, 2024-4-25 17:39