İkili değişkenler kümesine dayalı bir gözlem örneğini kümelemek için gizli sınıf analizi kullanıyorum. R ve poLCA paketini kullanıyorum. LCA'da, bulmak istediğiniz küme sayısını belirtmeniz gerekir. Pratikte, insanlar genellikle her biri farklı sayıda sınıf belirten birkaç model çalıştırır ve daha sonra verilerin hangisinin "en iyi" açıklaması olduğunu belirlemek için çeşitli kriterler kullanırlar.
Class = (i) ile modelde sınıflandırılan gözlemlerin class = (i + 1) ile model tarafından nasıl dağıtıldığını anlamaya çalışmak için çeşitli modellere bakmak genellikle çok yararlı olur. En azından bazen modeldeki sınıf sayısına bakılmaksızın var olan çok sağlam kümeler bulabilirsiniz.
Bu ilişkileri grafiklendirmenin, bu karmaşık sonuçları gazetelerde ve istatistiksel olarak yönlendirilmemiş meslektaşlara daha kolay iletmenin bir yolunu istiyorum. Bunun bir çeşit basit ağ grafik paketi kullanarak R'de yapmanın çok kolay olduğunu düşünüyorum, ancak nasıl yapacağımı bilmiyorum.
Birisi lütfen beni doğru yöne yönlendirebilir mi? Aşağıda örnek bir veri kümesini yeniden oluşturmak için kod bulunmaktadır. Her xi vektörü, olası sınıfları olan bir modelde 100 gözlemin sınıflandırılmasını temsil eder. Gözlemlerin (satırların) sınıftan sınıfa sütunlar arasında nasıl hareket ettiğini grafik olarak çizmek istiyorum.
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)
Düğümlerin sınıflandırma olduğu ve kenarların sınıflandırmalardan bir modelden diğerine hareket eden gözlemlerin yüzdesini yansıttığı (ağırlık veya renkle) bir grafik oluşturmanın bir yolu olduğunu hayal ediyorum. Örneğin
GÜNCELLEME: igraph paketinde bazı ilerlemeler olması. Yukarıdaki koddan başlayarak ...
poLCA sonuçları sınıf üyeliğini tanımlamak için aynı sayıları geri dönüştürür, bu nedenle biraz yeniden kodlama yapmanız gerekir.
N<-ncol(results)
n<-0
for(i in 2:N) {
results[,i]<- (results[,i])+((i-1)+n)
n<-((i-1)+n)
}
Sonra tüm çapraz tabloları ve frekanslarını almanız ve bunları tüm kenarları tanımlayan bir matrise bağlamanız gerekir. Muhtemelen bunu yapmanın çok daha zarif bir yolu var.
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)
Sanırım igraph seçenekleriyle daha fazla oynama zamanı.