SASで、それ自体に依存する列を計算しようとしています。たとえば、次の初期値のリストがあります
ID Var_X Var_Y Var_Z
1 2 3 .
2 . 2 .
3 . . .
4 . . .
5 . . .
6 . . .
7 . . .
空白を埋める必要があります。式は次のとおりです。
Var_Z = 0.1 + 4*Var_x + 5*Var_Y
Var_X = lag1(Var_Z)
Var_Y = lag2(Var_Z)
ご覧のとおり、Var_X、Var_Y、Var_Zの値は相互に依存しています。したがって、計算は特定の順序に従う必要があります。
First we compute when ID = 1, Var_Z = 0.1 + 4*2 + 5*3 = 23.1
Next, when ID = 2, Var_X = lag1(Var_Z) = 23.1
ここにはすでに初期値があるため、Var_YはID=2で計算する必要はありません。だから、私たちは持っています
ID Var_X Var_Y Var_Z
1 2 3 23.1
2 23.1 2 102.5 (= 0.1 + 4*23.1 +5*2)
3 . . .
4 . . .
5 . . .
6 . . .
7 . . .
すべての値が計算されるまで、この手順を繰り返します。
SASがこれを処理できる方法はありますか?DOループを試しましたが、正しくコーディングできなかったと思います。ID=2の後で停止します。
私はSASを初めて使用するので、SASがこれを簡単に処理できる方法があるかどうかはわかりません。あなたの提案を待ちます。