Home > Back-end >  Generate network using adjacency matrix
Generate network using adjacency matrix

Time:11-23

I have a problem with generating network object for further ergm estimation in R. Namely, when I feed the network function with an adjacency matrix, it generates an error that my network contains loops and multiple edges, which is simply not true. I ran the same code with the same matrix about two years ago and everything was alright. Now I tried to use different versions of R, but all of them lead to the same problem. As an example, I also used the following simple matrix:

    1 2 3 4 5 6 7 8 9 10
1   0 1 0 0 0 0 0 0 0 0
2   1 0 0 0 0 0 0 0 0 0
3   0 0 0 1 1 0 0 0 0 0
4   0 0 1 0 1 1 0 0 0 0
5   0 0 1 1 0 0 1 0 1 1
6   0 0 0 1 0 0 1 1 1 0
7   0 0 0 0 1 1 0 0 1 1
8   0 0 0 0 0 1 0 0 0 0 
9   0 0 0 0 1 1 1 0 0 1 
10  0 0 0 0 1 0 1 0 1 0

and the following code:

net <- network(data, directed=F, matrix.type='adjacency') 

with data being the matrix above. The obtained error is:

Error: `loops` is `FALSE`, but `x` contains loops.
The following values are affected:
    - `x[3, 1:2]`
    - `x[4, 1:2]`
    - `x[5, 1:2]`
    - `x[6, 1:2]`
    - `x[7, 1:2]`
    - `x[8, 1:2]`

I would be very pleased if you could help me to find out what is the problem and what could be a possible remedy. Or recommend me some another ergm package to use, probably a python one

CodePudding user response:

I am not sure what could be the problem in your case; maybe another function from a loaded package that interferes, but it seems to work for me (see reproducible example below):

data <- data.matrix(read.table(text="    1 2 3 4 5 6 7 8 9 10
1   0 1 0 0 0 0 0 0 0 0
2   1 0 0 0 0 0 0 0 0 0
3   0 0 0 1 1 0 0 0 0 0
4   0 0 1 0 1 1 0 0 0 0
5   0 0 1 1 0 0 1 0 1 1
6   0 0 0 1 0 0 1 1 1 0
7   0 0 0 0 1 1 0 0 1 1
8   0 0 0 0 0 1 0 0 0 0 
9   0 0 0 0 1 1 1 0 0 1 
10  0 0 0 0 1 0 1 0 1 0
", check.names = FALSE))
library(ergm)
#> Loading required package: network
#> 
#> 'network' 1.18.0 (2022-10-05), part of the Statnet Project
#> * 'news(package="network")' for changes since last version
#> * 'citation("network")' for citation information
#> * 'https://statnet.org' for help, support, and other information
#> 
#> 'ergm' 4.3.1 (2022-11-07), part of the Statnet Project
#> * 'news(package="ergm")' for changes since last version
#> * 'citation("ergm")' for citation information
#> * 'https://statnet.org' for help, support, and other information
#> 'ergm' 4 is a major update that introduces some backwards-incompatible
#> changes. Please type 'news(package="ergm")' for a list of major
#> changes.
library(network)
net <- network(data, directed=F, matrix.type='adjacency') 
summary(net)
#> Network attributes:
#>   vertices = 10
#>   directed = FALSE
#>   hyper = FALSE
#>   loops = FALSE
#>   multiple = FALSE
#>   bipartite = FALSE
#>  total edges = 14 
#>    missing edges = 0 
#>    non-missing edges = 14 
#>  density = 0.3111111 
#> 
#> Vertex attributes:
#>   vertex.names:
#>    character valued attribute
#>    10 valid vertex names
#> 
#> No edge attributes
#> 
#> Network adjacency matrix:
#>    1 2 3 4 5 6 7 8 9 10
#> 1  0 1 0 0 0 0 0 0 0  0
#> 2  1 0 0 0 0 0 0 0 0  0
#> 3  0 0 0 1 1 0 0 0 0  0
#> 4  0 0 1 0 1 1 0 0 0  0
#> 5  0 0 1 1 0 0 1 0 1  1
#> 6  0 0 0 1 0 0 1 1 1  0
#> 7  0 0 0 0 1 1 0 0 1  1
#> 8  0 0 0 0 0 1 0 0 0  0
#> 9  0 0 0 0 1 1 1 0 0  1
#> 10 0 0 0 0 1 0 1 0 1  0

Created on 2022-11-23 with reprex v2.0.2

  • Related