r - 拉普拉斯恶魔 : when should I sum prior density?

标签 r bayesian mcmc

我正在从 JAGS 迁移到 LaplacesDemon 并尝试重写我的一些代码。我读过 LaplacesDemon TutorialLaplacesDemon Examples小插图,我对小插图中的一些例子有点困惑。

在LaplacesDemon Tutorial (p.5)中的简单例子中,模型写成:

Model <- function(parm, Data)
{beta <- parm[Data$pos.beta]
 sigma <- interval(parm[Data$pos.sigma], 1e-100, Inf)
 parm[Data$pos.sigma] <- sigma
 beta.prior <- dnormv(beta, 0, 1000, log=TRUE)
 sigma.prior <- dhalfcauchy(sigma, 25, log=TRUE)
 mu <- tcrossprod(beta, Data$X)
 LL <- sum(dnorm(Data$y, mu, sigma, log=TRUE))
 LP <- LL + sum(beta.prior) + sigma.prior
 Modelout <- list(LP=LP, Dev=-2*LL, Monitor=LP,
 yhat=rnorm(length(mu), mu, sigma), parm=parm)
 return(Modelout)}

此处,beta.prior 是针对 LP 求和的,因为有多个 beta 参数。

但我发现在 LaplacesDemon Example vignette 中更高级的示例中,它似乎并不总是遵循规则。如示例 87 (p.162):

Model <- function(parm, Data)
{### Log-Prior
 beta.prior <- sum(dnormv(beta[,1], 0, 1000, log=TRUE), dnorm(beta[,-1], beta[,-Data$T], matrix(tau, Data$K, Data$T-1), log=TRUE))
 zeta.prior <- dmvn(zeta, rep(0,Data$S), Sigma[ , , 1], log=TRUE)
 phi.prior <- sum(dhalfnorm(phi[1], sqrt(1000), log=TRUE), dtrunc(phi[-1], "norm", a=0, b=Inf, mean=phi[-Data$T], sd=sigma[2], log=TRUE))
 ### Log-Posterior
 LP <- LL + beta.prior + zeta.prior + sum(phi.prior) + sum(kappa.prior) + sum(lambda.prior) + sigma.prior + tau.prior
 Modelout <- list(LP=LP, Dev=-2*LL, Monitor=LP, yhat=rnorm(prod(dim(mu)), mu, sigma[1]), parm=parm)
 return(Modelout)}

(由于示例代码较长,只放了部分代码)

这里,zeta 不止一个,但没有在 Log-PriorLog-Posterior 部分求和,beta 不止一个,在 Log-Prior 中求和,phi 也不止一个参数,但在 Log-Prior 中求和PriorLog-Posterior 部分。

而在第 167 页的下一个示例中,它似乎又有所不同。

我想知道在什么情况下我们应该对先验密度求和?非常感谢!

最佳答案

您是否尝试过逐行运行代码?您会了解到,没有什么可以求和的,因为 dmvn 是多元正态分布的密度函数,它返回一个值——观察向量 zeta 的概率密度。所有总和的原因是为了获得一起观察两个独立事件的概率,我们将它们的边际概率相乘(或求和它们的对数)。因此,我们将观察到所有先验的概率相乘以获得它们的联合分布。

关于r - 拉普拉斯恶魔 : when should I sum prior density?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43115842/

相关文章:

python - 通过网状结构在 R 中运行 gensim 时出现 ImportError : cannot import name 'ssl' from 'urllib3. util.ssl

r - 将 mob() 树(partykit 包)与 Logistic() 模型结合使用

r - 阿拉斯加和夏威夷未正确格式化 R 中的县等值线 map

python - 如何在 PyMC3 中定义自定义先验

java - Weka:如何在 java 中获取测试实例的预测值?

r - 尾声 gelman.diag() : "Error in chol.default(W) : the leading minor of order nn is not positive definite"

R - 在坐标对的数据框中获取坐标对的行号

machine-learning - 爱德华的 MCMC 跟踪图

constraints - PyMC:拟合模型时设置约束

bayesian - 狄利克雷多项式 WinBUGS 代码