首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"sna“或"igraph”:为什么对于无向图我会得到不同的度值?

"sna“或"igraph”:为什么对于无向图我会得到不同的度值?
EN

Stack Overflow用户
提问于 2020-02-14 19:32:09
回答 1查看 386关注 0票数 2

我正在使用R包“网络数据”中的网络进行一些基本的网络分析。为此,我使用了包“I”和"sna“。然而,我意识到描述性网络统计的结果因我使用的包而异。大多数变化并不太严重,但当我从"sna“切换到"igraph”时,我的无向图的平均程度就减半了。

代码语言:javascript
复制
library(networkdata)
n_1 <- covert_28

library(igraph)
library(sna)

n_1_adjmat <- as_adjacency_matrix(n_1)
n_1_adjmat2 <- as.matrix(n_1_adjmat)

mean(sna::degree(n_1_adjmat2, cmode = "freeman")) # [1] 23.33333
mean(igraph::degree(n_1, mode = "all")) # [1] 11.66667

这种情况不会发生在我的有向图的情况下。在这里,我得到了相同的结果,不管使用"sna“或"igraph”。

对这种现象有什么解释吗?如果是这样的话,我能做些什么来防止这种情况发生吗?

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-16 03:46:32

在sna::摄氏度的文档中解释了这一点。

顶点集的

指数v对应于顶点集N^+(v) = {i in V(G):(i,v)在E(G)}中的基数;出度对应于顶点集N^-(v) = {i in V(G):(v,i)在E(G)}中的基数;总(或“Freeman”)度对应于|N^+(V)(V)+N^-(V).

(注意,对于简单的图,

indegree=outdegree=total学位/2.)

一个比你的例子更简单的例子说明了这一点。

代码语言:javascript
复制
library(igraph)
library(sna)

g = make_ring(3)
plot(g)

代码语言:javascript
复制
AM = as.matrix(as_adjacency_matrix(g))
sna::degree(AM)
[1] 4 4 4

igraph::degree(g)
[1] 2 2 2

顶点1有指向顶点2和3的链接。

Freeman = in + out =2+2=4

文件中的“说明”指出了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60232458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档