我试图根据可变数量的输入来估计一堆双峰分布,即两个平均值和两个标准差。如果没有输入,则应返回一个常量值。根据我对贝叶斯的轶事了解,应该就是这样,不是吗?根据传入的证据调整先验。不过,我的问题是,我将如何详细说明?也许我只是以某种方式错过了一个好的教程。
应用贝叶斯:估计双峰分布
电磁算法
作为对@Daniel Johnson 的回应,我想快速向您展示如何在R
. 使用包mixtools
(点击链接)。然后,您可以使用normalmixEM
带有选项的函数k=2
来估计二分量高斯混合分布的参数。让我们举个例子:
# Let's look at the old faithful data
library(mixtools)
data(faithful)
plot(density(faithful$waiting), las=1, col="steelblue", lwd=2, main="")
分布显然是双峰的,所以我们要计算一个包含 2 个分量 ( k=2
) 的混合模型:
out <- normalmixEM(faithful$waiting, k=2, epsilon = 1e-03, fast=TRUE)
summary(out)
summary of normalmixEM object:
comp 1 comp 2
lambda 0.361283 0.638717
mu 54.628096 80.099412
sigma 5.882584 5.859425
loglik at estimate: -1034.002
第一个正态分布的估计均值为标准差为,第二个平均值标准差为. 这很好地对应于上图中的峰值。
贝叶斯方法
要使用贝叶斯方法估计混合模型,请使用bayesmix
包R
(单击此处获取链接)。不过,您需要先在计算机上安装JAGS(只需下载可执行文件并安装即可)。为了说明它的用途,我重新运行了上面的旧忠实数据示例。我选择独立的(选项independence
)和无信息的先验(选项priorsUncertain
)。此外,我们运行 10000 个 MCMC 样本(选项n.iter=10000
)并丢弃前 1000 个作为老化样本(选项burn.in=1000
):
library(bayesmix)
data(faithful)
bayesmod <- BMMmodel(faithful$waiting, k=2, priors=list(kind = "independence", parameter = "priorsUncertain", hierarchical = NULL)) # k=2 for two components
jcontrol <- JAGScontrol(variables = c("mu", "tau", "eta", "S"), burn.in = 1000, n.iter = 10000, seed = 10)
z <- JAGSrun(faithful$waiting, model = bayesmod, control = jcontrol, tmp = FALSE, cleanup = TRUE)
zSort <- Sort(z, by = "mu")
zSort
模型输出为(“mu”表示均值的估计值,“sigma2”表示方差的估计值):
Markov Chain Monte Carlo (MCMC) output:
Start = 1001
End = 11000
Thinning interval = 1
Empirical mean, standard deviation and 95% CI for eta
Mean SD 2.5% 97.5%
eta[1] 0.3622 0.0318 0.3013 0.4251
eta[2] 0.6378 0.0318 0.5749 0.6987
Empirical mean, standard deviation and 95% CI for mu
Mean SD 2.5% 97.5%
mu[1] 54.63 0.7365 53.25 56.12
mu[2] 80.08 0.5128 79.02 81.05
Empirical mean, standard deviation and 95% CI for sigma2
Mean SD 2.5% 97.5%
sigma2[1] 36.11 7.209 24.61 52.76
sigma2[2] 35.38 5.066 26.90 46.34
估计的手段是和标准差(方差“sigma2”的平方根)为和. 这与我们用 计算的估计值非常接近normalmixEM
。
I think "A Gentle Tutorial of the EM Algorithm and its Application to Parameter Estimation for Gaussian Mixture and Hidden Markov Models" is exactly what you're looking for. Particularly the third section: Finding Maximum Likelihood Mixture Densities Parameters via EM.