mcstoc function

Creates Stochastic mcnode Objects

Creates Stochastic mcnode Objects

Creates a mcnode object using a random generating function.

mcstoc(func=runif, type=c("V", "U", "VU", "0"), ..., nsv=ndvar(), nsu=ndunc(), nvariates=1, outm="each", nsample="n", seed=NULL, rtrunc=FALSE, linf=-Inf, lsup=Inf, lhs=FALSE)

Examples

Oldnvar <- ndvar() Oldnunc <- ndunc() ndvar(5) ndunc(4) ## compatibility with mcdata as arguments x0 <- mcstoc(runif, type="0") xV <- mcstoc(runif, type="V") xU <- mcstoc(runif, type="U") xVU <- mcstoc(runif, type="VU") ## "0" accepts mcdata "0" mcstoc(runif, type="0", min=-10, max=x0) ## "V" accepts "0" mcdata and "V" mcdata mcstoc(rnorm, type="V", mean=x0, sd=xV) ## "U" accepts "0" mcdata and "U" mcdata mcstoc(rnorm, type="U", mean=x0, sd=xU) ## "VU" accepts "0" mcdata, "U" mcdata ## "V" mcdata and "U" mcdata with correct recycling mcstoc(rnorm, type="VU", mean=x0, sd=xVU) mcstoc(rnorm, type="VU", mean=xV, sd=xU) ## any function giving a set (vector/matrix) of value of length 'size' works f <- function(popi) 1:popi mcstoc(f, type="V", nsample="popi") ##Multivariates ndvar(2) ndunc(5) ##Build a multivariate node with univariate distribution mcstoc(rnorm, "0", nvariates=3) mcstoc(rnorm, "V", nvariates=3) mcstoc(rnorm, "U", nvariates=3) mcstoc(rnorm, "VU", nvariates=3) ##Build a multivariate node with multivariates distribution alpha <- mcdata(c(1, 1000, 10, 100, 100, 10, 1000, 1), "V", nvariates=4) (p <- mcstoc(rdirichlet, "V", alpha=alpha, nvariates=4)) mcstoc(rmultinomial, "VU", size=10, p, nvariates=4) ##Build a univariates node with "multivariates" distribution size <- mcdata(c(1:5), "U") mcstoc(rmultinomial, "VU", size, p, nvariates=1) #since a multinomial return one value ##Build a multivariates node with "multivariates" distribution mcstoc(rmultinomial, "VU", size, p, nvariates=4) #sent 4 times to fill the array ##Use of rempiricalD with nodes ##A bootstrap ndunc(5) ndvar(5) dataset <- c(1:9) (b <- mcstoc(rempiricalD, "U", nvariates=9, values=dataset)) unclass(b) ##Then we build a VU node by sampling in each set of bootstrap (node <- mcstoc(rempiricalD, "VU", values=b)) unclass(node) ## truncated ndvar(2) ndunc(5) linf <- mcdata(-1:3, "U") x <- mcstoc(rnorm, "VU", rtrunc=TRUE, linf=linf) unclass(round(x)) linf <- mcdata(1:5, "U") mcstoc(rnorm, "VU", nsv=100, rtrunc=TRUE, linf=linf, lhs=TRUE) ndvar(Oldnvar) ndunc(Oldnunc)

Arguments

  • func: A function providing random data or its name as character.

  • type: The type of mcnode to be built. By default, a "V" node. see mcnode for details.

  • ...: All other arguments but the size of the sample to be passed to func . These arguments should be vectors or mcnode s (arrays prohibited).

  • nsv: The number of simulations in the variability dimension.

  • nsu: The number of simulations in the uncertainty dimension.

  • nvariates: The number of variates of the output.

  • outm: The output of the mcnode for multivariates nodes. May be "each" (default) if an output should be provided for each variates considered independently, "none" for no output or a vector of functions (as a character string) that will be applied on the variates dimension before any output (ex: "mean" , "median" , c("min","max") ). Each function should return 1 value when applied to 1 value (ex. do not use "range" ). Note that the outm attribute may be changed further using the outm function.

  • nsample: The name of the parameter of the function giving the size of the vector. By default, n , as in most of the random sampling distributions of the stats library (with the exceptions of rhyper and rwilcox where nsample="nn" should be used).

  • seed: The random seed used for the evaluation. If NULL

    the seed is unchanged.

  • rtrunc: Should the distribution be truncated? See rtrunc.

  • linf: If truncated: lower limit. May be a scalar, an array or a mcnode.

  • lsup: If truncated: upper limit. May be a scalar, an array or a mcnode. lsup should be pairwise strictly greater then linf

  • lhs: Should a Random Latin Hypercube Sampling be used? see lhs

Details

Note that arguments after ... must match exactly.

Any function who accepts vectors/matrix as arguments may be used (notably: all current random generator of the stats package). The arguments may be sent classically but it is STRONGLY recommended to use consistent mcnode s if arguments should be recycled, since a very complex recycling is handled for mcnode and not for vectors. The rules for compliance of mcnode arguments are as following (see below for special functions):

  • type="V": accepts "0" mcnode of dimension (1 x 1 x nvariates) or of dimension (1 x 1 x 1) (recycled) and "V" mcnode of dimension (nsv x 1 x nvariates) or (nsv x 1 x 1) (recycled).

  • type="U": accepts "0" mcnode of dimension (1 x 1 x nvariates) or of dimension (1 x 1 x 1) (recycled) and "U" mcnode of dimension (1 x nsu x nvariates) or of dimension (1 x nsu x 1) (recycled).

  • type="VU": accepts "0" mcnode of dimension (1 x 1 x nvariates) or of dimension (1 x 1 x 1) (recycled), "V" mcnode of dimension (nsv x 1 x nvariates) (recycled classically) or (nsv x 1 x 1) (recycled classically), "U" mcnode of dimension (1 x nsu x nvariates) (recycled by rows) or (1 x nsu x 1) (recycled by row on the uncertainty dimension and classically on variates), "VU" mcnode of dimension (nsv x nsu x nvariates) or of dimension (nsv x nsu x 1)

     (recycled).
    
  • type="0": accepts "0" mcnode of dimension (1 x 1 x nvariates) or (1 x 1 x 1) (recycled).

Multivariate nodes and multivariate distributions:

The number of variates should be provided (not guesses by the function). A multivariates node may be built using a univariate distribution and nvariates!=1 . See examples.

rdirichlet needs for alpha a vector or a multivariates nodes and returns a multivariate node. rmultinomial needs for size and prob

vectors and/or multivariate nodes and return a univariate or a multivariate node. rmultinormal needs for mean

and sigma vectors and/or multivariate nodes and return a multivariate node. rempiricalD needs for values

and prob vectors and/or multivariate nodes and return a a univariate or a multivariate node. See examples.

trunc=TRUE is valid for univariates distributions only. The distribution will be truncated on (linf, lsup] . The function 'func' should have a 'q' form (with first argument 'p') and a 'p' form, as all current random generator of the stats library. Example : 'rnorm' (has a 'qnorm' and a 'pnorm' form), 'rbeta', 'rbinom', 'rgamma', ...

If lhs=TRUE , a Random Hypercube Sampling will be used on nsv and nsu The function 'func' should have a 'q' form (with argument 'p'). lhs=TRUE is thus not allowed on multivariates distributions.

Returns

An mcnode object.

See Also

mcnode for a description of mcnode object, methods and functions on mcnode objects.

Ops.mcnode for operations on mcnode objects. rtrunc for important warnings on the use of the trunc option.

  • Maintainer: Regis Pouillot
  • License: GPL (>= 2)
  • Last published: 2024-06-05

Useful links