2016-11-08 10 views
1

Ich habe eine latente Klassen-/Clusteranalyse in R mit dem Paket MCLUST durchgeführt. Ich habe eine Überarbeitung und erneute Einreichung für meine Arbeit, und der Rezensent schlug vor, eine Tabelle der Anpassungsindizes für die Cluster-Lösungen zu erstellen (ich habe BIC bisher nur im Text gemeldet). Wenn ich mir ein paar Arbeiten anschaue, die LCA-Ansätze verwendet haben, berichten sie BIC, Stichprobenumfangs-BIC und Entropie; Die einzige passende Statistik von diesen, die MCLUST gibt, ist BIC. Ich kann Entropie-Plots finden, aber nicht die Entropie-Statistik. Es ist ein wenig zu spät für mich, meine Analysen zu Mplus (die, wie ich fand, für die LCA in diesen Papieren verwendet wurde), erneut zu erstellen. ehrlich gesagt, es ist ein wenig zu spät, meine Analysen mit einem anderen Clustering-Paket erneut durchzuführen. Aus meiner ganzen Lektüre hört es sich an, als ob MCLUST die Dinge ein bisschen anders macht als einige andere K-Means-Cluster-Ansätze. AUCH - es scheint, dass manchmal das Modell mit dem niedrigsten BIC ausgewählt wird (in einigen Papieren), aber in MCLUST wird der höchste ausgewählt? Warum?Modellauswahl - mclust

so, tldr; Welche anderen Modellauswahlstatistiken werden bei der Verwendung von MCLUST in Write-ups gemeldet? ist es Standard/okay, nur BIC zu haben? Wie würde ich das rechtfertigen?

Antwort

2

Nur ein paar Gedanken, mclust ein bisschen zuvor verwendet.

1) mclust verwendet die richtige BIC-Auswahlmethode; finden Sie in diesem Beitrag:

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

Siehe ganz unten, aber um es zusammenzufassen, mit BIC es hängt, wenn Sie das negative Vorzeichen in der Formel verwenden oder nicht, ob Sie niedrig im Vergleich zu optimieren hoch:

Die allgemeine Definition des BIC lautet BIC = -2 × ln (L (θ | x)) + k × ln (n) BIC = -2 × ln (L (θ | x)) + k × ln (n); mclust nicht enthalten die negative Komponente.

2) mclust verwendet Mischmodelle, um das Clustering durchzuführen (d. H. Modellbasiert); es ist ganz anders als k-means, also würde ich mit der Formulierung vorsichtig sein, dass es ein "kleines bisschen anders als einige der anderen k-means-Cluster-Ansätze" ist (hauptsächlich was "anderes" hier andeutet); Der Prozess zur Modellauswahl ist im mclust-Handbuch kurz beschrieben:

mclust liefert ein Gauß-Gemisch, das mit den Daten nach maximaler Wahrscheinlichkeit durch den EM-Algorithmus für das Modell und die Anzahl der nach BIC ausgewählten Komponenten kombiniert wird. Die entsprechenden Komponenten werden gemäß einem Entropiekriterium hierarchisch kombiniert, wobei die in dem in dem Referenzteil zitierten Artikel beschriebene Methodik verwendet wird. Die Lösungen mit Klassenzahlen zwischen der von BIC und einer ausgewählten Klasse werden als clustCombi-Klassenobjekt zurückgegeben.

Es ist sinnvoller, das tatsächliche Papier für eine gründliche Erklärung zu sehen:

https://www.stat.washington.edu/raftery/Research/PDF/Baudry2010.pdf oder hier https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2953822/

Die Entropie Plot von mclust vorgesehen gemeint ist, für eine Faktoranalyse wie ein Screeplot interpretiert werden (dh durch Suchen nach einem Ellbogen, um die optimale Anzahl von Klassen zu bestimmen); Ich würde argumentieren, dass Scree-Plots nützlich sind, um die Wahl der Anzahl von Clustern zu rechtfertigen, und diese Plots gehören in die Anhänge.

mclust zurückkehrt auch die ICL-Statistik neben BIC, so können Sie wählen als Kompromiss für den Prüfer zu berichten, dass:

https://cran.r-project.org/web/packages/mclust/vignettes/mclust.html (siehe Beispiel dafür, wie es um die Statistik Ausgabe zu erhalten)

3), wenn Sie eine Tabelle der entPlot Werte schaffen wollten, können Sie sie wie so extrahieren (aus dem entPlot Beispiel):

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