EM 算法一个例子 EM in R
参考以下网页并翻译,其中变量稍作修改。
假设: 有一枚硬币,以25%的概率面朝上(heads), 75%的概率面朝下(tails).
如果面朝上,服从均值为1,标准方差为1 的正态分布,记为分布1;
如果面朝下, 服从均值为7, 标准方差为1的正态分布,记为分布2。
在该问题中, 硬币什么时候服从分布1,什么时候服从分布2就是隐变量。即 (p1,p2)
(1)#先模拟数据
set.seed(123)
p1=0.25
x
for (i in 1:1000)
{
if (runif(1)
{x[i]
y[i]
else
{x[i]
y[i]
}
(2)目前有是三个部分:
1.观察数据 x.
2.正态分布的参数mu,sd(均值,标准方差) 记为 theta=(mu1,mu2,sd1,sd2)
3. 隐变量(混合概率)记为 Z=(p1,p2)
(3)EM算法:
1. 给定当前的参数和观察数据,估计隐变量
2.给定 隐变量和观察数据,估计参数。
(3-1)E步
为了使得问题简单,假设我们已知两个正态分布的标准方差都是1.那么未知参数就是两个均值。此时 参数theta=(mu1,mu2)
我们先 给定参数 theta(mu