0

私は現在、ガウス混合モデルを介して欠落データを代入しようとしています。私の参照論文はここからです: http://mlg.eng.cam.ac.uk/zoubin/papers/nips93.pdf

私は現在、2 つのガウス成分を持つ二変量データセットに注目しています。これは、各ガウス コンポーネントの重みを定義するコードです。

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
        }
      }

これは、欠損値を定義するための私のコードです:

> 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

私の制約は、特定のコンポーネントに基づいて「待機中」の変数に欠落しているデータを代入する方法です。このコードは、条件付き平均代入を使用して欠損データを代入する最初の試みです。私は知っています、それは間違いなく間違った方法です。結果は特定のコンポーネントに嘘をつくことはなく、異常値を生成します。

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,])  
  }

ガウス混合モデルを介して潜在/非表示変数を処理できる代​​入手法を改善する方法について、誰かがアドバイスをいただければ幸いです。前もって感謝します

4

1 に答える 1

0

これは、共分散構造の 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)

ここに画像の説明を入力

そしてパラメータ出力

$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
于 2016-12-03T17:47:04.030 に答える