最小生成树允许过滤原始邻接矩阵,从而揭示内部结构。在网络设计、物流运输、电力传输、集群分析等实际问题中具有广泛运用。以下例子以上证A股为研究对象。最小生成树过滤掉大部分连接,N个结点的最小生成树网络有“N-1"条连接边。
以结点之间的相关系数构建最小生成树网络为例:
方法一:
#前面求出相关系数矩阵,此处省略。
D_omegashrinkhat <- (1-abs(omegashrinkhat))^0.5 #将相关矩阵转化为距离矩阵
D_Tri0 <- D_omegashrinkhat
D_Tri0[lower.tri(D_Tri0)] <- 0
D_Tri0remove0 <- D_Tri0[- which(D_Tri0==1)] #去除对角线元素
D_Tri0remove0 <- D_Tri0remove0[- which(D_Tri0remove0==0)] #去除零元素
D_orderTri0remove0<-D_Tri0remove0[order(D_Tri0remove0)] #对距离矩阵的边进行升序排序
ver_name <- c(paste0('ver',1:147)) #147个结点
nodes <- as.vector(ver_name) #创建存放顶点的向量
Edges <- data.frame(start=character(),end=character(),distance=numeric(),stringsAsFactors = F)
for(i in 1:length(D_orderTri0remove0)){
locsi <- which(D_Tri0==D_orderTri0remove0[i],arr.ind = T)
Edges[i,] <- c(ver_name[locsi[1]] , ver_name[locsi[2]] , D_orderT