私は現在、ガウス混合モデルを使って欠けているデータを帰結しようとしています。 参考資料はこちらから: 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,])
}
誰かがガウス混合モデルを通じて潜在/隠れ変数で仕事ができる帰属技術を改善する方法について何かアドバイスを与えることができれば私は幸いです。 ありがとうございます
これは、あなたの混合モデルのための前提と共分散構造に完全に依存。しかし、一般的なプロセスは反復ごとに2つのEMステップを持つことです –