您如何使用EM算法为零膨胀泊松模型的潜在变量公式计算MLE?


10

通过 为样本定义零膨胀的Poisson回归模型 ,并进一步假设参数和满足(y1,,yn)

Yi={0with probability pi+(1pi)eλikwith probability (1pi)eλiλik/k!
λ=(λ1,,λn)p=(p1,,pn)

log(λ)=Bβlogit(p)=log(p/(1p))=Gγ.

零膨胀的Poisson回归模型的对应对数似然为

L(γ,β;y)=yi=0log(eGiγ+exp(eBiβ))+yi>0(yiBiβeBiβ)i=1nlog(1+eGiγ)yi>0log(yi!)

这里,BG是设计矩阵。这些矩阵可以相同,这取决于一个人希望用于两个生成过程的特征。但是,它们具有相同的行数。

假设当来自完美零状态时我们可以观察到,而当来自泊松状态时时,对数似然为Y i Z i = 0 Y iZi=1YiZi=0Yi

L(γ,β;y,z)=i=1nlog(f(zi|γ))+i=1nlog(f(yi|zi,β))

Ž = 0 ž = 1

=i=1nzi(Giγlog(1+eGiγ))+i=1n(1zi)log(1+eGiγ)+i=1n(1zi)[yiBiβeBiβlog(yi!)]
前两项是逻辑回归分开的损失从。第二项是对泊松过程产生的点的回归。zi=0zi=1

但是潜在变量不是不可观察的吗?目的是使第一个对数可能性最大化。但是我们必须引入潜在变量并得出新的对数似然性。然后,使用EM算法,我们可以最大化第二个对数似然率。但这假设我们知道或?Z i = 1Zi=0Zi=1


什么是?同样,这个问题的大部分似乎都被@Robby较早的不同问题进行了剪切和粘贴。那是你吗?f
2012年

@Macro:宏,是的。我不确定是什么。报纸从未说过。f
Damien 2012年

Answers:


11

您遇到困难的根源在于:

然后,使用EM算法,我们可以最大化第二个对数似然率。

如您所见,您不能。取而代之的是,您最大化的是第二个对数似然的期望值(称为“完整数据对数似然”),其中期望值接管。 zi

这导致了一个迭代过程,其中在第次迭代中,根据第次迭代的参数估计值,计算的期望值(这称为“ E步骤” “,),然后将其替换为完整的数据对数似然度(请参见下面的EDIT,了解在这种情况下为什么可以这样做),并针对参数最大化该值,以获取当前迭代的估算值(“ M步” ) z ik 1 t hkthzi(k1)th

在最简单的情况下,零膨胀的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得到的估计,因此,然后最大化:λ βλi

(Ezilogpi+(1Ezi)log(1pi))

关于矩阵的系数向量,以获得的估计值。期望值,在每次迭代时再次计算。p ë ž = p /p + 1 - p EXP - λ GpiEzi=pi/(pi+(1pi)exp(λi))

如果要对真实数据执行此操作,而不是仅仅了解算法,则R包已经存在;这是使用该库的示例http://www.ats.ucla.edu/stat/r/dae/zipoisson.htmpscl

编辑:我应该强调,我们正在做的是使完整数据对数似然性的期望值最大化,而不是在插入缺失数据/​​潜在变量的期望值时使完整数据对数似然性最大化。完整数据的对数似然在丢失的数据中是线性的,正如这里所说的,这两种方法是相同的,但是在其他方面却不是。


@Cokes,您应该将此信息添加为您自己的补充答案,而不是更改现有答案。此修改不应该被批准。
gung-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.