我对 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]);
导致错误Node 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)。