Skip to contents

Sample a new graph by perturbing the adjacency matrix of a given graph and shuffling its vertices.

Usage

sample_correlated_gnp_pair(n, corr, p, directed = FALSE, permutation = NULL)

Arguments

n

Numeric scalar, the number of vertices for the sampled graphs.

corr

A scalar in the unit interval, the target Pearson correlation between the adjacency matrices of the original the generated graph (the adjacency matrix being used as a vector).

p

A numeric scalar, the probability of an edge between two vertices, it must in the open (0,1) interval.

directed

Logical scalar, whether to generate directed graphs.

permutation

A numeric vector, a permutation vector that is applied on the vertices of the first graph, to get the second graph. If NULL, the vertices are not permuted.

Value

A list of two igraph objects, named graph1 and graph2, which are two graphs whose adjacency matrix entries are correlated with corr.

Details

Please see the reference given below.

References

Lyzinski, V., Fishkind, D. E., Priebe, C. E. (2013). Seeded graph matching for correlated Erdős-Rényi graphs. https://arxiv.org/abs/1304.7844

igraph_correlated_pair_game().

Examples

gg <- sample_correlated_gnp_pair(
  n = 10, corr = .8, p = .5,
  directed = FALSE
)
gg
#> $graph1
#> IGRAPH 80c4f34 U--- 10 18 -- 
#> + edges from 80c4f34:
#>  [1] 2-- 3 1-- 5 3-- 5 2-- 6 3-- 6 4-- 6 5-- 6 2-- 7 3-- 7 5-- 7 2-- 8 3-- 8
#> [13] 3-- 9 4-- 9 5-- 9 3--10 4--10 5--10
#> 
#> $graph2
#> IGRAPH b3b919b U--- 10 19 -- 
#> + edges from b3b919b:
#>  [1] 2-- 3 1-- 5 3-- 5 4-- 5 2-- 6 3-- 6 4-- 6 5-- 6 2-- 7 5-- 7 2-- 8 3-- 8
#> [13] 5-- 8 3-- 9 4-- 9 5-- 9 3--10 4--10 5--10
#> 
cor(as.vector(gg[[1]][]), as.vector(gg[[2]][]))
#> [1] 0.8721573