ipriorOptim: Estimate an I-prior model using a combination of EM algorithm and direct
optimisation
Description
This is a wrapper function for iprior() and optim() which
estimates an I-prior model that has been stored in an ipriorKernel
object.
Usage
ipriorOptim(object, control = list(maxit = 3, report = 1))
Arguments
object
An object of class ipriorKernel.
control
A list of controls for the initial EM algorithm fit. Refer to
iprior for a full list of available controls.
Value
An object of class ipriorMod.
Details
The EM algorithm is slow to converge at times, but every iteration is
guaranteed to increase the likelihood value. On the other hand a direct
maximisation of the I-prior likelihood may sometimes result in
ill-conditioned variance parameter due to the nature of the parameterisation
of the I-prior model. Thus, an ideal implementation is a combination of EM
and direct optimisation.
First, the EM algorithm is performed for a maximum of three iterations. This
can be changed by passing a different maxit value to the list of
control options. The parameters are then passed to optim() and the
negative log-likelihood is minimised. The method used for optim is
"L-BFGS-B", as the psi parameter of the I-prior model needs to
be contrained to be greater than zero.