Корень трудности, с которой вы столкнулись, заключается в предложении:
Затем, используя алгоритм EM, мы можем максимизировать второе логарифмическое правдоподобие.
Как вы заметили, вы не можете. Вместо этого вы максимизируете ожидаемое значение вероятности второго журнала (известное как «полная вероятность журнала данных»), где ожидаемое значение принимается за . Zя
Это приводит к итерационной процедуре, где на итерации вы вычисляете ожидаемые значения учитывая оценки параметров из итерации ( (это называется "E-step" ",) затем подставьте их в полную вероятность регистрации данных (см. ниже РЕДАКТИРОВКА, чтобы узнать, почему мы можем сделать это в этом случае), и максимизируйте это по отношению к параметрам, чтобы получить оценки для текущей итерации (" M-шаг " .)Кт чZя( к - 1 )т ч
Вероятность регистрации полных данных для Пуассона с нулевым раздувом в простейшем случае - два параметра, скажем, и - позволяет существенно упростить, когда дело доходит до М-шага, и это в некоторой степени переносится в вашу форму. Я покажу вам, как это работает в простом случае с помощью некоторого кода R, чтобы вы могли увидеть суть этого. Я не буду упрощать как можно больше, так как это может привести к потере ясности, когда вы думаете о своей проблеме:λп
# 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
получать оценки и, следовательно, , а затем максимизировать:βλя
∑ ( E zяжурналпя+ ( 1 - E zя) журнал( 1 - ря) )
относительно вектора коэффициентов вашей матрицы чтобы получить оценки . Ожидаемые значения , снова рассчитываются на каждой итерации.p i E z i = p i / ( p i + ( 1 - p i ) exp ( - λ i ) )гпяE гя= ря/ ( ря+ ( 1 - ря) опыт( - λя) )
Если вы хотите сделать это для реальных данных, в отличие от простого понимания алгоритма, R-пакеты уже существуют; Вот пример http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm с использованием pscl
библиотеки.
РЕДАКТИРОВАТЬ: Я должен подчеркнуть, что то, что мы делаем, - это максимизация ожидаемого значения вероятности записи полного журнала, а НЕ максимизация вероятности полного журнала данных с подключением ожидаемых значений отсутствующих данных / скрытых переменных. Как это происходит, если вероятность того, что журнал полных данных является линейным по отсутствующим данным, как и здесь, два подхода одинаковы, но в остальном это не так.