我正在使用R包“网络数据”中的网络进行一些基本的网络分析。为此,我使用了包“I”和"sna“。然而,我意识到描述性网络统计的结果因我使用的包而异。大多数变化并不太严重,但当我从"sna“切换到"igraph”时,我的无向图的平均程度就减半了。
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”。
对这种现象有什么解释吗?如果是这样的话,我能做些什么来防止这种情况发生吗?
提前谢谢你!
发布于 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.)
一个比你的例子更简单的例子说明了这一点。
library(igraph)
library(sna)
g = make_ring(3)
plot(g)

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
文件中的“说明”指出了这一点。
https://stackoverflow.com/questions/60232458
复制相似问题