JAGS:具有两个,不可观察和可观察变量的多元正态?

时间:2014-12-28 21:30:28

标签: jags notation

我对JAGS有一个“简单”的问题让我发疯。实质上,请考虑以下示例

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

这里, x2是一个可观察变量(即数据),而u是一个潜在变量。在该示例中,两者都独立于两个不同的正态分布绘制。 但是,我希望它们(可能)依赖,即从一个多元正态分布中得出。所以我想这样做:

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]);

导致错误节点y [1,1:2]重叠先前定义的节点,这是显而易见的。 那我该怎么办?拜托,帮助我,我生气了......

更新:我发现我至少可以做到以下几点: (在R :)中

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

(在JAGS:中)

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)。

2 个答案:

答案 0 :(得分:0)

您正在定义y两次进入:

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邮件列表(M​​artyn Plummer定期监控)上获得更快的响应。

答案 1 :(得分: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
}

但是,请确保x2u中没有缺失值,因为无法部分观察到多变量节点。

问候! :)

相关问题