| runSimulation {simFrame} | R Documentation |
Generic function for running a simulation experiment.
runSimulation(x, setup, nrep, control, contControl = NULL,
NAControl = NULL, design = character(), fun, ...,
SAE = FALSE)
runSim(...)
x |
a data.frame (for design-based simulation or simulation based
on real data) or a control object for data generation inheriting from
"VirtualDataControl" (for model-based simulation). |
setup |
an object of class "SampleSetup", containing previously
set up samples, or a control class for setting up samples inheriting
from "VirtualSampleControl". |
nrep |
a non-negative integer giving the number of repetitions of the simulation experiment (for model-based simulation or simulation based on real data). |
control |
a control object of class "SimControl" |
contControl |
an object of a class inheriting from
"VirtualContControl", controlling contamination in the simulation
experiment. |
NAControl |
an object of a class inheriting from
"VirtualNAControl", controlling the insertion of missing values in
the simulation experiment. |
design |
a character vector specifying the variables (columns) to be
used for splitting the data into domains. The simulations, including
contamination and the insertion of missing values (unless SAE=TRUE),
are then performed on every domain. |
fun |
a function to be applied in each simulation run. |
... |
for runSimulation, additional arguments to be passed
to fun. For runSim, arguments to be passed to
runSimulation. |
SAE |
a logical indicating whether small area estimation will be used in the simulation. |
For convenience, the slots of control may be supplied as arguments.
There are some requirements for slot fun of the control object
control. The function must return a numeric vector or an object of
class "SimResult", which consists of a slot values (a numeric
vector) and a slot add (additional results of any class, e.g.,
statistical models). Note that the latter is computationally more
expensive. Returning a list with components values and add
is also accepted and slightly faster than using a "SimResult"
object. 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.
runSim is a wrapper for runSimulation.
An object of class "SimResults".
Andreas Alfons, alfons@statistik.tuwien.ac.at
SimControl, SimResults,
simBwplot, simDensityplot, simXyplot
## for reproducibility
set.seed(1234)
## function for generating data
grnorm <- 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.5)
dc <- DataControl(size = 500, distribution = grnorm,
dots = list(means = means))
cc <- DCARContControl(target = "value",
epsilon = 0.1, dots = list(mean = 10))
## function for simulation runs
sim <- function(x) {
c(mean = mean(x$value),
trimmed = mean(x$value, trim = 0.1),
median = median(x$value))
}
## run simulation
results <- runSimulation(dc, nrep = 50,
contControl = cc, design = "group", fun = sim)
## plot results
plot(results, true = means)