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

これは、あなたの混合モデルのための前提と共分散構造に完全に依存。しかし、一般的なプロセスは反復ごとに2つのEMステップを持つことです –

答えて

0

Thisは、1種類の共分散構造の解です。

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) 

enter image description here

とパラメータ出力

$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私のレポには何が更新されましたか?それは私の優先事項ではありません。私はすぐ近くにそれを取り巻くことを計画していません。 –

関連する問題