2

JAGS には「単純な」問題があり、気が狂いそうになります。本質的に、動作する次の例を検討してください。

x2[i] ~ dnorm(mu[i,1], tau1);
u[i] ~ dnorm(mu[i,2], tau2);

ここで、x2 は観測可能な変数 (つまり、データ) であり、u は潜在変数です。この例では、両方が 2 つの異なる正規分布から独立して描かれています。しかし、私はそれらが (おそらく) 依存していること、つまり、1 つの多変量正規分布から引き出されることを望んでいます。だから私はやりたい:

c(x2[i], u[i]) ~ dmnorm(mu[i,1:2], Omega[1:2,1:2]);

残念ながら、この構文は正しくないため、これは機能しません。ただし、多くの異なる構文を試してみましたが、どちらも機能しません。例えば、

y[i,1] <- x2[i];
y[i,2] <- u[i];
y[i,1:2] ~ dmnorm(mu[i,1:2], Omega[1:2,1:2]);

明らかなエラーNode y[1,1:2] overloades 以前に定義されたノード につながります。それで、なにかお手伝いできますか?助けてください、私は怒っています...

更新:少なくとも次のことができることがわかりました:(Rで:)

p <- 1/(1+exp(-x2));
t <- rep(10000, length(x2));
s <- rbinom(length(x2), t, p2);

(ジャグで:)

nul[i,1] <- 0;
nul[i,2] <- 0;
e[i,1:2] ~ dmnorm(nul[i,1:2], Omega[1:2,1:2]);
u[i] <- mu[i,2] + e[i,2];
x2g[i] <- mu[i,1] + e[i,1];
pg[i] <- 1/(1+exp(-x2g[i]));
s[i] ~ dbin(pg[i], t[i]);

これは (少し) 機能しますが、観測可能な変数 (x2) が (s を介して) 間接的にのみ観測可能であるかのように扱われるため、もちろん効率が低下します。

4

2 に答える 2

0

dataブロックは次のように使用できます。

data{
    for(i in 1:length(x2)) {
        y[i,1] <- x2[i]
        y[i,2] <- u[i]
    }
}
model{
    for(i in 1:length(x2)) {
        y[i,1:2] ~ dmnorm(mu[i,], Tau)
    }
    # ... definition of mu, Tau, and their prior distribution
}

ただし、多変量ノードは部分的に観測できないため、x2またはに欠損値がないことを確認してください。u

よろしく!:)

于 2016-02-12T11:57:44.777 に答える
0

y を 2 回定義しています。

y[i,1] <- x2[i];
y[i,2] <- u[i];

そして一度入って

y[i,1:2] ~ dmnorm(mu[i,1:2], Omega[1:2,1:2]);

あなたは逃げることができるかもしれません:

x2[i] <- y[i,1];

または、単純に回帰を書き出すことができるかもしれません (結局のところ、それは二変量であるため、それほど難しくありません)。

また、JAGS メーリング リスト (Martyn Plummer が定期的に監視しています) でより迅速な応答が得られる場合もあります。

于 2015-09-16T19:22:54.173 に答える