这是一个编程问题,但我会先给你一些统计背景知识。这个问题是指混合效应位置尺度模型(即异质方差)的数据模拟的一部分。我正在尝试使用 IML 中的 RANDNORMAL 函数来模拟两个 MVN 方差分量。因为两个方差分量都是异质的,所以 RANDNORMAL 使用的方差会因人而异。因此,我需要 IML 来选择特定的行(例如,第 1 行 = 人 1)并在移动到下一行之前使用 RANDNORMAL 函数,依此类推。
我下面的示例代码适用于 2 人。我使用 DO 循环遍历每个人的特定方差分量(VC1 和 VC2)。我收到错误消息:“模块 RANDNORMAL 在退出之前的调用之前再次调用。” 我假设我需要在 DO 循环中使用某种 BREAK 或 EXIT 函数,但我没有尝试过工作。
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。