これはプログラミングに関する質問ですが、最初に統計の背景を少し説明します。この質問は、混合効果ロケーション スケール モデル (つまり、不均一な分散) のデータ シミュレーションの一部に言及しています。IML の RANDNORMAL 関数を使用して、2 つの 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 を使用しています。