【问题标题】:R: understanding different graph functionsR:理解不同的图函数
【发布时间】:2021-03-10 20:03:01
【问题描述】:

我正在尝试了解 R (igraph) 中可用的一些图形函数。在这里,我创建了一些数据和图表:

library(igraph)
file <-data.frame(

"source" = c(
    "John",
    "John",
    "Tim",
    "Tim",
    "Alex",
    "Andrew",
    "Andrew",
    "Andrew",
    "Oliver",
    "Oliver",
    "Oliver",
    "Matt",
    "Steven",
    "Steven",
    "Steven",
    "Matt",
    "Charles",
    "Charles",
    "Charles",
    "Sean",
    "Ted",
    "Ryan",
    "Ryan",
    "Ryan",
    "Ted",
    "Phil",
    "Phil",
    "Phil",
    "Sam",
    "Toby",
    "Toby",
    "Donald",
    "Donald",
    "Donald",
    "Mitch",
    "Mitch",
    "Mitch"),

"target" = c("Sam",
             "Tim",
             "Alex",
             "Matt",
             "Andrew",
             "Sean",
             "Peter",
             "Ben",
             "Kevin",
             "Thomas",
             "Dave",
             "Steven",
             "Kenny",
             "Derek",
             "CJ",
             "Charles",
             "Ivan",
             "Kyle",
             "Andrew",
             "Ted",
             "Ryan",
             "Daniel",
             "Chris",
             "Scott",
             "Phil",
             "Henry",
             "George",
             "Paul",
             "Toby",
             "Donald",
             "Mitch",
             "Jack",
             "Luke",
             "Myles",
             "Elliot",
             "Harvey",
             "Owen")

)

graph <- graph.data.frame(file, directed=F)
graph <- simplify(graph)
plot(graph)

我的一些问题:

  1. 我可以运行 Louvain 聚类算法:

https://igraph.org/r/doc/cluster_louvain.html

louvain = cluster_louvain(graph)
plot(louvain,graph)

但是,似乎没有一种方法可以更改 Louvain 聚类算法的“分辨率”。我做了一些研究,似乎不可能。我说的对吗?

  1. 聚类系数

我尝试阅读了功能说明,但不明白以下功能有什么区别,谁能给我解释一下?

assortativity.degree(graph)
[1] -0.666401
 transitivity(graph)
[1] 0
  1. “比较”功能:compare communities from graphs with different number of vertices

我正在尝试理解“比较”功能。在我看来,它应该在同一张图上比较两种不同聚类算法的结果。例如。假设我在同一张图上运行“Louvain Clustering”和“fast greedy”:

 a = cluster_louvain(graph)
 b = fastgreedy.community(graph)

现在我使用比较函数:

#part 1     
compare(a,b, method="rand")
    [1] 0.940256

#part2
     compare(membership(a), membership(b))
    [1] 0.460781

似乎在第 1 部分中:“比较”功能正在比较两个图上的整体聚类算法。在第 2 部分:“比较”功能是比较各个社区结构。我对么?我认为“比较”功能会比较个人观察结果?

谢谢

【问题讨论】:

    标签: r graph data-visualization cluster-analysis nodes


    【解决方案1】:
    1. igraph 提供的 Louvain 的实现似乎没有对分辨率进行任何控制,我认为你是对的。不过,其他一些实现确实如此,例如在Gephi。不过,Louvain 会输出一个树状图,因此您始终可以选择最合适的切割。

    2. 聚类系数和度相配性是两个完全不同的度量。前者与图中闭合与开放三元组的比率有关(参见WP),而后者类似于为由直接连接顶点的度数构成的两个数值系列计算的相关性(参见WP),所以它与二元组有关,而不是三元组。

    3. 如果您查看igraph's documentation,您会发现该函数可以采用communities 对象(您的第一种情况),但也可以采用会员向量(第二种情况)。函数对它们进行类似处理。我想,在您的示例中,输出不同,因为在第一种情况下,您表示要计算 Rand 指数,而在第二种情况下,您让函数使用默认度量(可能不是 Rand 指数)。

    【讨论】:

      猜你喜欢
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2020-05-11
      • 2017-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多