pdredge | R Documentation |
Parallelized version of dredge
.
pdredge(global.model, cluster = NULL,
beta = c("none", "sd", "partial.sd"), evaluate = TRUE, rank = "AICc",
fixed = NULL, m.lim = NULL, m.min, m.max, subset, trace = FALSE,
varying, extra, ct.args = NULL, deps = attr(allTerms0, "deps"),
check = FALSE, ...)
global.model , beta , rank , fixed , m.lim , m.max , m.min , subset , varying , extra , ct.args , deps , ... |
see |
evaluate |
whether to evaluate and rank the models. If |
trace |
displays the generated calls, but may not work as expected since the models are evaluated in batches rather than one by one. |
cluster |
either a valid |
check |
either integer or logical value controlling how much checking for existence and correctness of dependencies is done on the cluster nodes. See ‘Details’. |
All the dependencies for fitting the global.model
, including the data
and any objects that the modelling function will use must be exported
to the cluster worker nodes (e.g. via clusterExport
).
The required packages must be also loaded thereinto (e.g. via
clusterEvalQ(..., library(package))
, before the cluster is used by
pdredge
.
If check
is TRUE
or positive, pdredge
tries to check whether
all the variables and functions used in the call to global.model
are
present in the cluster nodes' .GlobalEnv
before proceeding further.
This will cause false errors if some arguments of the model call (other than
subset
) would be evaluated in the data
environment. In that
case is desirable to use check = FALSE
(the default).
If check
is TRUE
or greater than one, pdredge
will
compare the global.model
updated on the cluster nodes with the one
given as an argument.
See dredge
.
As of version 1.45.0, using pdredge
directly is deprecated. Use
dredge
instead and provide cluster
argument.
Kamil Bartoń
makeCluster
and other cluster related functions in packages
parallel or snow.
# One of these packages is required:
## Not run: require(parallel) || require(snow)
# From example(Beetle)
Beetle100 <- Beetle[sample(nrow(Beetle), 100, replace = TRUE),]
fm1 <- glm(Prop ~ dose + I(dose^2) + log(dose) + I(log(dose)^2),
data = Beetle100, family = binomial, na.action = na.fail)
msubset <- expression(xor(dose, `log(dose)`) & (dose | !`I(dose^2)`)
& (`log(dose)` | !`I(log(dose)^2)`))
varying.link <- list(family = alist(logit = binomial("logit"),
probit = binomial("probit"), cloglog = binomial("cloglog") ))
# Set up the cluster
clusterType <- if(length(find.package("snow", quiet = TRUE))) "SOCK" else "PSOCK"
clust <- try(makeCluster(getOption("cl.cores", 2), type = clusterType))
clusterExport(clust, "Beetle100")
# noticeable gain only when data has about 3000 rows (Windows 2-core machine)
print(system.time(dredge(fm1, subset = msubset, varying = varying.link)))
print(system.time(dredge(fm1, cluster = FALSE, subset = msubset,
varying = varying.link)))
print(system.time(pdd <- dredge(fm1, cluster = clust, subset = msubset,
varying = varying.link)))
print(pdd)
## Not run:
# Time consuming example with 'unmarked' model, based on example(pcount).
# Having enough patience you can run this with 'demo(pdredge.pcount)'.
library(unmarked)
data(mallard)
mallardUMF <- unmarkedFramePCount(mallard.y, siteCovs = mallard.site,
obsCovs = mallard.obs)
(ufm.mallard <- pcount(~ ivel + date + I(date^2) ~ length + elev + forest,
mallardUMF, K = 30))
clusterEvalQ(clust, library(unmarked))
clusterExport(clust, "mallardUMF")
# 'stats4' is needed for AIC to work with unmarkedFit objects but is not
# loaded automatically with 'unmarked'.
require(stats4)
invisible(clusterCall(clust, "library", "stats4", character.only = TRUE))
#system.time(print(pdd1 <- dredge(ufm.mallard,
# subset = `p(date)` | !`p(I(date^2))`, rank = AIC)))
system.time(print(pdd2 <- dredge(ufm.mallard, cluster = clust,
subset = `p(date)` | !`p(I(date^2))`, rank = AIC, extra = "adjR^2")))
# best models and null model
subset(pdd2, delta < 2 | df == min(df))
# Compare with the model selection table from unmarked
# the statistics should be identical:
models <- get.models(pdd2, delta < 2 | df == min(df), cluster = clust)
modSel(fitList(fits = structure(models, names = model.names(models,
labels = getAllTerms(ufm.mallard)))), nullmod = "(Null)")
## End(Not run)
stopCluster(clust)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.