您遇到困难的根源在于:
然后,使用EM算法,我们可以最大化第二个对数似然率。
如您所见,您不能。取而代之的是,您最大化的是第二个对数似然的期望值(称为“完整数据对数似然”),其中期望值接管。 ž一世
这导致了一个迭代过程,其中在第次迭代中,根据第次迭代的参数估计值,计算的期望值(这称为“ E步骤” “,),然后将其替换为完整的数据对数似然度(请参见下面的EDIT,了解在这种情况下为什么可以这样做),并针对参数最大化该值,以获取当前迭代的估算值(“ M步” ) z i(k − 1 )t hķŤ ^ hž一世(k − 1 )Ť ^ h
在最简单的情况下,零膨胀的Poisson的完整数据对数似然-两个参数,例如和在进行M步时可以大大简化,这在某种程度上可以延续到您的表格中。我将通过一些R代码向您展示在简单情况下它是如何工作的,因此您可以了解它的本质。我不会尽可能简化,因为当您想到问题时,这可能会导致不清楚:pλp
# Generate data
# Lambda = 1, p(zero) = 0.1
x <- rpois(10000,1)
x[1:1000] <- 0
# Sufficient statistic for the ZIP
sum.x <- sum(x)
# (Poor) starting values for parameter estimates
phat <- 0.5
lhat <- 2.0
zhat <- rep(0,length(x))
for (i in 1:100) {
# zhat[x>0] <- 0 always, so no need to make the assignment at every iteration
zhat[x==0] <- phat/(phat + (1-phat)*exp(-lhat))
lhat <- sum.x/sum(1-zhat) # in effect, removing E(# zeroes due to z=1)
phat <- mean(zhat)
cat("Iteration: ",i, " lhat: ",lhat, " phat: ", phat,"\n")
}
Iteration: 1 lhat: 1.443948 phat: 0.3792712
Iteration: 2 lhat: 1.300164 phat: 0.3106252
Iteration: 3 lhat: 1.225007 phat: 0.268331
...
Iteration: 99 lhat: 0.9883329 phat: 0.09311933
Iteration: 100 lhat: 0.9883194 phat: 0.09310694
在你的情况,在每个步骤中,您会做一个加权泊松回归,其中权重1-zhat
得到的估计,因此,然后最大化:λ 我βλ一世
∑(Ezilogpi+(1−Ezi)log(1−pi))
关于矩阵的系数向量,以获得的估计值。期望值,在每次迭代时再次计算。p 我ë ž 我 = p 我/(p 我 + (1 - p 我)EXP (- λ 我))GpiEzi=pi/(pi+(1−pi)exp(−λi))
如果要对真实数据执行此操作,而不是仅仅了解算法,则R包已经存在;这是使用该库的示例http://www.ats.ucla.edu/stat/r/dae/zipoisson.htmpscl
。
编辑:我应该强调,我们正在做的是使完整数据对数似然性的期望值最大化,而不是在插入缺失数据/潜在变量的期望值时使完整数据对数似然性最大化。完整数据的对数似然在丢失的数据中是线性的,正如这里所说的,这两种方法是相同的,但是在其他方面却不是。