我想进行一些sna分析。我使用RStudio和igraph包。 我的输入数据来自文本文件(从excel创建,作为选项卡分隔的文本文件)。 数据文件有3列。第1行和第2行是网络数据(顶点),第3行是每条边的权重。我使用的机场连接数据如下:
1 54 28382(机场ID原始机场/机场ID目的地机场/ Passanger号码作为重量)
我使用以下命令加载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
如果有人知道我做错了什么,那会很棒。 谢谢答案 0 :(得分: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