현재 누락 된 데이터를 가우시안 혼합 모델을 통해 대체하려고합니다. 내 참조 논문은 여기에서있다 : http://mlg.eng.cam.ac.uk/zoubin/papers/nips93.pdf누락 된 데이터를 대신하기 위해 가우시안 혼합 모델을 사용하는 잠재 변수
내가 현재 2 개 가우스 구성 요소와 이변 량 데이터 세트에 초점을 맞 춥니 다.
> whichMissXY<-myData[ which(is.na(myData$waiting)),1:2]
> whichMissXY
eruptions waiting
11 1.833 NA
12 3.917 NA
13 4.200 NA
14 1.750 NA
15 4.700 NA
16 2.167 NA
17 1.750 NA
18 4.800 NA
19 1.600 NA
20 4.250 NA
내 제약 조건 "에서 누락 된 데이터를 전가하는 방법입니다 :이 누락 된 값을 정의하려면 코드가
myData = faithful[,1:2]; # the data matrix
for (i in (1:N)) {
prob1 = pi1*dmvnorm(na.exclude(myData[,1:2]),m1,Sigma1); # probabilities of sample points under model 1
prob2 = pi2*dmvnorm(na.exclude(myData[,1:2]),m2,Sigma2); # same for model 2
Z<-rbinom(no,1,prob1/(prob1 + prob2)) # Z is latent variable as to assign each data point to the particular component
pi1<-rbeta(1,sum(Z)+1/2,no-sum(Z)+1/2)
if (pi1>1/2) {
pi1<-1-pi1
Z<-1-Z
}
}
입니다 : 이 각 가우시안 구성 요소의 무게를 정의하는 코드 대기 중 "변수를 특정 구성 요소를 기반으로합니다. 이 코드는 조건부 평균 대체를 사용하여 누락 된 데이터를 대체하려고 한 첫 시도입니다. 나는 틀림없이 틀림없이 틀림없이 그것을 알고 있습니다. 결과는 특정 구성 요소에 있지 않고 이상 치를 생성합니다.
miss.B2 <- which(is.na(myData$waiting))
for (i in miss.B2) {
myData[i, "waiting"] <- m1[2] + ((rho * sqrt(Sigma1[2,2]/Sigma1[1,1])) * (myData[i, "eruptions"] - m1[1]) + rnorm(1,0,Sigma1[2,2]))
#print(miss.B[i,])
}
사람이 가우시안 혼합 모델을 통해 잠재/숨겨진 변수로 작동 할 수 전가 기법을 개선하는 방법에 대한 조언을 줄 수 있다면 감사하겠습니다. 미리 감사드립니다.
이것은 당신이 당신의 혼합 모델에 대한 가정 공분산 구조에 전적으로 의존한다. 하지만 일반적인 프로세스는 반복 당 두 개의 EM 단계를 수행하는 것입니다. –