问题标签 [sna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2277 浏览

r - R - 匹配不同长度矩阵的行和列

我目前的问题如下。我有一个有向 1-mode 边缘列表,表示在某一年参与联合项目的演员对,可能看起来像:

现在我只需要一个特定年份的子集。并非所有参与者都在这一年活跃,因此子集的维度不同。对于后续的网络分析,我需要一个加权的有向邻接矩阵,所以我使用 [network package] 的选项来创建它。我首先将其加载为网络对象,然后将其转换为邻接矩阵。

结果矩阵看起来有点像

到目前为止,一切都很好。我现在的问题是:对于我计划做的进一步分析,我需要一个具有相同维度和顺序的每一年的邻接矩阵。这意味着来自初始数据集的所有参与者都必须是相应年份的矩阵的行名和列名,但矩阵应该只包含这一特定年份的观察对。我希望我的问题很清楚。我很欣赏任何建设性的解决方案。

我的想法 ATM 如下:我创建了一个初始数据集和缩减数据集的矩阵。然后我将那里的所有矩阵值设置为零。然后我以某种方式将它与缩减矩阵匹配,并在正确的行和列中填充正确的值。不幸的是,我不知道这怎么可能。

有人知道如何解决这个问题吗?

0 投票
1 回答
3867 浏览

python - python中将edgelist导入igraph的格式

igraph 接受的用于导入 python 的 edgelist 格式是什么?包含我的加权边缘的文本文件应该是什么样的?

我以前使用过 igraph 和 R,但是在我需要使用的机器上没有安装有效的 R ——所以我被困在 python 中。

我有一个 egelist.txt 是这样的:

...其中值采用(源、目标、权重)形式。

我将如何在 python 中导入它?或者我应该重新格式化我的输入?

我在试探

我不知道如何设置如何告诉导入语句期望我的列的顺序是什么,以及我对文档的理解(http://hal.elte.hu/~nepusz/development/igraph/tutorial/ tutorial.html) 是假设我有 321,321 个节点在运行,而不是将“321321”作为节点的标记 ID。

0 投票
1 回答
1598 浏览

python - igraph 以 Ncol() 格式导入 edgelist 后填充节点属性?

我不确定这是合并还是两个单独的导入,或者我应该完全重新考虑。我最初是在玩 gephi 之后开始使用 igraph,在那里我总是会进行两阶段导入,首先是边缘,然后是节点数据。这是 igraph 的明智策略吗?

所以,感谢最近的一些帮助,我刚刚导入了一个看起来像这样的边缘列表:

...使用导入命令

我想向这个 edgelist 导入为我生成的节点添加属性。这些将类似于...

如何将此数据附加到当前图表?我看到许多用于导入复杂边缘列表的格式,但没有用于节点列表的格式。我错过了什么?是否没有自动将节点数据附加到适当节点的功能?

如果没有,有人可以推荐一种更简单的方法来将节点数据适当地填充到现有图表中吗?

我的直觉是……

但这看起来非常笨拙。

0 投票
7 回答
521144 浏览

r - 下标越界 - 一般定义和解决方案?

使用 RI 时经常收到错误消息“下标越界”。例如

这会产生以下错误Error in reach_mat[i, alter] = 1 : subscript out of bounds

但是,我的问题不是关于这段特定的代码(即使它也有助于解决这个问题),但我的问题更笼统:

  • 下标越界错误的定义是什么?是什么原因造成的?
  • 有没有解决这种错误的通用方法?
0 投票
1 回答
16213 浏览

r - 如何使用 igraph 或 tnet 在 R 中创建二分网络

我有一个双模式网络的边缘列表,类似于:

我想在 R 中对此进行分析,但似乎我尝试的一切都失败了。将其转换为单一模式网络会遇到内存限制,我无法弄清楚如何在 igraph 或 tnet 中将其分析为二分。

在 igraph 中,bipartite.projection给了我所有FALSE,在使用创建的 igraph 对象上

在 tnet 上,我无法将 igraph 网络转换为 tnet 网络,并且当我尝试使用原始数据帧时,它会因为图中的重复而拒绝。

因此,我们将非常感谢您对以下任何问题的回答:

  1. 如何使用该bipartite.mapping功能?
  2. 如何将 igraph 对象输入 tnet?
  3. 如果一切都失败了,我该如何将具有重复边的数据框输入到 tnet 中?

抱歉,如果这些是基本问题,但文档很少。

编辑

例子:

0 投票
1 回答
162 浏览

r - R SNA 的 Tnet 问题

我在 R 中遇到了两个关于 tnet 函数的意外错误。我的边缘列表:

如果我尝试使其成为一种模式:

有任何想法吗?如果这里有人以前使用过 tnet,那么任何示例都会非常有帮助。

0 投票
1 回答
657 浏览

r - 将边缘值转换为 R 中的网络对象后保留在图中的边缘值

注 1:我使用的是 R 包“network”和“sna”

注意 2:我的原始数据是 .csv 文件中的 edgelist 格式。

我一直在寻找将边缘列表数据读入 R 的最佳方法。乍一看,这很简单。

当我要求网络返回边缘值 (get.edge.values) 时,它会返回正确的值。

但是,当我询问时summary(network),它只返回一个邻接矩阵,其中所有值都设置为 1(对角线除外)。即使它们的值为零,它们的值也是 1。

此外,试图获得像 degree(network) 这样的东西会返回错误的结果。

我一直在寻找这几天。一个可能的解决方案是使用network2<-as.matrix.network(netwerk1, matrix.type="adjacency", attrname="val"). 这行得通。然而,问题是它不再是一个网络对象,而是一个矩阵类。结果,我无法向网络添加顶点属性。再次将 network2 转换回网络对象会丢失网络中的边缘值。

一些帮助将不胜感激。

最好的,弗雷德里克

0 投票
1 回答
387 浏览

r - igraph 没有显示我导入的正确网络

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

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

我用这些命令加载了 id:

数据如下所示:

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

这是我得到的集群特征:

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

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

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

0 投票
1 回答
3198 浏览

r - R: sna (social network analysis) package: data frame to adjacency matrix

I'm hoping for some more transformation help. Say I have a data frame:

where the row: source = i | target = j | weight = w denotes a directed edge of weight w from node i to node j. Given an arbitrary data frame of this form, I am looking for a procedure to investigate the components of the induced graph G. Having read a comment by Ben on this question by me:

R: Gephi: manipulating dataframe to use with write.gexf

I checked out the package sna which seemed to have what I was looking for in the form of the function component.dist. So my question is 'how can I transform my data frame into a suitable form for the dat argument of the component.dist function (or is there a more 'optimum' way of approaching this problem?)' I tried the following code:

but this has obvious shortfalls (e.g. it doesn't form an nrow(df) by nrow(df) matrix).

Thanks for any help.

0 投票
1 回答
477 浏览

r - 排列矩阵 - 网络图

我试图制作一个网络图,使用gplot来自library(sna). 该图将表示不同字段之间的链接。我有以下数据:

其中“MTM”、“FI”和“MCLI”是“感兴趣的领域”,每一行都是一个不同的项目,有一些/任何/没有共同的领域。我怎样才能将这些数据转换成这样?

我有兴趣在网络图中将字段表示为“节点”,将连接表示为“边”。这可能有助于代表最“流行”和相互关联的领域。这些数据有可能吗?

提前致谢!

编辑:我遇到了这个解决方案,这对于我想要的可能没问题: