我试图在 R 中计算高斯模型的边际似然。更准确地说,我试图将 mu 上的高斯先验和 sigma 上的高斯先验的似然性与一些观察值 yi 结合起来。
换句话说,我正在尝试计算:
我尝试使用以下函数在 R 中编写此代码(在此处遵循类似的 SA 问题:Quadrature toapproximate a changed 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
但是,我通过此过程获得的结果与我通过网格近似或使用其他软件包/软件获得的结果完全不同。
那么我的问题是:是否有可能使用集成进行这种双重集成?如果是,你会怎么做?