#绘图

library(igraph)
A<-matrix(c(0,1,0,1,1,
            1,0,1,0,0,
            0,1,0,0,1,
            1,0,0,0,1,
            1,0,1,1,0),ncol=5, nrow=5)
colnames(A)=rownames(A)=c("v1","v2","v3","v4","v5")


set.seed(10)

#绘制无向图
network<-graph_from_adjacency_matrix(A,mode = 'upper')
plot(network)

R<-get.adjacency(network)

R
## 5 x 5 sparse Matrix of class "dgCMatrix"
##    v1 v2 v3 v4 v5
## v1  .  1  .  1  1
## v2  1  .  1  .  .
## v3  .  1  .  .  1
## v4  1  .  .  .  1
## v5  1  .  1  1  .
#绘制无向有权图
A1<-matrix(c(0,1,0,4,6,
            1,0,2,0,0,
            0,2,0,0,3,
            4,0,0,0,5,
            6,0,3,5,0),ncol=5, nrow=5)
colnames(A1)=rownames(A)=c("v1","v2","v3","v4","v5")


set.seed(10)

#绘制无向加权图
network1<-graph_from_adjacency_matrix(A1,mode = 'upper')
plot(network1)

R1<-get.adjacency(network1)
R1
## 5 x 5 sparse Matrix of class "dgCMatrix"
##    v1 v2 v3 v4 v5
## v1  .  1  .  4  6
## v2  1  .  2  .  .
## v3  .  2  .  .  3
## v4  4  .  .  .  5
## v5  6  .  3  5  .
#绘制无权有向图
A2<-matrix(c(0,1,0,1,0,
            0,0,1,0,0,
            0,0,0,0,1,
            0,0,0,0,1,
            1,0,0,0,0),ncol=5, nrow=5)
colnames(A2)=rownames(A2)=t(c("v1","v2","v3","v4","v5"))


set.seed(10)

#绘制无向加权图
network3<-graph_from_adjacency_matrix(A2)
plot(network3)

R2<-get.adjacency(network3)
R2
## 5 x 5 sparse Matrix of class "dgCMatrix"
##    v1 v2 v3 v4 v5
## v1  .  .  .  .  1
## v2  1  .  .  .  .
## v3  .  1  .  .  .
## v4  1  .  .  .  .
## v5  .  .  1  1  .
library(network)
edge_list <- cbind(c(1,1,2,3,4,5), c(2,4,3,5,5,1))
g <- network::network(edge_list)

degree(network)
## v1 v2 v3 v4 v5 
##  3  2  2  2  3
graph.strength(network1)
## v1 v2 v3 v4 v5 
## 11  3  5  9 14

特征向量中心性

A<-matrix(c(0,1,0,1,1,
            1,0,1,0,0,
            0,1,0,0,1,
            1,0,0,0,1,
            1,0,1,1,0),ncol=5, nrow=5)
A
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    0    1    0    1    1
## [2,]    1    0    1    0    0
## [3,]    0    1    0    0    1
## [4,]    1    0    0    0    1
## [5,]    1    0    1    1    0
ev <- eigen(A)

ev$values
## [1]  2.481194e+00  6.888922e-01 -1.776357e-15 -1.170086e+00 -2.000000e+00
which.max(ev$values)
## [1] 1
ev$values[which.max(ev$values)]
## [1] 2.481194
ev$vectors
##            [,1]       [,2]          [,3]       [,4]          [,5]
## [1,] -0.5298991  0.1793384  5.000000e-01  0.4324866  5.000000e-01
## [2,] -0.3577512 -0.5764509  5.000000e-01 -0.1992947 -5.000000e-01
## [3,] -0.3577512 -0.5764509 -5.000000e-01 -0.1992947  5.000000e-01
## [4,] -0.4271323  0.5206574 -2.220446e-16 -0.7392387  1.665335e-16
## [5,] -0.5298991  0.1793384 -5.000000e-01  0.4324866 -5.000000e-01
ev$vectors[,1]
## [1] -0.5298991 -0.3577512 -0.3577512 -0.4271323 -0.5298991
round(-ev$vectors[,1]/0.53,2)
## [1] 1.00 0.68 0.68 0.81 1.00

Katz中心性

library(MASS)
## Warning: package 'MASS' was built under R version 4.1.2
B<-1/5 *A
B
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  0.0  0.2  0.0  0.2  0.2
## [2,]  0.2  0.0  0.2  0.0  0.0
## [3,]  0.0  0.2  0.0  0.0  0.2
## [4,]  0.2  0.0  0.0  0.0  0.2
## [5,]  0.2  0.0  0.2  0.2  0.0
e<- rep(1, 5); 
I<-diag(e) #单位阵
I
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    0    1    0    0    0
## [3,]    0    0    1    0    0
## [4,]    0    0    0    1    0
## [5,]    0    0    0    0    1
beta<-c(1,1,1,1,1)
beta
## [1] 1 1 1 1 1
ginv(I-B)  #求矩阵I-B的逆矩阵
##           [,1]       [,2]       [,3]       [,4]      [,5]
## [1,] 1.1748401 0.25799574 0.11513859 0.29850746 0.3176972
## [2,] 0.2579957 1.10021322 0.24307036 0.07462687 0.1151386
## [3,] 0.1151386 0.24307036 1.10021322 0.07462687 0.2579957
## [4,] 0.2985075 0.07462687 0.07462687 1.11940299 0.2985075
## [5,] 0.3176972 0.11513859 0.25799574 0.29850746 1.1748401
round(ginv(I-B)%*%beta,1)
##      [,1]
## [1,]  2.2
## [2,]  1.8
## [3,]  1.8
## [4,]  1.9
## [5,]  2.2