8

私たちは、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()表記法からマッピング行列を計算する必要があると思います。

これを行うにはもっと良い方法があるかもしれませんので、私の質問は... 誰か知っていますか?

4

2 に答える 2

1

興味深い質問です (すべてのパッケージ作成者が、基本的な Wilkinson-Rogers 式の表記法の拡張をどのように作成するかについて、事前にもっと心配してくれることを願っています ...)

のようなものはどうですか

formula=list(Y1~X1+X2+X3,Y2~X3+X4,Y3~X3+X4,Y4~X3),
   shared=list(Y1+Y2~X3,Y2+Y3~X4,Y3+Y4~X3)

または上記の2番目の例のようなものですか?

このformulaコンポーネントは方程式のリストを提供します。

このsharedコンポーネントは、指定された予測変数に対してどの応答変数が同じパラメーターを共有しているかを単純にリストします。明らかに、論理テーブルまたはバイナリ テーブルにマップできますが、(少なくとも私にとっては、これは確かに見る人の目に映っています)、より単純です。map(この場合のように)変数( などX3)が2つの異なる関係のセットで共有されている場合、上記の解決策は厄介だと思います。

「数式のリストにパラメーターが表示される順序で値を開始する」などの簡単なルールを推測します-この場合

X1, X2, X3(1), X4, X3(2)

formulaそれは問題ありませんが、指定された/指定された係数ベクトルの名前 (つまり次数) をユーザーに伝えるヘルパー関数を提供すると便利な場合がありますshared...

ちょっとした個人的な経験から言えば、式自体に空想を埋め込むことは苦痛につながると思います...たとえば、ランダム効果を個別に指定した元の構文は、ランダム効果を使用した新しいスタイルの構文nlmeよりも扱いやすかったですlme4同じ式に混合された固定効果...

代替案(私もほとんど好きではありません)は次のようになります

 formula=list(Y1~X1+X2+X3,Y2~X3+X4,Y3~X3[2]+X4,Y4~X3[2])

ここで、新しいパラメーターは何らかのタグで示されます ([1]暗黙的です)。

@Andrie によるチャット ルームからの提案にも注意してください。構造方程式モデリング用に設計されたインターフェイス ( semlavaanパッケージ) が参考になるかもしれません。

于 2012-09-25T15:20:14.357 に答える
0

あなたが提案した2つの方法のうち、いくつかの式のアイデアを持つ2番目の方法がより自然に見えますが、G表記法は私には意味がありません.

最初のものの方がはるかに理解しやすいですが、このmap議論に 2 つの微調整を提案します。

  1. 数値ではなく論理値を取る必要があります。

  2. 各応答変数にすべての独立変数を含めるデフォルトを検討してください。

于 2012-09-25T14:16:34.040 に答える