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.

correlated_pair_game()

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

Examples

gg <- sample_correlated_gnp_pair(
  n = 10, corr = 0.8, p = 0.5,
  directed = FALSE
)
gg
#> $graph1
#> ── <igraph> ───────────────────────────────────────────────────────── 0f77d00 ──
#>  undirected
#>  10 vertices · 22 edges
#> 
#> ── Edges ───────────────────────────────────────────────────────────────────────
#>  [1] 1 ─ 2   2 ─ 3   3 ─ 4   1 ─ 5   4 ─ 5   1 ─ 6   3 ─ 6   5 ─ 6   1 ─ 7  
#> [10] 4 ─ 7   6 ─ 7   1 ─ 8   3 ─ 8   1 ─ 9   2 ─ 9   5 ─ 9   7 ─ 9   8 ─ 9  
#> [19] 2 ─ 10  3 ─ 10  8 ─ 10  9 ─ 10 
#> 
#> $graph2
#> ── <igraph> ───────────────────────────────────────────────────────── 1d1c9ed ──
#>  undirected
#>  10 vertices · 20 edges
#> 
#> ── Edges ───────────────────────────────────────────────────────────────────────
#>  [1] 1 ─ 2   2 ─ 3   3 ─ 4   1 ─ 5   1 ─ 6   3 ─ 6   4 ─ 6   5 ─ 6   3 ─ 7  
#> [10] 4 ─ 7   6 ─ 7   1 ─ 8   6 ─ 8   1 ─ 9   2 ─ 9   5 ─ 9   8 ─ 9   3 ─ 10 
#> [19] 8 ─ 10  9 ─ 10 
#> 
cor(as.vector(gg[[1]][]), as.vector(gg[[2]][]))
#> [1] 0.6744005