Estoy utilizando el análisis de clase latente para clúster de una muestra de observaciones basadas en un conjunto de variables binarias. Yo estoy usando el R y el paquete de la poLCA. En la ECV, se debe especificar el número de grupos que desea encontrar. En la práctica, las personas que generalmente se ejecuta en varios modelos, cada uno de especificar un número diferente de clases, y, a continuación, utilizar varios criterios para determinar cual es el "mejor" explicación de los datos.
A menudo me resulta muy útil para buscar a través de los diferentes modelos para tratar de entender cómo las observaciones clasificadas en el modelo con clase=(i) son distribuidas por el modelo con clase = (i+1). Al menos, a veces se puede encontrar muy robusta a las agrupaciones que existen independientemente del número de clases en el modelo.
Me gustaría una forma gráfica de estas relaciones, a comunicarse más fácilmente estos resultados complejos en los artículos y a los colegas que no son estadísticamente orientado. Me imagino que esto es muy fácil de hacer en R mediante algún tipo de red simple paquete de gráficos, pero yo simplemente no saben cómo.
Podría alguien por favor me apunte en la dirección correcta. A continuación es el código para reproducir un ejemplo de conjunto de datos. Cada vector xi representa la clasificación de los 100 observaciones, en un modelo con las clases posibles. Quiero gráfico de cómo las observaciones (filas) pasar de una clase a través de las columnas.
x1 <- sample(1:1, 100, replace=T)
x2 <- sample(1:2, 100, replace=T)
x3 <- sample(1:3, 100, replace=T)
x4 <- sample(1:4, 100, replace=T)
x5 <- sample(1:5, 100, replace=T)
results <- cbind (x1, x2, x3, x4, x5)
Me imagino que hay una manera para producir un grafo donde los nodos son las clasificaciones y los bordes de reflejar (pesos, o el color tal vez) el % de las observaciones se mueve a partir de las clasificaciones de un modelo al siguiente. E. g.
ACTUALIZACIÓN: después de Haber algún progreso con el igraph paquete. A partir del código anterior...
la poLCA de los resultados de reciclar los mismos números para describir la pertenencia a la clase, por lo que necesita para hacer un poco de recodificación.
N<-ncol(results)
n<-0
for(i in 2:N) {
results[,i]<- (results[,i])+((i-1)+n)
n<-((i-1)+n)
}
Entonces usted necesita para obtener todos los de tabulaciones cruzadas y sus frecuencias, y rbind en una matriz de definición de todos los bordes. Probablemente hay una manera mucho más elegante manera de hacer esto.
results <-as.data.frame(results)
g1 <- count(results,c("x1", "x2"))
g2 <- count(results,c("x2", "x3"))
colnames(g2) <- c("x1", "x2", "freq")
g3 <- count(results,c("x3", "x4"))
colnames(g3) <- c("x1", "x2", "freq")
g4 <- count(results,c("x4", "x5"))
colnames(g4) <- c("x1", "x2", "freq")
results <- rbind(g1, g2, g3, g4)
library(igraph)
g1 <- graph.data.frame(results, directed=TRUE)
plot.igraph(g1, layout=layout.reingold.tilford)
Tiempo para jugar más con el igraph opciones, supongo.