在 R 中使用 ergm.multi 的多层网络中的属性规范问题

问题描述 投票:0回答:1

我尝试使用 R 中的 ergm.multi 包运行具有两层的多层 ERGM。之前,我对每一层运行了 ERGM,效果都非常完美。但是,当尝试运行相应的多层 ERGM 时,我收到有关节点属性的错误消息:

“ergm_Init_abort()”中的错误:!在包“ergm”中的术语“nodeifactor”(从包“ergm.multi”中的术语“L”调用)中:“srh”是/不是有效的节点属性。

按照 statnet 教程(https://statnet.org/workshop-advanced-ergm/),我指定了我的多层网络,如下所示:

hf2_A <- network1 | network2 # superset of all edges in any layer
# set attributes
hf2_A[,, names.eval="network1"] <- as.matrix(network1)
hf2_A[,, names.eval="network2"] <- as.matrix(network2)
hf2_A

hf_A <- Layer(hf2_A, c("network1","network2"))
hf_A

#A
set.vertex.attribute(hf_A, attrname = "pid", value = as.vector(network_names_A))
set.vertex.attribute(hf_A,  attrname = "sup", value = as.vector(sup_A))
set.vertex.attribute(hf_A,  attrname = "nas", value = as.vector(nas_A))
set.vertex.attribute(hf_A,  attrname = "age", value = as.vector(age_A))
set.vertex.attribute(hf_A,  attrname = "srh", value = as.vector(srh_A))
set.vertex.attribute(hf_A,  attrname = "casmin", value = as.vector(casmin_A))

hf_A
看起来像这样:

 Combined 2 networks on ‘.LayerID’/‘.LayerName’:
  1: n = 50, directed = TRUE, bipartite = FALSE, loops = FALSE
  2: n = 50, directed = TRUE, bipartite = FALSE, loops = FALSE

 Network attributes:
  vertices = 100 
  directed = TRUE 
  hyper = FALSE 
  loops = FALSE 
  multiple = FALSE 
  bipartite = FALSE 
  ergm:
            Length Class   Mode
constraints 2      formula call
  total edges= 247 
    missing edges= 0 
    non-missing edges= 247 

 Vertex attribute names: 
    .bipartite .LayerID .LayerName .undirected age casmin nas pid srh sup vertex.names 

 Edge attribute names: 
    network1 network2 

但是,当运行我的多层 ERGM 时,我仍然会收到上面指定的错误消息。

m1 <- ergm(hf_A ~ L(~edges + mutual + gwidegree(decay=.1, fixed=TRUE) + gwodegree(decay=.1, fixed=TRUE) + gwesp(decay=.1, fixed=TRUE)
                         +edgecov(A_friend_w1)+edgecov(A_kin_w1)
                         +nodeifactor("srh")+nodeofactor("srh")+nodeifactor("nas")+nodeofactor("nas")+nodematch("srh")+nodematch("nas")
                         +nodematch("age")+nodematch("casmin")+nodefactor("age")+nodefactor("casmin"), ~network1) 
              + L(~edges + mutual + gwidegree(decay=.1, fixed=TRUE) + gwodegree(decay=.1, fixed=TRUE) + gwesp(decay=.1, fixed=TRUE)
                         +edgecov(A_health_w1)+edgecov(A_kin_w1)
                         +nodeifactor("srh")+nodeofactor("srh")+nodeifactor("nas")+nodeofactor("nas")+nodematch("srh")+nodematch("nas")
                         +nodematch("age")+nodematch("casmin")+nodefactor("age")+nodefactor("casmin"), ~network2)
)

还有其他人遇到过类似的问题吗?或者知道为什么我收到错误消息?

预先感谢您!

祝你一切顺利,艾米丽

attributes multi-layer ergm
1个回答
0
投票

谢谢@Amelie。这看起来像是一个错误,请在 https://github.com/statnet/ergm.multi/issues/27

进行跟进
© www.soinside.com 2019 - 2024. All rights reserved.