SAS:从指数生成随机值

时间:2016-01-19 14:30:37

标签: random sas exponential

我需要在现有数据集中添加一个新变量,即模拟指数。我需要设置这个指数的lambda,以便小于1的值的数量在9%到14%之间。

汇总:

X~Expo(lambda)

小于1的值将介于9%和14%之间。

2 个答案:

答案 0 :(得分:1)

rand()函数与'exponential'参数一起使用;但是,如果你想要9%到14%的值,那么< 1,你需要使用指数分布的CDF公式求解Lambda。就个人而言,为了节省时间,我会模拟Lambda的一些值并选择符合标准的值。

data findLambda;
    do lambda = 0.05 to 0.5 by 0.05;        
        do i = 1 to 5000;
            rand = rand('exponential')/lambda;
            LessThan_1_Flag = (rand < 1); 
            output;
        end;
   end;
run;

proc freq data=findLambda;
    by Lambda;
    tables LessThan_1_Flag / nocum norow nocol nofreq;
run;

你会发现0.04到0.09之间的lambda值会产生你想要的东西。

答案 1 :(得分:0)

RANEXP(seed)生成随机标准指数。除以lambda。

x=ranexp(seed)/lambda;