centrality
Table of Contents
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")
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)
- 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")
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)
>> 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
- 중요한 노드에 연결된 노드가 중요하다는 관점
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
centrality.txt · Last modified: 2019/11/12 16:04 by hkimscil