在R的ergm包中,如果我想用homophily / clustering模拟图形,我应该输入什么样的模拟网络?

时间:2018-06-07 07:30:09

标签: r statnet

ergmlatentnet个包中,它们允许我们输入网络并指定协变量。然后,我们可以添加类似homophily和clustering的效果(在latentnet包中)。这里似乎有两个应用程序分支:

1)拥有现有的数据/网络,并希望了解它的表现以及存在多少同质性,群集。

2)不要拥有现有数据,并希望从头开始生成一个具有足够的同质性和聚类的网络。

上述软件包中的所有示例都使用现有数据集samplike,即Sampson Monk Data。如果我只对生成具有一定数量的同音和聚类的网络感兴趣,我应该放入什么是输入网络?例如,来自代码adapted

library(ergm)
library(latentnet)
test.net = as.network(matrix(0,100,100), directed = F) #100-node network
test.net%v%"gender" = rbinom(100, size = 1, prob = 0.5) #nodal attribute
gest <- ergmm(test.net ~ euclidean(d=3,G=10) + nodematch("gender")
g.sim <- simulate(gest)
plot(g.sim, vertex.col = as.numeric(test.net%v%"gender"), vertex.cex = 2)

如果我想用群集模拟网络,我应该从已经有10个群集的test.net对象开始(例如使用随机块模型)?或者我应该从100节点网络开始?

1 个答案:

答案 0 :(得分:1)

ergm中,您将从没有边缘的100节点网络开始。例如:

library(ergm)

test.net <- network(40, directed = FALSE, density = 0)
test.net%v%"gender" = rbinom(40, size = 1, prob = 0.5)

g.sim <- ergm::simulate(test.net ~ nodematch("gender") + edges,
         coef = c(2, -3)) #when using ergm::simulate with a formula as input,
                          #coefficients for ergm terms are required

plot(g.sim, vertex.col = as.numeric(test.net%v%"gender"))

看一下latentnet的文档,似乎应该有类似的功能,但我也无法生成模拟网络。