EM 알고리즘을 사용하여 제로 팽창 된 포아송 모델의 잠복 변수 공식에 대한 MLE을 계산하는 방법은 무엇입니까?


10

부풀려진 포아송 회귀 모형은 의해 표본 에 대해 정의 그것은 상기 매개한다고 가정 과 충족Y i = { 0 확률 p i + ( 1 - p i ) e - λ i k 확률 ( 1 - p i ) e λ i λ k i / k ! λ = ( λ 1 , , λ n ) p =(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γ.

0으로 팽창 된 포아송 회귀 모형의 해당 로그 우도는

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

여기서 및 는 디자인 행렬입니다. 이러한 행렬은 두 생성 프로세스에 사용하려는 기능에 따라 동일 할 수 있습니다. 그러나 행 수는 동일합니다.BG

가 완전, 제로 상태에서 온 경우 이고 가 포아송 상태에서 온 경우 을 볼 수 있다고 가정하면 로그 우도는 다음과 같습니다.Zi=1YiZi=0Yi

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

=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
매크로

@ 매크로 : 매크로 네, 저예요. 가 무엇인지 잘 모르겠습니다 . 신문은 말하지 않았다. f
Damien

답변:


11

어려움의 근본은 문장에 있습니다.

그런 다음 EM 알고리즘을 사용하여 두 번째 로그 가능성을 최대화 할 수 있습니다.

당신이 관찰했듯이, 당신은 할 수 없습니다. 대신, 최대화하는 것은 두 번째 로그 우도의 예상 값 ( "완전한 데이터 로그 우도"라고 함)이며, 여기서 예상 값은 됩니다. zi

이는 반복 에서 반복 의 매개 변수 추정치가 주어지면 의 예상 값을 계산 하는 반복 절차로 집니다 (이는 "E-step"이라고 함). ",) 그런 다음이를 완전한 데이터 로그 가능성으로 대체하고 (이 경우이 작업을 수행 할 수있는 이유는 아래 편집 참조) 매개 변수와 관련하여이를 최대화하여 현재 반복에 대한 추정치를 얻습니다 ("M-step " .) z i ( k kthzi(k1)th

가장 간단한 경우에 0으로 팽창 된 포아송에 대한 완전한 데이터 로그 가능성- 및 와 같은 두 개의 매개 변수 는 M 단계와 관련하여 실질적인 단순화를 허용하며, 이는 사용자의 양식에 어느 정도까지 적용됩니다. R 코드를 통해 간단한 경우 어떻게 작동하는지 보여 주므로 본질을 볼 수 있습니다. 가능한 한 단순화하지 않습니다. 문제를 생각할 때 선명도가 떨어질 수 있습니다.λ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 E의 Z가 나는 = P I / ( P I + ( 1 - P I ) EXP ( - λ I ) )GpiEzi=pi/(pi+(1pi)exp(λi))

알고리즘을 이해하는 것과 달리 실제 데이터에 대해이 작업을 수행하려면 R 패키지가 이미 존재합니다. 다음 은 라이브러리를 사용하는 http://www.ats.ucla.edu/stat/r/dae/zipoisson.htm 의 예 pscl입니다.

편집 : 우리가하고있는 일은 누락 된 데이터 / 잠재 변수의 예상 값을 사용하여 전체 데이터 로그 가능성을 최대화하지 않고 전체 데이터 로그 가능성의 예상 값을 최대화하는 것임을 강조해야합니다. 완전한 데이터 로그 가능성은 누락 된 데이터에서 선형 적입니다. 여기에서와 같이 두 가지 접근 방식은 동일하지만 그렇지 않습니다.


@ 콜라, 당신은 기존 답변을 변경하지 않고, 당신의 자신의 보충 답변 으로이 정보를 추가해야합니다. 이 수정 사항은 승인되지 않아야합니다.
gung-복직 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.