2016-12-21 18 views
0

R에서 igraph의 cluster_infomap 함수를 사용하여 ~ 19,000 가장자리의 방향이없는 비가 중 네트워크의 커뮤니티를 감지하지만이 기능을 실행할 때마다 다른 수의 커뮤니티가 표시됩니다. 이것은 내가 사용하고있는 코드입니다 :igraph R의 cluster_infomap이 매번 다른 커뮤니티를 제공하는 이유는 무엇입니까?

마지막 코드 라인의 결과는 내가 수행 한 테스트에서 805-837입니다. 나는 set.seed()를 사용하여 난수 생성 문제에 대비해 보았지만, 문제를 해결하지는 못했다.

내 질문은 (1) 매번 다른 커뮤니티를 얻는 이유는 무엇입니까? (2) 안정적인 방법이 있습니까?

감사합니다.

+0

에서 제공하는 정보에서 알 수있는 방법은 없습니다 - 수 각 실행마다 다른 결과를 제공하는 재현 가능한 예제를 만들 수 있습니까? – thelatemail

+0

R 태그 위로 마우스를 가져 가면 최소한의 재현 가능한 예를 묻습니다. [여기에 가이드가있다] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610); 또한 R 도움말 파일 (예 :'? cluster_infomap', _examples_ 섹션)과 일반 포스터에 대한 응답 (R 태그 클릭)을 살펴보십시오. 그 후에는 그에 맞게 질문을 수정하고 개선하십시오. 일반적으로 좋은 입력 데이터는 최소한의 입력 데이터, 원하는 출력 데이터, 필요한 패키지를 포함한 코드 시도를 제공합니다. 모든 복사/붙여 넣기는 새/깨끗한 R 세션에서 실행 가능합니다. * 왜? * 모든 사람들이 따라 다니고 참여하기가 더 쉽습니다. – lukeA

답변

2

cluster_infomap 는 난수 생성을 처리 할 때마다

이, 당신이 얻을 임의 워커 궤도의 예상 설명의 길이를 최소화하는

사회 구조를 발견 (도움 ?igraph::cluster_infomap 참조) 각 실행마다 다른 결과. 대부분의 시간, 당신은 set.seed를 사용하여 씨앗을 설정하여이를 대체 할 수 있습니다 사전에 (도움 ?Random 참조) 그래픽

identical(cluster_infomap(g), cluster_infomap(g)) 
# [1] FALSE 
identical({set.seed(1);cluster_infomap(g)},{set.seed(1);cluster_infomap(g)}) 
# [1] TRUE 

또는 :

library(igraph) 
set.seed(2) 
g <- ba.game(150) 
coords <- layout.auto(g) 
par(mfrow=c(2,2)) 

# without seed: different results 
for (x in 1:2) { 
    plot(
    cluster_infomap(g), 
    as.undirected(g), 
    layout=coords, 
    vertex.label = NA, 
    vertex.size = 5 
) 
} 

# with seed: equal results 
for (x in 1:2) { 
    set.seed(1) 
    plot(
    cluster_infomap(g), 
    as.undirected(g), 
    layout=coords, 
    vertex.label = NA, 
    vertex.size = 5 
) 
} 
+0

자세한 답변을 보내 주셔서 감사합니다. cluster.infomap 함수를 호출하기 전에 set.seed 할 필요가 있음을 알았다. 그것으로 문제가 해결됩니다. 감사! – asmac