| randDAG | R Documentation | 
Generating random directed acyclic graphs (DAGs) with fixed expected
number of neighbours.  Several different methods are provided, each
intentionally biased towards certain properties.  The methods are based
on the analogue *.game functions in the igraph package.
randDAG(n, d, method ="er", par1=NULL, par2=NULL,
        DAG = TRUE, weighted = TRUE, wFUN = list(runif, min=0.1, max=1))
| n | integer, at least  | 
| d | a positive number, corresponding to the expected number of neighbours per node, more precisely the expected sum of the in- and out-degree. | 
| method | a string, specifying the method used for generating the random graph. See details below. | 
| par1,par2 | optional additional arguments, dependent on the method. See details. | 
| DAG | logical, if  | 
| weighted | logical indicating if edge weights are computed according to  | 
| wFUN | a  | 
A (weighted) random graph with n nodes and expected number of
neighbours d is constructed.  For DAG=TRUE, the graph is
oriented to a DAG.  There are eight different random graph models
provided, each selectable by the parameters method,
par1 and par2, with method, a string,
taking one of the following values:
regular:Graph where every node has exactly d
incident edges. par1 and par2 are not used.
watts:Watts-Strogatz graph that interpolates between
the regular (par1->0) and Erdoes-Renyi graph
(par1->1).  The parameter par1 is per default
0.5 and has to be in (0,1). par2 is not used.
er:Erdoes-Renyi graph where every edge is present
independently. par1 and par2 are not used.
power:A graph with power-law degree distribution with
expectation d.par1 and par2 are not used.
bipartite:Bipartite graph with at least par1*n
nodes in group 1 and at most (1-par1)*n nodes in group 2.
The argument par1 has to be in [0,1] and is per
default 0.5. par2 is not used.
barabasi:A graph with power-law degree distribution
and preferential attachement according to parameter par1.  It
must hold that par1 >= 1 and the default is
par1=1. par2 is not used.
geometric:A geometric random graph in dimension
par1, where  par1 can take values from
{2,3,4,5} and is per default 2.  If par2="geo"
and weighted=TRUE, then the weights are computed according to
the Euclidean distance. There are currently no other option for
par2 implemented.
interEr:A graph with par1 islands of
Erdoes-Renyi graphs, every pair of those connected by a certain
number of edges proportional to par2 (fraction of
inter-connectivity).  It is required that
n/s be integer and par2 in (0,1).  Defaults are
par1=2 and par2=0.25, respectively.
A graph object of class graphNEL.
The output is not topologically sorted (as opposed to the
output of randomDAG).
Markus Kalisch (kalisch@stat.math.ethz.ch) and Manuel Schuerch.
These methods are mainly based on the analogue functions in the igraph package.
the package igraph, notably help pages such as
sample_k_regular or sample_smallworld;
unifDAG from package unifDAG for generating uniform random DAGs.
randomDAG a limited and soon deprecated version of randDAG;
rmvDAG for generating multivariate data according to a DAG.
set.seed(38)
dag1 <- randDAG(10, 4, "regular")
dag2 <- randDAG(10, 4, "watts")
dag3 <- randDAG(10, 4, "er")
dag4 <- randDAG(10, 4, "power")
dag5 <- randDAG(10, 4, "bipartite")
dag6 <- randDAG(10, 4, "barabasi")
dag7 <- randDAG(10, 4, "geometric")
dag8 <- randDAG(10, 4, "interEr", par2 = 0.5)
if (require(Rgraphviz)) {
  par(mfrow=c(4,2))
  plot(dag1,main="Regular graph")
  plot(dag2,main="Watts-Strogatz graph")
  plot(dag3,main="Erdoes-Renyi graph")
  plot(dag4,main="Power-law graph")
  plot(dag5,main="Bipartite graph")
  plot(dag6,main="Barabasi graph")
  plot(dag7,main="Geometric random graph")
  plot(dag8,main="Interconnected island graph")
}
set.seed(45)
dag0 <- randDAG(6,3)
dag1 <- randDAG(6,3, weighted=FALSE)
dag2 <- randDAG(6,3, DAG=FALSE)
if (require(Rgraphviz)) {
  par(mfrow=c(1,2))
  plot(dag1)
  plot(dag2)      ## undirected graph
}
dag0@edgeData   ## note the uniform weights between 0.1 and 1
dag1@edgeData   ## note the constant weights
wFUN <- function(m,lB,uB) { runif(m,lB,uB) }
dag <- randDAG(6,3,wFUN=list(wFUN,1,4))
dag@edgeData   ## note the uniform weights between 1 and 4
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.