1

パッケージ MCLUST を使用して、R で潜在クラス/クラスター分析を実行しました。私は自分の論文を修正して再提出しましたが、査読者はクラスター ソリューションの適合指数の表を作成することを提案しました (現在、テキストで BIC を報告したところです)。LCAアプローチを使用したいくつかの論文を見ると、BIC、サンプルサイズ調整BIC、およびエントロピーが報告されています。MCLUST が提供するこれらの唯一の適合統計は BIC です。エントロピー プロットは見つかりますが、エントロピー統計は見つかりません。Mplus で分析を再実行するのが少し遅くなりました (これらの論文で LCA に使用されていることがわかりました)。率直に言って、別のクラスタリング パッケージを使用して分析を再実行するには少し遅すぎます。私のすべての読書から、MCLUST は他の k-means クラスター アプローチとは少し異なる方法で処理しているように思えます。また、BICが最も低いモデルが選択されることがあるようですが(一部の論文では)、MCLUSTでは最も高いモデルが選択されますか?なんで?

だから、tldr; MCLUST を使用している場合、記事で報告される他のモデル選択統計は何ですか? bICを持っているだけで標準/大丈夫ですか?どうやってそれを正当化しますか?

4

1 に答える 1

3

少し前に mclust を使用したことがあります。

1) mclust は正しい BIC 選択方法を使用します。この投稿を参照してください:

https://stats.stackexchange.com/questions/237220/mclust-model-selection

一番下を参照してください。しかし、要約すると、BIC では、数式でマイナス記号を使用するかどうかによって、低と高のどちらを最適化するかが異なります。

BIC の一般的な定義は、BIC=−2×ln(L(θ|x))+k×ln(n)BIC=−2×ln(L(θ|x))+k×ln(n) です。mclust には負の成分は含まれていません。

2) mclust は混合モデルを使用してクラスタリングを実行します (つまり、モデルベース)。これは k-means とはかなり異なるため、「他の k-means クラスター アプローチの一部とは少し異なる」という言い回しに注意します (主に、ここで「その他」が意味すること)。モデル選択のプロセスは、mclust マニュアルに簡単に説明されています。

mclust は、BIC に従って選択されたモデルとコンポーネント数に対して、EM アルゴリズムを介して最尤法によってデータに適合された混合ガウスを提供します。対応するコンポーネントは、参照セクションで引用された記事で説明されている方法に従って、エントロピー基準に従って階層的に結合されます。BIC によって選択されたクラスと 1 の間のクラス数を持つ解が、clustCombi クラス オブジェクトとして返されます。

完全な説明については、実際の論文を見る方が便利です。

https://www.stat.washington.edu/raftery/Research/PDF/Baudry2010.pdf またはこちらhttps://www.ncbi.nlm.nih.gov/pmc/articles/PMC2953822/

mclust によって提供されるエントロピー プロットは、因子分析のスクリー プロットのように解釈されることを意図しています (つまり、クラスの最適な数を決定するために肘を探すことによって)。スクリー プロットはクラスター数の選択を正当化するのに有用であり、これらのプロットは付録に属していると主張します。

mclust は BIC に加えて ICL 統計も返すため、レビュー担当者への妥協としてそれを報告することを選択できます。

https://cran.r-project.org/web/packages/mclust/vignettes/mclust.html (統計を出力する方法の例を参照)

3) entPlot 値のテーブルを作成する場合は、次のように抽出できます (?entPlot の例から)。

## Not run: 
data(Baudry_etal_2010_JCGS_examples)
# run Mclust to get the MclustOutput
output <- clustCombi(ex4.2, modelNames = "VII") 

entPlot(output$MclustOutput$z, output$combiM, reg = c(2,3)) 
# legend: in red, the single-change-point piecewise linear regression;
#         in blue, the two-change-point piecewise linear regression.

# added code to extract entropy values from the plot

combiM <- output$combiM
Kmax <- ncol(output$MclustOutput$z)
z0 <- output$MclustOutput$z
ent <- numeric()

for (K in Kmax:1) {
  z0 <- t(combiM[[K]] %*% t(z0))
  ent[K] <- -sum(mclust:::xlog(z0))
}

data.frame(`Number of clusters` = 1:Kmax, `Entropy` = round(ent, 3))

  Number.of.clusters Entropy
1                  1   0.000
2                  2   0.000
3                  3   0.079
4                  4   0.890
5                  5   6.361
6                  6  20.158
7                  7  35.336
8                  8 158.008
于 2016-11-09T01:56:40.867 に答える