1

我正在尝试创建一个最终将用于拟合 TERGM 的二分网络列表。每个网络代表一年。但是,我在使用 statnet 中的 as.network() 函数创建单个网络时遇到了麻烦。

对于一年的网络,我有一个节点数据框,如果节点为模式 1,则其变量等于 TRUE,如果节点为模式 2,则为 false。我还有一个包含那一年边缘的数据框。

当我将这些传递给 as.network() 时,我得到一个

为了使事情更具体,这里有一个例子:

        # Set up nodes and edges
        my_nodes <- data.frame(
          name = c("Federal Govt.", "State 1", "State 2", "State 3", "State 4", "State 5", "State 6",
                   "Group 1", "Group 2", "Group 3", "Group 4", "Group 5", "Group 6", "Group 7", "Group 8", "Group 9"),
          is_actor = c( rep(TRUE, 7), rep(FALSE, 9) ),
          religious = c( rep(0, 7), 1, rep(0, 6), 1, 1 )
        )
        
        my_edges <- data.frame(
          actor1 = c("Federal Govt."),
          actor2 = c("Group 7")
        )

        my_edges <- data.frame(
          actor1 = c("Federal Govt."),
          actor2 = c("Group 7")
        )
        
        # Create network object
        my_net <- as.network( x = my_edges, vertices = my_nodes, bipartite = TRUE, bipartite_col = "is_actor" )

当我在控制台中调用这个网络时,我得到:

 Network attributes:
  vertices = 16 
  directed = FALSE 
  hyper = FALSE 
  loops = FALSE 
  multiple = FALSE 
  bipartite = 1 
  total edges= 1 
    missing edges= 0 
    non-missing edges= 1 

 Vertex attribute names: 
    is_actor religious vertex.names 

No edge attributes

这是第一个问题:当 7 个节点的 is_actor == TRUE 时,为什么 bipartite = 1?

当我将此网络转换为社会矩阵时,我得到一个数字向量......

        # The sociomatrix I get from as.sociomatrix()
        as.sociomatrix(my_net)


State 1 State 2 State 3 State 4 State 5 State 6 Group 1 Group 2 Group 3 Group 4 Group 5 Group 6 Group 7 Group 8 Group 9 
      0       0       0       0       0       0       0       0       0       0       0       0       1       0       0 

...当我希望得到一个矩阵,其中每一行是一个状态,每一列是一个组:


              Group 1 Group 2 Group 3 Group 4 Group 5 Group 6 Group 7 Group 8 Group 9
Federal Govt.       0       0       0       0       0       0       1       0       0
State 1             0       0       0       0       0       0       0       0       0
State 2             0       0       0       0       0       0       0       0       0
State 3             0       0       0       0       0       0       0       0       0
State 4             0       0       0       0       0       0       0       0       0
State 5             0       0       0       0       0       0       0       0       0
State 6             0       0       0       0       0       0       0       0       0

这是第二个问题:为什么要as.sociomatrix()生成数字向量而不是矩阵,其中行代表一种参与者,列代表另一种?

我尝试创建的所有二分网络都不会发生这种情况。有时as.network()会创建一个二分网络,其中只有一些节点/顶点被正确指定为正确的模式。

如何让 as.network() 生成我正在尝试创建的二分网络?

谢谢!

4

0 回答 0