0

현재 누락 된 데이터를 가우시안 혼합 모델을 통해 대체하려고합니다. 내 참조 논문은 여기에서있다 : 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,]) 
    } 

사람이 가우시안 혼합 모델을 통해 잠재/숨겨진 변수로 작동 할 수 전가 기법을 개선하는 방법에 대한 조언을 줄 수 있다면 감사하겠습니다. 미리 감사드립니다.

+0

이것은 당신이 당신의 혼합 모델에 대한 가정 공분산 구조에 전적으로 의존한다. 하지만 일반적인 프로세스는 반복 당 두 개의 EM 단계를 수행하는 것입니다. –

답변

0

This은 공분산 구조의 한 유형에 대한 해결책입니다.

enter image description here

devtools::install_github("alexwhitworth/emclustr") 
library(emclustr) 
data(faithful) 
set.seed(23414L) 
ff <- apply(faithful, 2, function(j) { 
    na_idx <- sample.int(length(j), 50, replace=F) 
    j[na_idx] <- NA 
    return(j) 
}) 
ff2 <- em_clust_mvn_miss(ff, nclust=2) 

# hmm... seems I don't return the imputed values. 
# note to self to update the code  
plot(faithful, col= ff2$mix_est) 
그리고 매개 변수 출력

$it 
[1] 27 

$clust_prop 
[1] 0.3955708 0.6044292 

$clust_params 
$clust_params[[1]] 
$clust_params[[1]]$mu 
[1] 2.146797 54.833431 

$clust_params[[1]]$sigma 
[1] 13.41944 


$clust_params[[2]] 
$clust_params[[2]]$mu 
[1] 4.317408 80.398192 

$clust_params[[2]]$sigma 
[1] 13.71741 
+0

친애하는 @Alex W, 감사합니다. 업데이트를 기다리고 있습니다. – Jas

+0

@Jas 내 업데이트에 어떤 업데이트가 필요합니까? 저에게 최우선 순위는 아닙니다. 나는 그걸 언제든지 둘러 볼 생각이 없다. –