如何在R语言中实现最小生成树网络?

最小生成树允许过滤原始邻接矩阵,从而揭示内部结构。在网络设计、物流运输、电力传输、集群分析等实际问题中具有广泛运用。以下例子以上证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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值