#r #igraph
Вопрос:
Я хотел бы вычислить компоненты ограничения Берта, обсуждаемые здесь Бертом.
Команда ограничения Igraph вычисляет оценку ограничения Берта:
rm(list=ls())
library(igraph)
g <- graph.formula( "A"--------"B":"E":"F":"EGO",
"B"--------"A":"D":"EGO",
"C"--------"EGO",
"D"--------"B":"EGO",
"E"--------"A":"EGO",
"F"--------"A":"EGO",
"EGO"-"A":"B":"C":"D":"E":"F")
coords <- layout_nicely(g)
V(g)$label <- V(g)$name
g$layout <- coords
plot(g)
constraint(g)
Ограничение возвращает только общую оценку ограничения.
с
и
является силой (= весом) связи между двумя вершинами i и j.
является прямой связью между вершинами i и j (доля соединений от i до j всех соединений i).
является суммой косвенных связей между вершинами i и j (соединений с другими вершинами q, которые оба связаны с i и j).
Я хочу работать с отдельными компонентами c-размера, c-плотности и c-иерархии.
Берт изменяет уравнение ограничения следующим образом:
Первый член-размер c.
The second term is c-density.
The third term is c-hierarchy.
I want to compute the three components of constraint for each vertex of the network.
I could think of two solutions, both of which are beyond my capabilities.
Maybe there is a way to harness these values directly from igraph’s constraint command.
Alternatively, one would have to compute these values manually.
For the example above, I have computed these values by hand using Excel:
node | degrees | constraint | c-size | c-density | c-hierarchy |
---|---|---|---|---|---|
A | 4 | 0.60 | 0.25 | 0.23 | 0.12 |
B | 3 | 0.64 | 0.33 | 0.24 | 0.07 |
C | 1 | 1.00 | 1.00 | 0.00 | 0.00 |
D | 2 | 0.78 | 0.50 | 0.25 | 0.03 |
E | 2 | 0.73 | 0.50 | 0.21 | 0.02 |
F | 2 | 0.73 | 0.50 | 0.21 | 0.02 |
эго | 6 | 0.40 | 0.17 | 0.16 | 0.07 |
сила | прямое влияние j | косвенное влияние j | комбинированное влияние j | ||||
---|---|---|---|---|---|---|---|
От | Для | ||||||
A | B | 1 | 0.25 | 0.25 | 0.17 | 0.04 | 0.09 |
A | E | 1 | 0.25 | 0.25 | 0.17 | 0.04 | 0.09 |
A | F | 1 | 0.25 | 0.25 | 0.17 | 0.04 | 0.09 |
A | эго | 1 | 0.25 | 0.25 | 1.33 | 0.33 | 0.34 |
B | A | 1 | 0.33 | 0.33 | 0.17 | 0.06 | 0.15 |
B | D | 1 | 0.33 | 0.33 | 0.17 | 0.06 | 0.15 |
B | эго | 1 | 0.33 | 0.33 | 0.75 | 0.25 | 0.34 |
C | эго | 1 | 1.00 | 1.00 | 0.00 | 0.00 | 1.00 |
D | B | 1 | 0.50 | 0.50 | 0.17 | 0.08 | 0.34 |
D | эго | 1 | 0.50 | 0.50 | 0.33 | 0.17 | 0.44 |
E | A | 1 | 0.50 | 0.50 | 0.17 | 0.08 | 0.34 |
E | эго | 1 | 0.50 | 0.50 | 0.25 | 0.13 | 0.39 |
F | A | 1 | 0.50 | 0.50 | 0.17 | 0.08 | 0.34 |
F | эго | 1 | 0.50 | 0.50 | 0.25 | 0.13 | 0.39 |
эго | A | 1 | 0.17 | 0.17 | 1.33 | 0.22 | 0.15 |
эго | B | 1 | 0.17 | 0.17 | 0.75 | 0.13 | 0.09 |
эго | C | 1 | 0.17 | 0.17 | 0.00 | 0.00 | 0.03 |
эго | D | 1 | 0.17 | 0.17 | 0.33 | 0.06 | 0.05 |
эго | E | 1 | 0.17 | 0.17 | 0.25 | 0.04 | 0.04 |
эго | F | 1 | 0.17 | 0.17 | 0.25 | 0.04 | 0.04 |
Комментарии:
1. Я предполагаю , что вам , возможно, придется следовать формулам и написать конкретную функцию для вычисления
c-size
,c-density
иc-hierarchy
, поскольку, похоже, ни одна существующаяigraph
функция не может дать вам немедленных результатов.2. Я мог бы сделать это вручную в Excel, но для автоматизации этого мне нужно было бы получить доступ к списку ребер, как во второй таблице, или получить доступ к матрице смежности. Я надеялся, что найдется способ заглянуть под колпак команды ограничения igraph и адаптировать код.
3. Может быть, вы можете свериться с
C
исходным кодомconstraint
. Однако, если вы хотите напрямую использовать код R, я не думаю, что это возможно.