全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
15018 9
2011-03-07
悬赏 5 个论坛币 已解决
如题?谢谢各位了,本人菜鸟。如果已知对数正态分布LN(m,n^2)(m和n分别为参数),请问如何产生符合对数正态分布的随机数?
1.要是先产生相应正态分布随机数的话,该正态分布的参数该如何设置啊?代码怎么写啊?
2.要是直接从 未命名1.JPG 产生的话,代码怎么写啊?

最佳答案

zhangweibeckham 查看完整内容

你的问题本身就已经给出答案了啊,你就先生成一个均值为MU,方差为SIGMA2的正态分布, DATA NORMAL; SEED=12345; DO I=1 TO 10; XNORMAL=MU+SQRT(SIGMA2)*RANNOR(SEED); OUTPUT; END; X=EXP(XNORMAL);/*X LOGNORMALLY DISTRIBUTED*/ RUN; 这里的X就是符合你公式的分布密度函数了。 其中MU就是你公式中的符号U,SQRT(SIGMA2)就是那个倒Q差不多的符号。 其实,如果你根据密度函数的转换公式计算一下,你马上就明白了 ...
二维码

扫码加我 拉你入群

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

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

全部回复
2011-3-7 23:27:18
你的问题本身就已经给出答案了啊,你就先生成一个均值为MU,方差为SIGMA2的正态分布,
DATA NORMAL;
SEED=12345;
DO I=1 TO 10;
  XNORMAL=MU+SQRT(SIGMA2)*RANNOR(SEED);
  OUTPUT;
END;
X=EXP(XNORMAL);/*X LOGNORMALLY DISTRIBUTED*/
RUN;
这里的X就是符合你公式的分布密度函数了。
其中MU就是你公式中的符号U,SQRT(SIGMA2)就是那个倒Q差不多的符号。
其实,如果你根据密度函数的转换公式计算一下,你马上就明白了。
二维码

扫码加我 拉你入群

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

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

2011-3-7 23:36:40
用 rannor() 或 normal() 函数可以产生正态分布随机数
二维码

扫码加我 拉你入群

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

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

2011-3-8 08:49:47
先产生normal 分布的数,然后做 exponential
二维码

扫码加我 拉你入群

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

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

2011-3-8 09:20:56
SAS帮助:
A normal variate X with mean MU and variance S2 can be generated with this code:

x=MU+sqrt(S2)*rannor(seed);

A lognormal variate X with mean exp(MU + S2/2) and variance exp(2*MU + 2*S2) -exp(2*MU + S2) can be generated with this code:

x=exp(MU+sqrt(S2)*rannor(seed));
二维码

扫码加我 拉你入群

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

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

2011-3-8 13:08:19
产生对数正态分布随机数的方法有几种:
第一、利用DATA 步,
data lognormal;
seed=12345;/*define the seed*/
call streaminit(seed);
do i=1 to 10;
x=rand('lognormal');/*the lognormal random numbers' generating function*/
output;
end;
keep x;
run;
proc print data=lognormal;
run;
第二:在PROC IML模块中,也可以生成
proc iml;
seed=12345;
call streaminit(seed);
x=rand('lognormal',j(10,1));
print x;
quit;
第三、还是在PROC IML模块中,不过函数变了
proc iml;
seed=12345;
x=j(1,10,.);
call randseed(seed);
call rangen(x,'lognormal');
print x;
quit;
以上方法都是生成标准对数正态分布的函数,即均值为EXP(1/2),方差为EXP(2)-EXP(1)。
实际上,如果你想生成一个均值为mean ,方差为variance的对数正态分布,那么你就要先去计算对数正态的两个参数的值(1,MU  2,SIGMA2),因为对数正态分布的均值表达式为:
mean=EXP(MU+0.5*SIGMA2),  variance=EXP(2*MU+SIGMA2)*[EXP(SIGMA2)-1],
所以你要先根据你自己要的均值和方差去算出MU和SIGMA2,再来生成随机数。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群