2016-01-19 7 views
0

Мне нужно добавить новую переменную в существующий набор данных, который является симуляцией экспоненты. Мне нужно установить лямбда этой экспоненты, чтобы сумма значений меньше единицы составляла от 9% до 14%.SAS: Генерация случайных значений из экспоненты

Подведение:

Х ~ Expo (лямбда)

Там будет между 9% и 14% от значений меньше 1.

ответ

1

Используйте rand() функцию с аргументом 'exponential'; однако, если вы хотите, чтобы между 9% и 14% значений было < 1, вам нужно будет решить для Лямбды, используя формулу для CDF экспоненциального распределения. Лично, чтобы сэкономить время, я смоделировал некоторые значения 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; 

Вы увидите, что lambda значение от 0,04 до 0,09 сгенерирует то, что вы ищете.

0

RANEXP(seed) генерирует случайные стандартные экспоненциальным. Разделите это лямбдой.

x=ranexp(seed)/lambda;