Simulate one or more responses from the distribution corresponding to a fitted model object.
simulate(object, nsim = 1, seed = NULL, ...)
- an object representing a fitted model.
- number of response vectors to simulate. Defaults to
- an object specifying if and how the random number
generator should be initialized (
seeded). For the "lm" method, either
NULLor an integer that will be used in a call to
set.seedbefore simulating the response vectors. If set, the value is saved as the
"seed"attribute of the returned value. The default,
NULLwill not change the random generator state, and return
- additional optional arguments.
This is a generic function. Consult the individual modeling functions for details on how to use this function.
"lm" objects which is used
glm fits. There is a method
for fits from
glm.nb in package
The methods for linear models fitted by
= "gaussian") assume that any weights which have been supplied are
inversely proportional to the error variance. For other GLMs the
simulate component of the
object is used---there is no appropriate simulation method for
For binomial and Poisson GLMs the dispersion is fixed at one. Integer prior weights $w_i$ can be interpreted as meaning that observation $i$ is an average of $w_i$ observations, which is natural for binomials specified as proportions but less so for a Poisson, for which prior weights are ignored with a warning.
For a gamma GLM the shape parameter is estimated by maximum likelihood
gamma.shape in package
For an inverse gaussian GLM the model assumed is
$IG(\mu_i, \lambda w_i)$ (see
rinvGauss from the
- Typically, a list of length
nsimof simulated responses. Where appropriate the result can be a data frame (which is a special type of list). For the
"lm"method, the result is a data frame with an attribute
"seed". If argument
NULL, the attribute is the value of
.Random.seedbefore the simulation was started; otherwise it is the value of the argument with a
"kind"attribute with value
There are further examples in the
x <- 1:5 mod1 <- lm(c(1:3, 7, 6) ~ x) S1 <- simulate(mod1, nsim = 4) ## repeat the simulation: .Random.seed <- attr(S1, "seed") identical(S1, simulate(mod1, nsim = 4)) S2 <- simulate(mod1, nsim = 200, seed = 101) rowMeans(S2) # should be about the same as fitted(mod1) ## repeat identically: (sseed <- attr(S2, "seed")) # seed; RNGkind as attribute stopifnot(identical(S2, simulate(mod1, nsim = 200, seed = sseed))) ## To be sure about the proper RNGkind, e.g., after RNGversion("2.7.0") ## first set the RNG kind, then simulate do.call(RNGkind, attr(sseed, "kind")) identical(S2, simulate(mod1, nsim = 200, seed = sseed)) ## Binomial GLM examples yb1 <- matrix(c(4, 4, 5, 7, 8, 6, 6, 5, 3, 2), ncol = 2) modb1 <- glm(yb1 ~ x, family = binomial) S3 <- simulate(modb1, nsim = 4) # each column of S3 is a two-column matrix. x2 <- sort(runif(100)) yb2 <- rbinom(100, prob = plogis(2*(x2-1)), size = 1) yb2 <- factor(1 + yb2, labels = c("failure", "success")) modb2 <- glm(yb2 ~ x2, family = binomial) S4 <- simulate(modb2, nsim = 4) # each column of S4 is a factor