A given data set is subdivided into three types of variables: those to be
used predicting the class (explanatory variables) those to be used defining
the class (intermediate variables) and the class membership variable itself
(response variable). Intermediate variables are modelled based on the
explanatory variables, the class membership variable is defined on the
intermediate variables.

Each specified intermediate variable is modelled separately
following `pFUN`

and a formula specified by `formula`

.
`pFUN`

is a list of lists, the maximum length of
`pFUN`

is the number of intermediate variables. Each element of
`pFUN`

is a list with elements:

`model`

- a function with arguments `formula`

and
`data`

;

`predict`

- an optional function with arguments `object, newdata`

only,
if `predict`

is not specified, the predict method of `model`

is used;

`formula`

- specifies the formula for the corresponding
`model`

(optional),
the formula described in `y~w1+w2+w3~x1+x2+x3`

is used if no other is
specified.

The response is classified following `cFUN`

, which is either a fixed
function or a list as described below. The determined function `cFUN`

assigns the intermediate (and
explanatory) variables to a certain class membership, the list
`cFUN`

has the elements `formula, model, predict`

and
`training.set`

. The elements `formula, model, predict`

are
structured as described by `pFUN`

, the described model is
trained on the original (intermediate variables) if `training.set="original"`

or if `training.set = NULL`

, on the fitted values if
`training.set = "fitted"`

or on observations not included in a
specified subset if `training.set = "subset"`

.

A list of prediction models corresponding to each
intermediate variable, a predictive function for the response, a list of
specifications for the intermediate and for the response are returned.

For a detailed description on indirect
classification see Hand et al. (2001).