Создание новых мер в игре - PullRequest
4 голосов
/ 01 ноября 2011

Я хочу создать функцию для эффективного размера Берта.Формула сводится к:

Эффективный размер = n - 2t / n

  • где t - количество связей (не считая связей с эго)
  • n - это количество людей в сети (не считая эго).

Я не совсем уверен, с чего начать с написания функций в / для igraph.

Дайте мне знать, будет ли полезна более подробная информация ...

Спасибо.

1 Ответ

7 голосов
/ 01 ноября 2011

Сначала смоделируйте базовый график:

require(igraph)

alters = 50
ties   = 10
set.seed(12345)
edgelist = rbind(0, 1:alters)
edgelist = cbind(edgelist, replicate(ties, sample(alters, 2)))
g = graph(edgelist, directed=F)

dev.new(width=5, height=5)
plot(g, layout=layout.kamada.kawai)

enter image description here

Затем напишите простую функцию для расчета эффективного размера. (Функции здесь, которые работают на g, хорошо документированы в руководстве igraph и в различных примерах по сети.)

EffectiveSize <- function(g, ego=0) {
  n = neighbors(g, ego)
  t = length(E(g)[to(n) & !to(ego)])
  n = length(n)
  n - 2 * t / n
}
> EffectiveSize(g)
[1] 49.6
...