rgraph_ba | R Documentation |
Generates a scale-free random graph based on Bollabas et al. (2001), also know as
Linearized Chord Diagram (LCD) which has nice mathematical propoerties.
And also scale-free homophilic networks when an vertex attribute eta
is
passed.
rgraph_ba(m0 = 1L, m = 1L, t = 10L, graph = NULL, self = TRUE, eta = NULL)
m0 |
Integer scalar. Number of initial vertices in the graph. |
m |
Integer scalar. Number of new edges per vertex added. |
t |
Integer scalar. Number of time periods (steps). |
graph |
Any class of accepted graph format (see |
self |
Logical scalar. When |
eta |
Numeric vector of length |
Based on Ballobás et al. (2001) creates a directed random graph of size
t + m0
. A big difference with B-A model
is that this allows for loops (self/auto edges) and further multiple links,
nevertheless, as t
increases, the number of such cases reduces.
By default, the degree of the first m0
vertices is set to be 2 (loops).
When m>1
, as described in the paper, each new link from the new vertex
is added one at a time
“counting ‘outward half’ of the edge being added as already contributing to the degrees”.
When self=FALSE
, the generated graph is created without autolinks. This
means that at the beginning, if the number of links equals zero, all vertices
have the same probability of receiving a new link.
When eta
is passed, it implements the model specified in De Almeida et al.
(2013), a scale-free homophilic network. To do so eta
is rescaled to
be between 0 and 1 and the probability that the node i
links to node j
is as follows:
\frac{(1-A_{ij})k_j}{\sum_j (1-A_{ij})k_j}
Where A_{ij} = |\eta_i - \eta_j|
and
k_j
is the degree of the j
-th vertex.
If graph
is not provided, a static graph, otherwise an expanded
graph (t
aditional vertices) of the same class as graph
.
The resulting graph will have graph$meta$undirected = FALSE
if it is of
class diffnet
and attr(graph, "undirected")=FALSE
otherwise.
George G. Vega Yon
Bollobás, B´., Riordan, O., Spencer, J., & Tusnády, G. (2001). The degree sequence of a scale-free random graph process. Random Structures & Algorithms, 18(3), 279–290. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1002/rsa.1009")}
Albert-László Barabási, & Albert, R. (1999). Emergence of Scaling in Random Networks. Science, 286(5439), 509–512. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1126/science.286.5439.509")}
Albert-László Barabási. (2016). Network Science: (1st ed.). Cambridge University Press. Retrieved from https://barabasi.com/book/network-science
De Almeida, M. L., Mendes, G. A., Madras Viswanathan, G., & Da Silva, L. R. (2013). Scale-free homophilic network. European Physical Journal B, 86(2). \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1140/epjb/e2012-30802-x")}
Other simulation functions:
permute_graph()
,
rdiffnet()
,
rewire_graph()
,
rgraph_er()
,
rgraph_ws()
,
ring_lattice()
# Using another graph as a base graph ---------------------------------------
graph <- rgraph_ba()
graph
graph <- rgraph_ba(graph=graph)
# Generating a scale-free homophilic graph (no loops) -----------------------
set.seed(112)
eta <- rep(c(1,1,1,1,2,2,2,2), 20)
ans <- rgraph_ba(t=length(eta) - 1, m=3, self=FALSE, eta=eta)
# Converting it to igraph (so we can plot it)
ig <- igraph::graph_from_adjacency_matrix(ans)
# Neat plot showing the output
oldpar <- par(no.readonly = TRUE)
par(mfrow=c(1,2))
plot(ig, vertex.color=c("red","blue")[factor(eta)], vertex.label=NA,
vertex.size=5, main="Scale-free homophilic graph")
suppressWarnings(plot(dgr(ans), main="Degree distribution"))
par(oldpar)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.