Simulates or predicts missing values from their predictive distribution given the observed data under a normal model with fixed parameters.
impNorm(obj, …)
# S3 method for default
impNorm(obj, x = NULL, intercept = TRUE, param,
seeds = NULL, method = "random", …)
# S3 method for formula
impNorm(formula, data, param,
seeds = NULL, method = "random", …)
# S3 method for norm
impNorm(obj, param = obj$param, seeds = NULL,
method = "random", …)
an object used to select a method. It may be y
,
a numeric matrix, vector or data frame of responses
to be modeled as normal. Missing values (NA
s) are allowed. If
y
is a data frame, any factors or ordered factors will be
replaced by their internal codes, and a warning will be given.
Alternatively, this first argument may be an object of class "norm"
resulting from a call to emNorm
or
mcmcNorm
; see DETAILS.
a numeric matrix, vector or data frame of covariates to be
used as predictors for y
. Missing values (NA
's) are
not allowed. If x
is a matrix, it must have the same number
of rows as y
. If x
is a data frame, any factors or
ordered factors are replaced by their internal codes, and a
warning is given. If NULL
, it defaults to x =
rep(1,nrow(y))
, an intercept-only model.
if TRUE
, then a column of 1
's is
appended to x
. Ignored if x = NULL
.
an object of class "formula"
(or one
that can be coerced to that class): a symbolic description of the
model which is provided in lieu of y
and x
. The
details of model specification are given
under DETAILS.
an optional data frame, list or environment (or object
coercible by as.data.frame
to a data frame) containing
the variables in the model. If not found in data
, the variables are
taken from environment(formula)
, typically the environment
from which impNorm
is called.
assumed values for the model
parameters. This must be a list with two named components,
beta
and sigma
, which are numeric matrices with correct
dimensions. In most circumstances, the parameter
values will be obtained from a run of emNorm
or
mcmcNorm
; see DETAILS.
two integers to initialize the random number generator; see DETAILS.
if "random"
, the missing values in each row of y
will be simulated from their joint predictive distribution given
x
and the observed values in y
. If "predict"
,
missing values will be
replaced by regression predictions given the observed values. See
DETAILS.
values to be passed to the methods.
a data matrix resembling the original data y
, but
with NA
's replaced by simulated values or predictions.
This function is used primarily in conjunction with
mcmcNorm
to draw multiple imputations by the
multiple-chain method. In those instances, the simplest way to call
impNorm
is to provide an object of class "norm"
as its
first argument, where that object is the result of a call to
mcmcNorm
. The parameter values stored in that object will
then be passed to impNorm
automatically.
Alternatively, one may call impNorm
by providing as the first
argument y
, a vector or matrix of data to be modeled as
normal, and an optional vector or matrix of predictors x
.
Missing values NA
are allowed in y
but not in x
.
A third way to call impNorm
is to provide
formula
, a formula for a (typically
multivariate) linear regression model in the manner expected by
lm
. A formula is given as y ~ model
, where
y
is either a single numeric variable or a matrix of numeric
variables bound together with the function cbind
. The
right-hand side of the formula (everything to the right of ~
) is a
linear predictor, a series of terms separated by operators +
,
:
or *
to specify main effects and
interactions. Factors are allowed on the right-hand side and will
enter the model as contrasts among the levels
. The
intercept term 1
is included by default; to remove the
intercept, use -1
.
norm2
functions use their own internal random number generator which
is seeded by two integers, for example, seeds=c(123,456)
,
which allows results to be reproduced in the future. If
seeds=NULL
then
the function will seed itself with two random
integers from R. Therefore, results can also be made reproducible by
calling set.seed
beforehand and taking seeds=NULL
.
Schafer, J.L. (1997) Analysis of Incomplete Multivariate Data. London: Chapman & Hall/CRC Press.
For more information about this function and other functions in
the norm2
package, see User's Guide for norm2
in the library subdirectory doc
.
# NOT RUN {
## run EM for marijuana data with ridge prior
data(marijuana)
emResult <- emNorm(marijuana, prior="ridge", prior.df=0.5)
## generate 25 multiple imputations by running 25 chains
## of 100 iterations each, starting each chain at the
## posterior mode
set.seed(456)
imp.list <- as.list(NULL)
for(m in 1:25){
mcmcResult <- mcmcNorm(emResult, iter=100)
imp.list[[m]] <- impNorm(mcmcResult)}
# }
Run the code above in your browser using DataLab