잠재 클래스 분석을 사용하여 일련의 이진 변수를 기반으로 관찰 샘플을 묶습니다. R과 poLCA 패키지를 사용하고 있습니다. LCA에서 찾으려는 클러스터 수를 지정해야합니다. 실제로 사람들은 일반적으로 각각 다른 수의 클래스를 지정하는 여러 모델을 실행 한 다음 다양한 기준을 사용하여 데이터에 대한 "최상의"설명을 결정합니다.
class = (i) 모델로 분류 된 관측치가 class = (i + 1) 모델에 의해 어떻게 분포되는지 이해하기 위해 다양한 모델을 살펴 보는 것이 종종 유용하다는 것을 알았습니다. 최소한 모델의 클래스 수에 관계없이 존재하는 매우 강력한 클러스터를 찾을 수 있습니다.
이러한 관계를 그래프로 작성하고 복잡한 결과를보다 쉽게 논문과 통계 지향이 아닌 동료에게보다 쉽게 전달할 수있는 방법을 원합니다. 간단한 네트워크 그래픽 패키지를 사용하여 R 에서이 작업을 수행하는 것이 매우 쉽다고 생각하지만 방법을 모르겠습니다.
누구든지 올바른 방향으로 나를 가리켜 주시겠습니까? 아래는 예제 데이터 세트를 재현하는 코드입니다. 각 벡터 xi는 가능한 클래스가있는 모델에서 100 개의 관측치 분류를 나타냅니다. 관측 (행)이 열에서 클래스 간 이동하는 방법을 그래프로 표시하고 싶습니다.
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)
노드가 분류이고 가장자리가 가중치 (색상 또는 색상)에 따라 분류에서 한 모델에서 다음 모델로 이동하는 관측치의 비율을 반영하는 그래프를 생성하는 방법이 있다고 생각합니다. 예 :
업데이트 : igraph 패키지로 진행 중입니다. 위의 코드에서 시작하여 ...
poLCA 결과는 클래스 멤버십을 설명하기 위해 동일한 숫자를 재활용하므로 약간의 코딩 작업이 필요합니다.
N<-ncol(results)
n<-0
for(i in 2:N) {
results[,i]<- (results[,i])+((i-1)+n)
n<-((i-1)+n)
}
그런 다음 모든 교차 테이블과 해당 주파수를 가져 와서 모든 모서리를 정의하는 하나의 행렬로 묶어야합니다. 이 작업을 수행하는 훨씬 더 우아한 방법이있을 것입니다.
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)
내가 생각하는 igraph 옵션으로 더 많은 것을 할 시간입니다.