【发布时间】:2018-08-19 13:04:54
【问题描述】:
我正在尝试计算 R 中高斯模型的边际似然。更准确地说,我正在尝试将 mu 上的高斯先验和 sigma 上的高斯先验的似然性与一些观察值 yi 相结合。
换句话说,我正在尝试计算:
我尝试使用以下函数在 R 中编写此代码(在此处遵循类似的 SA 问题:Quadrature to approximate a transformed beta distribution in R):
marglik <- function(data) {
integrand <-
Vectorize(function(data, mu, sigma) {
prod(dnorm(data, mu, sigma) ) * dnorm(mu, 110, 1) * dnorm(sigma, 10, 1)
} )
integrate(integrand, lower = 0, upper = Inf, mu = 100, sigma = 10)$value
}
使用这个函数,我可以计算上述模型对于一组观察值的边际似然:
set.seed(666)
d <- rnorm(100, mean = 107.5, sd = 2.5)
marglik(data = d)
[1] 9.704133e-24
但是,我通过此过程获得的结果与我通过网格近似或使用其他软件包/软件获得的结果大不相同。
那么我的问题是:是否可以使用集成进行这种双重集成?如果是,你会怎么做?
【问题讨论】:
标签: r bayesian numerical-integration integrate log-likelihood