====== Centrality ======
''Centrality'' (중심성: 개인(node)의 위치가 전체에서 어디를 차지하는가? 얼마나 중요한가?) vs.
''Centralization'' (중앙(화)성: 얼마나 뭉쳐져 있는가?)
===== Closeness =====
setwd("D:/Users/Hyo/Cs-Kant/CS/Classes/sna_examples/sna_in_r")
# Social Network Analysis: Closeness Centrality
library(sna)
# The nearly linear network
L <- matrix(c(0,0,0,1,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
1,1,1,0,1,0,0,0,0,
0,0,0,1,0,1,0,0,0,
0,0,0,0,1,0,1,0,0,
0,0,0,0,0,1,0,1,0,
0,0,0,0,0,0,1,0,1,
0,0,0,0,0,0,0,1,0),byrow=T,nrow=9)
gplot(L, displaylabels = T, vertex.cex = 1, label.cex = 2, edge.col="blue",
boxed.labels = F, arrowhead.cex = 1, mode = "kamadakawai")
{{centrality_suzuki.png}}
Node 1 은 다른 node와 얼마나 가까운가?
= sum of geodesic distance to others / n
= (2 + 2 + 1 + 2 + 3 + 4 + 5 + 6) / 8 = 25 / 8 의 역수
=> 8 / 25 = 0.32
Node 4 은 다른 node들과 얼마나 가까운가?
= sum of geodesic distance to others / n
= (1 + 1 + 1 + 1 + 2 + 3 + 4 + 5) / 8 = 18 / 8 의 역수 (가까운 거리의 합이 작으므로 이를 크게 하기 위해서)
=> 8 / 18 = 0.44
Node 1 과 Node 4 중 어느 것이 중심성이 높은가?
위의 방법으로 각 노드의 중심성 (closesness) 구하기:
round(closeness(L),2) # Type 1 closeness
[1] 0.32 0.32 0.32 0.44 0.47 0.44 0.38 0.31 0.24
다른 방법의 closesness
round(closeness(L,cmode="suminvundir"),2) # Type 2 closeness
[1] 0.43 0.43 0.43 0.66 0.57 0.54 0.51 0.46 0.35
# Knoke's information network (Hanneman and Riddle, 2005)
knoke.infor <- as.matrix(read.table("knoke-infor.txt",header=T))
rownames(knoke.infor) <- colnames(knoke.infor)
gplot(knoke.infor, displaylabels=T, vertex.cex=2, edge.col="blue", boxed.labels=F, arrowhead.cex=1.25)
{{knoke_info.png}}
- COUN: county government
- COMM: chamber of commerce
- EDUC: board of education
- INDU: Industry development agency
- MAYR: Mayor
- WRO: Women Right Organization group
- NEWS: Newspaper
- WAY: United Way (private organization)
- WELF: Welfare
- WEST: West group (private organization)
for out link (information out)
round(closeness(knoke.infor,cmode="suminvdir"),2)
[1] 0.70 0.89 0.83 0.70 0.94 0.63 0.65 0.81 0.65 0.78
for in link (information in)
round(closeness(t(knoke.infor),cmode="suminvdir"),2)
[1] 0.76 0.94 0.72 0.78 0.94 0.46 1.00 0.59 0.78 0.61
===== Betweenness =====
노드 k에 대해서 노드 i 과 j 의 최단 경로 사이에 끼이게 되는 경우의 총합
# Social Network Analysis: Betweenness Centrality
library(sna)
# The nearly linear network
L <- matrix(c(0,0,0,1,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,
1,1,1,0,1,0,0,0,0,
0,0,0,1,0,1,0,0,0,
0,0,0,0,1,0,1,0,0,
0,0,0,0,0,1,0,1,0,
0,0,0,0,0,0,1,0,1,
0,0,0,0,0,0,0,1,0),byrow=T,nrow=9)
gplot(L, displaylabels=T, vertex.cex=1, label.cex=1,
edge.col="red", boxed.labels=F, arrowhead.cex=1,
mode="kamadakawai")
betweenness(L)
[1] 0 0 0 36 32 30 24 14 0
# The star network
S <- matrix(c(0,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0),byrow=T,nrow=9)
gplot(S, displaylabels=T, vertex.cex=1, label.cex=1,
edge.col="red", boxed.labels=F, arrowhead.cex=1,
mode="kamadakawai")
{{star_between.png}}
betweenness(S)
[1] 56 0 0 0 0 0 0 0 0
# Two stars network
twostars <- matrix(0,13,13)
edges <- matrix(c(1,2,1,3,1,4,1,5,1,6,
6,7,7,8,8,13,9,13,10,13,11,13,12,13),
byrow=T,ncol=2)
twostars[edges] <- 1
twostars <- twostars + t(twostars) - twostars * t(twostars)
gplot(twostars, displaylabels=T, vertex.cex=1, label.cex=1,
edge.col="red", boxed.labels=F, arrowhead.cex=1, mode="kamadakawai")
betweenness(twostars)
closeness(twostars)
{{two_star_network.png}}
>> betweenness(twostars)
[1] 76 0 0 0 0 70 72 70 0 0 0 0 76
> round(closeness(twostars),2)
[1] 0.35 0.27 0.27 0.27 0.27 0.39 0.40 0.39 0.27 0.27 0.27 0.27 0.35
===== Eigenvector =====
__Eigenvector Centrality__
* 중요한 노드에 연결된 노드가 중요하다는 관점
* That is, the centrality of each node i is proportional to the sum of the centrality of its neighbors.
rownames(knoke.infor)
> rownames(knoke.infor)
[1] "COUN" "COMM" "EDUC" "INDU" "MAYR" "WRO" "NEWS" "UWAY" "WELF" "WEST"
round(evcent(knoke.infor),2)
> round(evcent(knoke.infor),2)
[1] 0.25 0.41 0.36 0.26 0.47 0.15 0.22 0.35 0.21 0.33
round(evcent(t(knoke.infor)),2)
> round(evcent(t(knoke.infor)),2)
[1] 0.30 0.45 0.21 0.34 0.45 0.04 0.46 0.18 0.28 0.13