0

我想进行一些 sna 分析。我使用 RStudio 和 igraph 包。我的输入数据来自文本文件(从 excel 创建为制表符分隔的文本文件)。数据文件有 3 列。第一行和第二行是网络数据(顶点),第三行是每条边的权重。我使用如下所示的机场连接数据:

1 54 28382(机场 ID 始发机场/机场 ID 目的地机场/乘客编号作为重量)

我用这些命令加载了 id:

 USAN_num1 <- read.table('USAN_num.txt', header=T)
 USAN_g_num1 <- graph.data.frame(USAN_num1)
> summary(USAN_g_num1)
Vertices: 626 
Edges: 7078 
Directed: TRUE 
No graph attributes.
Vertex attributes: name.
Edge attributes: PAX.

数据如下所示:

  ORIGN DESTN  PAX
1     1   604  646
2     2    42 3736
3     2   118 5189

现在发生的问题:当我用 igraph 检查它时,我的网络包含 6 个不同的集群。即使我创建了我的网络的图形图片,它也有 6 个独立的部分。这完全没有意义,因为我的数据应该连接到一个网络。我检查了我的数据集,确实没有不同的子网络。

这是我得到的集群特征:

$csize
[1]   5 608   2   4   5   2

$no
[1] 6

一个小集群中的一个顶点甚至是一个巨大的机场,它应该连接到许多其他的,而不仅仅是一个其他的......

更新:我现在更新到最新的 igraph 版本,但它仍然无法正常工作。我在此处将数据的示例部分作为 .txt 文件上传:USAN_numS.txt

如果有人知道我做错了什么,那就太好了。谢谢

4

1 回答 1

1

因此,正如我在上面的评论中所说,一个可能的混淆来源是您的图形具有符号顶点名称,这些名称实际上是数字并且与 igraph 的顶点 ID 不匹配。解决方法是删除顶点名称,或者在创建图形时明确指定它们,以便它们与 igraph 顶点 ID 匹配。

但是你的图确实有多个组件,看下面的代码,我在原始表中检查它,两个顶点在表中只出现一次,它们本身就形成了两个的组件。

也许网络真的有多个组件,或者文件有错误。

library(igraph)
USAN_num1 <- read.table('USAN_numS.txt', header=T)
USAN_g_num1 <- graph.data.frame(USAN_num1,
                   vertices=data.frame(id=1:max(USAN_num1[,1:2])))    
clu <- clusters(USAN_g_num1)
clu$csize
## [1]   5 607   2   4   5   1   2   1
## The '1's appear because we counted the vertices that are 
## not in the table

## Third component has two vertices only, let's check them in the
## original table
which(clu$membership == 3)
## [1]  64 617

## List the table rows where any of these two appear
USAN_num1[ USAN_num1[,1] %in% c(64, 617) | USAN_num1[,1] %in% c(64, 617), ]
##     ORIGN DESTN PAX
## 691    64   617 636
于 2013-03-31T00:39:58.287 回答