генерация случайных чисел и два цикла DO .... END в sas - PullRequest
0 голосов
/ 06 ноября 2019

Мне нужно использовать функции генерации случайных чисел SAS RAND() и DO....END loop, чтобы создать 100 obs в переменной с именем X, а затем я хочу использовать еще один цикл DO из 500 раундов, чтобы сгенерировать в общей сложности 500 выборок, каждая с 100обсервованныйвыборка в основном выборка из стандартного нормального распределения.

Я попробовал следующий код, но он не дает мне то, что мне нужно:

data A;
call streaminit(123);   /* set random number seed */
do i = 1 to 100;
X = rand("Normal");     /* random number generator */
 output;
end;

do r = 1 to 500 ;
if i then X = rand("Normal");
output;
end;
run;

Любой ввод будет с благодарностью.

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Вот пошаговое решение данных

data want;                                                                                                                                                                                                                                         
  do I=1 to 500;                                                                                                                     
    do _iorc_=1 to 100;                                                                                                                 
      X=rand ("normal");                                                                                                             
      output;                                                                                                                          
    end;                                                                                                                               
  end;                                                                                                                                 
run;
1 голос
/ 06 ноября 2019

Идеальное время для использования PROC IML:

proc iml;
call streaminit(123); /* set seed */
x = j(500, 100); /* allocate 500 by 100 matrix */
call randgen(x, "Normal"); /* fill matrix with N(0,1) random draws */

create mydata from x; /* move matrix to a dataset in the work directory */
append from x;
close mydata;
quit;
...