Это вопрос программирования, но сначала я расскажу вам немного о статистике. Этот вопрос относится к части моделирования данных для масштабной модели местоположения со смешанными эффектами (т. е. гетерогенных отклонений). Я пытаюсь смоделировать два компонента отклонения MVN, используя функцию RANDNORMAL в IML. Поскольку оба компонента дисперсии неоднородны, дисперсии, используемые методом RANDNORMAL, будут различаться у разных людей. Таким образом, мне нужно, чтобы IML выбрал конкретную строку (например, строка 1 = человек 1) и использовал функцию RANDNORMAL перед переходом к следующей строке и так далее.
Мой пример кода ниже предназначен для 2 человек. Я использую DO для циклического просмотра конкретных компонентов дисперсии каждого человека (VC1 и VC2). Я получаю сообщение об ошибке: «Модуль RANDNORMAL вызывается снова перед выходом из предыдущего вызова». Я предполагаю, что мне нужна какая-то функция BREAK или EXIT в цикле DO, но ни одна из них, которые я пробовал, не работает.
PROC IML;
ColNames = {"ID" "VC1" "VC2"};
A = {1 2 3,
2 8 9};
PRINT A[COLNAME=ColNames];
/*Set men of each variance component to 0*/
MeanVector = {0, 0};
/*Loop through each person's data using THEIR OWN variances*/
DO i = 1 TO 2;
VC1 = A[i,2];
VC2 = A[i,3];
CovMatrix = {VC1 0,
0 VC2};
CALL RANDSEED(1);
U = RANDNORMAL(2, MeanVector, CovMatrix);
END;
QUIT;
Любая помощь приветствуется. О, и я использую SAS 9.4.