Надеюсь, простой ответ. Я занимаюсь симуляционным исследованием, где мне нужно пробовать случайное число индивидуумов N из равномерного распределения U (25,200) при каждой из тысячи повторений. Код для одной репликации показан ниже:Холдинг сэмплированный макрос переменная константа
%LET U = RAND("UNIFORM");
%LET N = ROUND(25 + (200 - 25)*&U.);
Я создал оба этих макропеременные вне шага DATA, потому что мне нужно вызвать переменную N раза на последующих стадиях DATA и DO петли как в SAS и IML.
Проблема заключается в том, что каждый раз, когда я вызываю N в репликации, он повторно выбирает U, который обязательно изменяет N. Таким образом, N не поддерживается постоянной в репликации. Эта проблема показана в приведенном ниже коде, где я сначала создаю N как переменную (постоянную для отдельных лиц) и значения прогностического образца для X для каждого человека, используя цикл DO. Обратите внимание, что значение в N не совпадает с общим количеством лиц, что также является проблемой.
DATA ID;
N = &N.;
DO PersonID = 1 TO &N.;
X = RAND("NORMAL",0,1); OUTPUT;
END;
RUN;
Я предполагаю, что мне нужно сделать, это каким-то образом держать постоянную U на протяжении всей полноте одной репликации, а затем позволить ему быть повторно пробы для репликации 2, и так далее. Удерживая константу U, N обязательно будет оставаться постоянной.
Есть ли способ сделать это с помощью макропеременных переменных?
Спасибо, Джо! И, да, мой процесс моделирования неуклюж. Для меня это разница между 5 и 10 минутами. Дает мне некоторое время, чтобы выбраться со стула и немного погулять. :) –