我正在尝试创建一个最终将用于拟合 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() 生成我正在尝试创建的二分网络?
谢谢!