| SimControl-class {simFrame} | R Documentation | 
Class "SimControl"
Description
Class for controlling how simulation runs are performed.
Objects from the Class
Objects can be created by calls of the form new("SimControl", ...) or
SimControl(...).
Slots
contControl:Object of class
"OptContControl"; a control object for contamination, orNULL.NAControl:Object of class
"OptNAControl"; a control object for inserting missing values, orNULL.design:Object of class
"character"specifying variables (columns) to be used for splitting the data into domains. The simulations, including contamination and the insertion of missing values (unlessSAE=TRUE), are then performed on every domain.fun:Object of class
"function"to be applied in each simulation run.dots:Object of class
"list"containing additional arguments to be passed tofun.SAE:Object of class
"logical"indicating whether small area estimation will be used in the simulation experiment.
Details
There are some requirements for fun.  It must return a numeric vector,
or a list with the two components values (a numeric vector) and
add (additional results of any class, e.g., statistical models).
Note that the latter is computationally slightly more expensive.  A
data.frame is passed to fun in every simulation run.  The
corresponding argument must be called x.  If comparisons with the
original data need to be made, e.g., for evaluating the quality of imputation
methods, the function should have an argument called orig.  If
different domains are used in the simulation, the indices of the current
domain can be passed to the function via an argument called domain.
For small area estimation, the following points have to be kept in mind.  The
design for splitting the data must be supplied and SAE
must be set to TRUE.  However, the data are not actually split into
the specified domains.  Instead, the whole data set (sample) is passed to
fun.  Also contamination and missing values are added to the whole
data (sample).  Last, but not least, the function must have a domain
argument so that the current domain can be extracted from the whole data
(sample).
In every simulation run, fun is evaluated using try.  Hence
no results are lost if computations fail in any of the simulation runs.
Accessor and mutator methods
getContControlsignature(x = "SimControl"): get slotContControl.setContControlsignature(x = "SimControl"): set slotContControl.getNAControlsignature(x = "SimControl"): get slotNAControl.setNAControlsignature(x = "SimControl"): set slotNAControl.getDesignsignature(x = "SimControl"): get slotdesign.setDesignsignature(x = "SimControl"): set slotdesign.getFunsignature(x = "SimControl"): get slotfun.setFunsignature(x = "SimControl"): set slotfun.getDotssignature(x = "SimControl"): get slotdots.setDotssignature(x = "SimControl"): set slotdots.getSAEsignature(x = "SimControl"): get slotSAE.setSAEsignature(x = "SimControl"): set slotSAE.
Methods
clusterRunSimulationsignature(cl = "ANY", x = "data.frame", setup = "missing", nrep = "numeric", control = "SimControl"): run a simulation experiment on a cluster.clusterRunSimulationsignature(cl = "ANY", x = "data.frame", setup = "VirtualSampleControl", nrep = "missing", control = "SimControl"): run a simulation experiment on a cluster.clusterRunSimulationsignature(cl = "ANY", x = "data.frame", setup = "SampleSetup", nrep = "missing", control = "SimControl"): run a simulation experiment on a cluster.clusterRunSimulationsignature(cl = "ANY", x = "VirtualDataControl", setup = "missing", nrep = "numeric", control = "SimControl"): run a simulation experiment on a cluster.clusterRunSimulationsignature(cl = "ANY", x = "VirtualDataControl", setup = "VirtualSampleControl", nrep = "numeric", control = "SimControl"): run a simulation experiment on a cluster.headsignature(x = "SimControl"): currently returns the object itself.runSimulationsignature(x = "data.frame", setup = "VirtualSampleControl", nrep = "missing", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "data.frame", setup = "SampleSetup", nrep = "missing", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "data.frame", setup = "missing", nrep = "numeric", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "data.frame", setup = "missing", nrep = "missing", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "VirtualDataControl", setup = "missing", nrep = "numeric", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "VirtualDataControl", setup = "missing", nrep = "missing", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "VirtualDataControl", setup = "VirtualSampleControl", nrep = "numeric", control = "SimControl"): run a simulation experiment.runSimulationsignature(x = "VirtualDataControl", setup = "VirtualSampleControl", nrep = "missing", control = "SimControl"): run a simulation experiment.showsignature(object = "SimControl"): print the object on the R console.summarysignature(object = "SimControl"): currently returns the object itself.tailsignature(x = "SimControl"): currently returns the object itself.
UML class diagram
A slightly simplified UML class diagram of the framework can be found in
Figure 1 of the package vignette An Object-Oriented Framework for
Statistical Simulation: The R Package simFrame.  Use
vignette("simFrame-intro") to view this vignette.
Author(s)
Andreas Alfons
References
Alfons, A., Templ, M. and Filzmoser, P. (2010) An Object-Oriented Framework for Statistical Simulation: The R Package simFrame. Journal of Statistical Software, 37(3), 1–36. doi: 10.18637/jss.v037.i03.
See Also
Examples
#### design-based simulation
set.seed(12345)  # for reproducibility
data(eusilcP)    # load data
## control objects for sampling and contamination
sc <- SampleControl(size = 500, k = 50)
cc <- DARContControl(target = "eqIncome", epsilon = 0.02,
    fun = function(x) x * 25)
## function for simulation runs
sim <- function(x) {
    c(mean = mean(x$eqIncome), trimmed = mean(x$eqIncome, 0.02))
}
## combine these to "SimControl" object and run simulation
ctrl <- SimControl(contControl = cc, fun = sim)
results <- runSimulation(eusilcP, sc, control = ctrl)
## explore results
head(results)
aggregate(results)
tv <- mean(eusilcP$eqIncome)  # true population mean
plot(results, true = tv)
#### model-based simulation
set.seed(12345)  # for reproducibility
## function for generating data
rgnorm <- function(n, means) {
    group <- sample(1:2, n, replace=TRUE)
    data.frame(group=group, value=rnorm(n) + means[group])
}
## control objects for data generation and contamination
means <- c(0, 0.25)
dc <- DataControl(size = 500, distribution = rgnorm,
    dots = list(means = means))
cc <- DCARContControl(target = "value",
    epsilon = 0.02, dots = list(mean = 15))
## function for simulation runs
sim <- function(x) {
    c(mean = mean(x$value),
        trimmed = mean(x$value, trim = 0.02),
        median = median(x$value))
}
## combine these to "SimControl" object and run simulation
ctrl <- SimControl(contControl = cc, design = "group", fun = sim)
results <- runSimulation(dc, nrep = 50, control = ctrl)
## explore results
head(results)
aggregate(results)
plot(results, true = means)