Akar kesulitan yang Anda hadapi terletak pada kalimat:
Kemudian menggunakan algoritma EM, kita bisa memaksimalkan log-likelihood kedua.
Seperti yang telah Anda amati, Anda tidak bisa. Alih-alih, apa yang Anda maksimalkan adalah nilai yang diharapkan dari kemungkinan log kedua (dikenal sebagai "kemungkinan log data lengkap"), di mana nilai yang diharapkan diambil alih . zi
Ini mengarah ke prosedur berulang, di mana pada iterasi Anda menghitung nilai yang diharapkan dari mengingat estimasi parameter dari iterasi ( (ini dikenal sebagai "E-step" ",) lalu gantilah dengan kemungkinan log data lengkap (lihat EDIT di bawah ini untuk alasan mengapa kami dapat melakukan ini dalam kasus ini), dan maksimalkan hal itu sehubungan dengan parameter untuk mendapatkan perkiraan untuk iterasi saat ini (" M-step " .)kthzi(k−1)th
Kemungkinan log data lengkap untuk Poisson nol-digembungkan dalam kasus paling sederhana - dua parameter, katakan dan - memungkinkan untuk penyederhanaan substansial ketika datang ke langkah-M, dan ini sampai batas tertentu ke formulir Anda. Saya akan menunjukkan kepada Anda bagaimana cara kerjanya dalam kasus sederhana melalui beberapa kode R, sehingga Anda dapat melihat esensi dari itu. Saya tidak akan menyederhanakan sebanyak mungkin, karena itu dapat menyebabkan hilangnya kejelasan ketika Anda memikirkan masalah Anda:λ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
Dalam kasus Anda, pada setiap langkah Anda akan melakukan regresi Poisson tertimbang di mana bobotnya 1-zhat
untuk mendapatkan perkiraan dan karenanya , dan kemudian memaksimalkan:βλi
∑(Ezilogpi+(1−Ezi)log(1−pi))
sehubungan dengan vektor koefisien matriks Anda untuk mendapatkan estimasi . Nilai yang diharapkan , sekali lagi dihitung pada setiap iterasi.p i E z i = p i / ( p i + ( 1 - p i ) exp ( - λ i ) )GpiEzi=pi/(pi+(1−pi)exp(−λi))
Jika Anda ingin melakukan ini untuk data nyata, bukan hanya memahami algoritma, paket R sudah ada; inilah contohnya http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm menggunakan pscl
perpustakaan.
EDIT: Saya harus menekankan bahwa apa yang kita lakukan adalah memaksimalkan nilai yang diharapkan dari kemungkinan log data-lengkap, BUKAN memaksimalkan kemungkinan data log lengkap dengan nilai-nilai yang diharapkan dari data yang hilang / variabel laten terpasang. Seperti yang terjadi, jika log data lengkap kemungkinan linear dalam data yang hilang, seperti di sini, kedua pendekatan itu sama, tetapi sebaliknya, mereka tidak.