| rmvDAG | R Documentation | 
Generate multivariate data with dependency structure specified by a (given) DAG (Directed Acyclic Graph) with nodes corresponding to random variables. The DAG has to be topologically ordered.
rmvDAG(n, dag,
       errDist = c("normal", "cauchy", "t4", "mix", "mixt3", "mixN100"),
       mix = 0.1, errMat = NULL, back.compatible = FALSE,
       use.node.names = !back.compatible)
| n | number of samples that should be drawn. (integer) | 
| dag | a graph object describing the DAG; must contain weights for
all the edges.  The nodes must be topologically sorted. (For
topological sorting use  | 
| errDist | string specifying the distribution of each node.
Currently, the options "normal", "t4", "cauchy", "mix", "mixt3" and
"mixN100" are supported.  The first
three generate standard normal-, t(df=4)- and cauchy-random
numbers.  The options containing the word "mix" create standard
normal random variables with a mix of outliers. The outliers for the
options "mix", "mixt3", "mixN100" are drawn from a standard cauchy,
t(df=3) and N(0,100) distribution, respectively.  The fraction of
outliers is determined by the  | 
| mix | for the  | 
| errMat | numeric  | 
| back.compatible | logical indicating if the data generated should
be the same as with pcalg version 1.0-6 and earlier (where
 | 
| use.node.names | logical indicating if the column names of the
result matrix should equal  | 
Each node is visited in the topological order.  For each node i we
generate a p-dimensional value X_i in the following way:
Let X_1,\ldots,X_k denote the values of all neighbours of i
with lower order.
Let w_1,\ldots,w_k be the weights of the corresponding edges.
Furthermore, generate a random vector E_i according to the
specified error distribution.  Then, the value of X_i is
computed as
X_i = w_1*X_1 + \ldots + w_k*X_k + E_i.
If node i has no neighbors with lower order, X_i = E_i is set.
A n*p matrix with the generated data.  The p columns
correspond to the nodes (i.e., random variables) and each of the
n rows correspond to a sample.
Markus Kalisch (kalisch@stat.math.ethz.ch) and Martin Maechler.
randomDAG for generating a random DAG;
skeleton and pc for estimating the
skeleton and the CPDAG of a DAG that
corresponds to the data.
## generate random DAG
p <- 20
rDAG <- randomDAG(p, prob = 0.2, lB=0.1, uB=1)
if (require(Rgraphviz)) {
## plot the DAG
plot(rDAG, main = "randomDAG(20, prob = 0.2, ..)")
}
## generate 1000 samples of DAG using standard normal error distribution
n <- 1000
d.normMat <- rmvDAG(n, rDAG, errDist="normal")
## generate 1000 samples of DAG using standard t(df=4) error distribution
d.t4Mat <- rmvDAG(n, rDAG, errDist="t4")
## generate 1000 samples of DAG using standard normal with a cauchy
## mixture of 30 percent
d.mixMat <- rmvDAG(n, rDAG, errDist="mix",mix=0.3)
require(MASS) ## for mvrnorm()
Sigma <- toeplitz(ARMAacf(0.2, lag.max = p - 1))
dim(Sigma)# p x p
## *Correlated* normal error matrix "e_i" (against model assumption)
eMat <- mvrnorm(n, mu = rep(0, p), Sigma = Sigma)
d.CnormMat <- rmvDAG(n, rDAG, errMat = eMat)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.