绘图

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  .
#绘制无向有权图
library(igraph)

# Define the adjacency matrix and set column/row names
A <- 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(A) <- rownames(A) <- c("v1", "v2", "v3", "v4", "v5")

# Set seed for reproducibility
set.seed(10)

# Create graph from adjacency matrix with proper weights and no duplicate edges
network1 <- graph_from_adjacency_matrix(A, mode = "undirected", weighted = TRUE, 
                                       diag = FALSE)

# Plot the graph with edge labels
plot(network1, edge.label = E(network1)$weight)

R1<-get.adjacency(network1)
R1
## 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  .
#绘制无权有向图
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, mode = "directed")
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))
edge_list
##      [,1] [,2]
## [1,]    1    2
## [2,]    1    4
## [3,]    2    3
## [4,]    3    5
## [5,]    4    5
## [6,]    5    1
g <- network::network(edge_list)
#network4<-graph_from_adjacency_matrix(g)
plot(network)

degree(network)
## v1 v2 v3 v4 v5 
##  3  2  2  2  3
graph.strength(network)
## v1 v2 v3 v4 v5 
##  3  2  2  2  3
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
plot(network1,edge.label = E(network1)$weight)

特征向量中心性

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
round(ev$vectors[,1],2)
## [1] -0.53 -0.36 -0.36 -0.43 -0.53
round(-ev$vectors[,1]/0.53,2)
## [1] 1.00 0.68 0.68 0.81 1.00

Katz中心性

library(MASS)
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