parall.gmj {EMJMCMC}R Documentation

A function to run parallel chains of (R)(G)MJMCMC algorithms

Description

A function to run parallel chains of (R)(G)MJMCMC algorithms

Usage

parall.gmj(X, M = 16, preschedule = FALSE)

Arguments

X

a vector of lists of parameters of runemjmcmc as well as several additional fields that must come after runemjmcmc parameters such as:

vect$simlen

the number of parameters of runemjmcmc in vect

vect$cpu

the CPU id for to set the unique seed

vect$NM

the number of unique best models from runemjmcmc to base the output report upon

M

a number of CPUs to be used (can only be equal to 1 on Windows OS currently, up to a maximal number of cores can be used on Linux-based systems)

preschedule

if pseudoscheduling should be used for the jobs if their number exceeds M (if TRUE) otherwise the jobs are performed sequentially w.r.t. their order

Value

a vector of lists of

post.populi

the total mass (sum of the marginal likelihoods times the priors of the visited models) from the addressed run of runemjmcmc

p.post

posterior probabilities of the covariates approximated by the addressed run of runemjmcmc

cterm

the best value of marginal likelihood times the prior from the addressed run of runemjmcmc

fparam

the final set of covariates returned by the addressed run of runemjmcmc

See Also

runemjmcmc parall.gmj

Examples

j <- 1
M <- 4
X4 <- as.data.frame(
  array(
    data = rbinom(n = 50 * 1000, size = 1, prob = runif(n = 50 * 1000, 0, 1)),
    dim = c(1000, 50)
  )
)
Y4 <- rnorm(
  n = 1000,
  mean = 1 +
    7 * (X4$V4 * X4$V17 * X4$V30 * X4$V10) +
    7 * (X4$V50 * X4$V19 * X4$V13 * X4$V11) +
    9 * (X4$V37 * X4$V20 * X4$V12) +
    7 * (X4$V1 * X4$V27 * X4$V3) +
    3.5 * (X4$V9 * X4$V2) +
    6.6 * (X4$V21 * X4$V18) +
    1.5 * X4$V7 +
    1.5 * X4$V8,
  sd = 1
)
X4$Y4 <- Y4

formula1 <- as.formula(
  paste(colnames(X4)[51], "~ 1 +", paste0(colnames(X4)[-c(51)], collapse = "+"))
)
data.example <- as.data.frame(X4)

vect <- list(
  formula = formula1, outgraphs = FALSE, data = X4,
  estimator = estimate.logic.lm,
  estimator.args = list(data = data.example, n = 100, m = 50),
  recalc_margin = 249, save.beta = FALSE, interact = TRUE,
  relations = c("", "lgx2", "cos", "sigmoid", "tanh", "atan", "erf"),
  relations.prob = c(0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0),
  interact.param = list(
    allow_offsprings = 1, mutation_rate = 250, last.mutation = 15000,
    max.tree.size = 4, Nvars.max = 40, p.allow.replace = 0.7,
    p.allow.tree = 0.2, p.nor = 0, p.and = 0.9
  ), n.models = 20000, unique = TRUE, max.cpu = 4, max.cpu.glob = 4,
  create.table = FALSE, create.hash = TRUE, pseudo.paral = TRUE,
  burn.in = 50, print.freq = 1000,
  advanced.param = list(
    max.N.glob = as.integer(10),
    min.N.glob = as.integer(5),
    max.N = as.integer(3),
    min.N = as.integer(1),
    printable = FALSE
  )
)

params <- list(vect)[rep(1, M)]

for (i in 1:M) {
  params[[i]]$cpu <- i
  params[[i]]$NM <- 1000
  params[[i]]$simlen <- 21
}

  message("begin simulation ", j)
  set.seed(363571)
  results <- parall.gmj(X = params, M = 1)


[Package EMJMCMC version 1.5.0 Index]