问题标签 [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 投票
0 回答
370 浏览

graph-theory - 如何计算 1.5 阶图的邻域?

我有一个图形对象,g并想在1.5中创建g_sub一组顶点的邻域的子图。v_matchesgorder

换句话说,当且仅当这些顶点也连接到顶点时,我想找到哪些顶点连接到v_matches(顺序 1),哪些顶点连接到 order==1顶点。v_matches

在非技术术语中,我想找到“朋友的朋友(订单 2),前提是这些朋友也是我的朋友(订单 1.5)”。我找不到在igraph.

我编写的代码计算 2 的邻域v_matches,但我希望它计算 1.5 的顺序。很感谢任何形式的帮助。

v_matches <- which(V(g)$SomeVertexAttribute==SomeValue)

g_sub <- induced.subgraph(graph=g,vids=unlist(neighborhood(g,order=2,nodes=v_matches)))

更新:这是我编写的一个函数和一些代码,用于将order=2子图转换为order 1.5. 但是,我不相信它工作正常。

0 投票
1 回答
505 浏览

r - 使用 R 进行 SNA 分析以了解产品推荐

如果这个问题没有很好地表达,我们深表歉意。我正在试验我的新手 R 技能,以分析来自 SNAP 的电子商务数据的 SNA。我得到了关于产品共同购买信息的大型数据集。该数据集除了其他交易详细信息(包含有关产品的推荐详细信息)外,还包含有关 #FromNode 和 #ToNode 信息的详细信息。我希望测试一些网络参数的数据,如接近中心性、中介性、自我中心性、密度等。以下是我在数据集上尝试的第一个代码,我被错误击中。

.Call("R_igraph_graph_adjacency", adjmatrix, as.numeric(mode), 中的错误:在 structure_generators.c:272:非方阵,非方阵

数据集显示“有向图(每对无序节点保存一次)”。我不知道如何从这里开始。此外,如何将交易细节与这些节点和边分析联系起来(节点是产品,边是一个产品和共同购买产品之间的链接)

0 投票
2 回答
87 浏览

r - 将矩阵列表合并为大矩阵(总结其值)

我目前的问题如下。我有一个很大的矩阵列表(大约 1600 个)。实际上它是具有不同大小(从 2:2 到 5:5)的团的邻接矩阵。这是2个矩阵的示例

第一的

第二个

我需要将这个矩阵合并成一个更大的矩阵,并有类似的东西:

但这并不是全部。如果有类似的集团(例如示例中的第一个),或者另一个包含旧名称的集团,我希望将其值与大矩阵中的值进行汇总。并得到如下形式的矩阵:

我将需要这些数字来识别我的社交网络中链接的力量。

这个问题对我来说似乎很复杂,所以我希望我为你描述得足够清楚:)

0 投票
1 回答
32 浏览

r - 绘图时创建多种文件类型

我想制作一系列高分辨率和低分辨率版本的图,或者使用两种不同的文件类型(.png 和 .eps)以不同方式说明。我想知道最好/最少重复的方式来做到这一点。我正在使用中的gplot函数sna,并且绘图在绘图区域之外有一个自定义图例。我写了一个这样的函数:

这是完美的功能,但似乎效率低下且笨拙。这个问题的更一般的版本是:如果出于任何原因我想创建一个图(包括像我的自定义图例这样的额外层),将它存储为一个对象,然后稍后再绘制它,有没有办法做到这一点?顺便说一句,这个问题起初对我来说似乎并不sna具体,但在尝试使用plot与传说似乎并不笼统。

0 投票
1 回答
868 浏览

r - 快速迭代顶点并根据邻居计算新属性的方法

我正在做一个简单的任务:遍历所有顶点并根据其邻居的属性计算新属性。我搜索了 SO,到目前为止,我知道至少有三种方法可以做到:

  1. 使用 ad_adj_list 创建一个 adj 列表,然后遍历每个元素;
  2. 使用 sapply 直接迭代每个顶点。

但是,对于我的数据量(300k 个顶点和 800 万条边)来说,这两种方法都花费了太长时间。有没有快速循环顶点的方法?谢谢!

对于基准测试,假设我有以下示例数据:

方法 1. 的代码是:

方法 2. 的代码是:

我相信 igraph-R 在顶点交互方面不应该这么慢,否则,这将使分析数百万大小的大型图成为不可能,我认为这对 R 用户来说应该很常见!

更新

根据@MichaelChirico的评论,现在我想出了第三种方法:将图形结构导入data.table并使用data.tableby语法进行计算,如下:

data.table方式要快得多。但是,其结果与前两种方法的结果并不完全相同。另外,看到这么简单的任务还得依赖另外一个包,我也很失望,我认为这应该是igraph-R的强项。希望我错了!

0 投票
1 回答
561 浏览

python - 从共同作者数据创建边缘列表

我已经阅读了 R 中的一个 csv 文件,其中包含其他信息中的共同作者数据。该文件的作者列包含以下共同作者信息:

我想将此信息转换为具有以下形式的边缘列表:

基本上,网络是一个无向图。任何帮助/入门代码将不胜感激。此外,有没有办法保持合作的计数/频率(例如,Saha 在示例中与 Chakraborty 一起发表了两次)?

到目前为止我的代码:

0 投票
0 回答
153 浏览

r - 识别影响焦点节点介数的节点

我想知道识别影响焦点节点 i 的介数中心性的节点(j,k)的最佳方法。由于介数基于通过 i 的 j 和 k 之间的测地线,因此一种方法是获取网络中的所有最短路径,仅选择那些包含 i 的路径,并获取这些路径上节点的 ID . 然而

运行大约需要 9 秒,这仅适用于来自第一个节点的路径;据我了解,shortest_paths一次只会计算一个节点的路径。这涉及到很多不相关的信息,因为我真的只想要通过 i 的测地线。我假设中介函数本身使用广度优先搜索或其他算法以更有效的方式执行此操作,但我在 igraph 或 sna 的文档中看不到任何允许这样做的内容。我想避免在这里重新发明轮子。

简而言之,给定一个网络和一个焦点节点 i,找到 j 和 k 之间包括 i 的所有测地线的最佳方法是什么?

更新:这是我写的一个似乎可以解决问题的函数(虽然我还没有仔细检查过)。在具有 0.2 平局概率的 100 个节点的随机图上,它很慢,但不是不可行的。我相信有更好的方法来做到这一点。

0 投票
1 回答
388 浏览

r - 在 R 中生成偏好矩阵?

我正在使用 r 来分析以种族为属性的无向网络。我想创建一个关系账户表或“偏好矩阵”,一个方阵,其中种族值排列在两个维度上,每个单元格都告诉你有多少关系对应于这种关系类型。(因此,您可以由此计算一组与另一组建立联系的概率 - 但我只想将其用作 igraph 的preference.game 函数中的参数)。这是我尝试过的:

我想我的问题在最后。我需要找出一个表达式来告诉 R 如何填充单元格。我提出的表达似乎不起作用,但我想要它,以便有可能我可以去

然后“a”将返回邻接矩阵中对应于白黑关系的所有单元格的总和。

这是我的数据示例:

0 投票
1 回答
359 浏览

r - 在 R 中查找双连通分量的大小

我正在分析 R 中的无向图。我试图(最终)编写一个函数来获取最大连通分量的大小(顶点数)与最大双连通分量大小的比率 - 任何随机图. 我能够提取最大连接组件的大小,但在最大双连接组件的大小方面遇到问题。我开始在图 g 上使用 igraph 函数 biconnected_components:

然后我半生不熟的想法是以某种方式以递减的顶点数量对该列表进行排序,这样我就可以始终调用 length(bicomponent_list$components[[1]]) ,它将成为最大的双连接组件。但我不知道如何正确排序。也许我必须将其转换为矢量?但我也不知道如何指定我想要向量中的顶点数。有谁知道,或者有更好的方法吗?非常感谢!

我想要的结果是这样排序bi_list,以length(bicomponent_list$components[[1]])返回具有最多顶点的双分量。

0 投票
1 回答
81 浏览

matrix - 人际影响的结构测量

我正在尝试根据两个参与者之间关系的概率和影响的敏感性来计算人际影响矩阵(Friedkin,2001)。为此,您从 0 和 1 之间的直接关系的 13*13 矩阵开始。将社会矩阵转换为影响矩阵的过程如下:

其中 Ai = 敏感性测量,Cik = 平局概率矩阵 - 由 ERGM 计算。我不明白的是分母,这对数学家来说可能是一个简单的问题。我们究竟是通过什么来划分的?有没有一种简单的方法可以在 R 中为这个计算编写一个函数?

感谢您的澄清。

最好的,马蒂亚斯