#r #igraph #network-analysis
#r #igraph #сетевой анализ
Вопрос:
Как и в вопросе, у меня есть четыре разные сети, которые я загружаю из 4 разных файлов csv. Каждый из них терпит неудачу, когда я вычисляю центроид с помощью библиотеки centiserve. С другой стороны, если я создаю случайную сеть ER, вычисление центроида работает.
Я изучил функцию центроида и, в конце концов, обнаружил, что она проверяет, подключена ли сеть с помощью функции igraph this is.connected(g, mode="strong")
Согласно википедии, граф является сильно связанным, если все узлы доступны из случайного узла в сети. С этой целью я вычислил компоненты моей сети, используя decompose()
функцию igraph, и все сети имеют один связанный компонент: length(decompose(net))
всегда равен 1. Но centroid(net)
всегда возвращает ошибку.
В конце концов, возникает вопрос: что именно ищет эта функция, когда проверяет, подходит ли график? Почему в моей сети есть один подключенный компонент, но is.connected()
функция igraph возвращает False ?
Некоторый код:
#load file
finalNet <- read.csv("net.csv", sep=",", header=T)
#get network
net <- graph_from_data_frame(finalNet[, c(1, 2)])
#decompose says that there is a single connected component
length(decompose(net))
#while centroid does not work!
centroid(net)
сеть доступна здесь
Комментарии:
1. Можете ли вы предоставить минимальный воспроизводимый пример?
2. @Christoph работает над этим.
3. @Кристоф, вот так. нерабочий код теперь доступен вместе с сетью.
4. Обратите внимание, что
decompose
по умолчанию используются слабые компоненты.is.connected
проверяет сильные компоненты.5. @Szabolcs на самом деле я этого не пробовал. И, да, теперь я могу сказать, что разница очевидна. Прежде чем задавать этот вопрос, его не было!
Ответ №1:
хорошо, я нашел ответ. Проблема в том, что функция graph_from_data_frame создает направленную сеть, если не указано иное.
Следовательно, решение, позволяющее заставить мой пример работать, состоит в том, чтобы загрузить сеть как ненаправленную:
net <- graph_from_data_frame(finalNet[, c(1, 2)], directed=F)