Use this if you are using igraph from R
In this model, each vertex is represented by a latent position vector. Probability of an edge between two vertices are given by the dot product of their latent position vectors.
sample_dot_product(vecs, directed = FALSE) dot_product(...)
vecs |
A numeric matrix in which each latent position vector is a column. |
directed |
A logical scalar, TRUE if the generated graph should be directed. |
... |
Passed to |
The dot product of the latent position vectors should be in the [0,1] interval, otherwise a warning is given. For negative dot products, no edges are added; dot products that are larger than one always add an edge.
An igraph graph object which is the generated random dot product graph.
Gabor Csardi csardi.gabor@gmail.com
Christine Leigh Myers Nickel: Random dot product graphs, a model for social networks. Dissertation, Johns Hopkins University, Maryland, USA, 2006.
sample_dirichlet
, sample_sphere_surface
and sample_sphere_volume
for sampling position vectors.
## A randomly generated graph lpvs <- matrix(rnorm(200), 20, 10) lpvs <- apply(lpvs, 2, function(x) { return (abs(x)/sqrt(sum(x^2))) }) g <- sample_dot_product(lpvs) g ## Sample latent vectors from the surface of the unit sphere lpvs2 <- sample_sphere_surface(dim=5, n=20) g2 <- sample_dot_product(lpvs2) g2