私たちは、R 関数が複数の応答、複数の説明変数、およびおそらく応答間の共有パラメーターを持つモデルを処理する方法を考え出そうとしています。例えば:
Y1 ~ X1 + X2 + X3
Y2 ~ X3 + X4
2 つの応答と 4 つの説明変数を指定します。X3 は両方に表示され、関連付けられたパラメーター値が同じか異なるかをユーザーが制御できるようにします。すなわち:
Y1 = b1 X1 + b2 X2 + b3 X3
Y2 = b3 X3 + b4 X4
これは 4 つの 'b' パラメーターを持つモデル、または
Y1 = b1 X1 + b2 X2 + b3 X3
Y2 = b4 X3 + b5 X4
5 つのパラメータを持つモデル。
2 つの可能性:
- すべての説明変数を 1 つの式で指定し、説明への応答をマッピングするマトリックスを提供します。その場合
Foo( Y1+Y2 ~ X1 + X2 + X3 + X4 + X5, map=cbind(c(1,1,1,0),c(0,0,1,1)))
最初のケースに対応し、
Foo( Y1+Y2 ~ X1 + X2 + X3 + X4 + X5, map=cbind(c(1,1,1,0,0),c(0,0,0,1,1)))
二番目だろう。明らかに、LHS の解析が必要になるか、そうなる可能性がありますcbind(Y1,Y2)
。この表記の利点は、各パラメーターに必要な他の情報 (開始値、事前確率など) もあり、順序は式の順序によって与えられることです。
- 複数の数式と、属性を追加するだけのグループ化関数を使用して、共有パラメーターを識別できるようにします。2 つの例は次のようになります。
Foo( Y1 ~ X1+X2+G(X3,1), Y2 ~ G(X3,1)+X4)
ここで、X3 パラメータは数式間で共有されます。
Foo( Y1 ~ X1+X2+X3, Y2 ~ X3+X4)
独立したパラメータがあります。の 2 番目のパラメータG()
は、モデル パラメータを柔軟に共有するためのグループ化 ID です。
G
関数の詳細な説明は、次のとおりです。
Foo( Y1 + X1+X2+G(X3,1), Y2~G(X3,1)+G(X4,2), Y3~G(X3,3)+G(X4,2), Y4~G(X3,3))
次のようなモデルになります。
Y1 = b1 X1 + b2 X2 + b3 X3
Y2 = b3 X3 + b4 X4
Y3 = b5 X3 + b4 X4
Y4 = b5 X3
ここで、X3 には 2 つの独立したパラメーター (G(X3,1) と G(X3,3)) があります。異なる説明変数を参照するグループをどのように処理するかは未解決の問題です-モデルが持っていたと仮定しますY4~G(X3,2)
-そこにあるので、異なる説明変数間の共有パラメーターを暗示しているようG(X4,2)
です。
この表記法はユーザーにとって理解しやすいように見えますが、開始値も指定する必要がある場合、開始値のベクトルとそれらが対応するパラメーターとの間のマッピングはもはや明白ではありません。内部的には、G()
表記法からマッピング行列を計算する必要があると思います。
これを行うにはもっと良い方法があるかもしれませんので、私の質問は... 誰か知っていますか?