统计网络常用指标

import networkx as nx
import igraph as ig
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
import community

#平均聚类系数
def juleimain(matrix):
    def julei(node,matrix):
        linjiedianlist=[]
        jiedianshu=0
        bianshu=0
        for j in range(matrix.shape[0]):
            if matrix[node,j]>0:
                jiedianshu=jiedianshu+1
                linjiedianlist.append(j)
        for i in linjiedianlist:
            for j in linjiedianlist:
                if matrix[i,j]>0:
                    bianshu=bianshu+1
        try:
            juleixishu=2*bianshu/jiedianshu/(jiedianshu-1)
        except:
            juleixishu=0
        return juleixishu

    juleilist = []
    for i in range(matrix.shape[0]):
        julei2 = julei(i, matrix)
        juleilist.append(julei2)
    pingjunjulei = np.mean(juleilist)
    return pingjunjulei


#网络指标计算
# G为networkx生成的图。
def maingraph(G):
    d = nx.to_pandas_edgelist(G).values
    g = ig.Graph(d)
    jiedianshu= g.vcount()#节点数
    #print('节点数:',jiedianshu)
    bianshu= g.ecount()#边数
    #print('边数:',bianshu)
    #平均度计算
    jiediandu=pd.DataFrame(columns=['节点名称','度','入度','出度'])
    du=0
    for v in g.vs:
        deg = g.degree(v)#度
        degin = g.indegree(v)#入度
        degout = g.outdegree(v)#出度
        jiedian2 = str(v)
        n2 = jiedian2.index("{")
        n3 = jiedian2.index("}")
        jiedian3 = jiedian2[n2 + 1:n3]
        jiedian4 = jiedian3.replace("'name':", "")
        jiedian5 = jiedian4.replace(" '", "")
        jiedian6 = jiedian5.replace("'", "")
        jiedian = str(jiedian6)#节点名称
        du=du+deg
    #平均度
    try:
        maindeg=du/jiedianshu/2
    except:
        maindeg=0
    #print('平均度:', maindeg)

    #平均路径长度
    averagepath=g.average_path_length()
    #print('平均路径长度',averagepath)
    #网络密度
    midu=g.density()
    #print('网络密度',midu)
    #网络直径
    zhijing=g.diameter()
    #平均聚类系数
    matrix=g.get_adjacency()
    #print(matrix)
    #matrix=np.array(matrix)
    pingjunjulei=juleimain(matrix)
    # 同配系数
    try:
        tongxi= nx.degree_assortativity_coefficient(G)
    except:
        tongxi ='2'
    # 计算模块度
    part = community.best_partition(G)
    mod = community.modularity(part, G)
    return jiedianshu,bianshu,maindeg,averagepath,midu,zhijing,pingjunjulei,tongxi,mod
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言是一种广泛应用于数据分析和统计建模的编程语言。它提供了丰富的统计分析函数和库,可以用于处理和分析各种类型的数据,包括网络数据。 在R语言中进行网络数据统计分析,可以使用一些专门的包和函数。以下是一些常用的R包和函数,用于网络数据的统计分析: 1. igraph包:igraph是一个强大的网络分析工具包,提供了许多用于网络分析的函数和算法。它可以用于构建、可视化和分析网络结构,计算网络中的中心性指标、社区检测等。 2. statnet包:statnet是一个专门用于社会网络分析的R包,提供了一系列用于网络数据统计分析的函数和工具。它可以用于估计网络模型、进行网络推断、计算网络中的各种指标等。 3. networkD3包:networkD3是一个用于创建交互式网络可视化的R包。它可以将网络数据可视化为动态和可交互的图形,使得用户可以更好地理解和分析网络结构。 4. sna包:sna是一个用于社会网络分析的R包,提供了一些常用的社会网络分析方法和指标。它可以用于计算网络中的中心性指标、路径长度、社区结构等。 5. visNetwork包:visNetwork是一个用于创建网络可视化的R包,它可以将网络数据可视化为静和动态的图形。它提供了丰富的可化选项,可以自定义节点和边的样式、颜色、标签等。 以上是一些常用的R包和函数,用于网络数据的统计分析。你可以根据具体的需求选择适合的包和函数进行分析。如果你有具体的问题或需要更详细的介绍,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值