Optimization of the hyperparameters using a sequence of subfunctions.
optimal_params (expt, LoF, start_hp, option = "a", ...)
optimal_B (expt, LoF, start_hp, option = "a", verbose=FALSE, ...)
optimal_identical_B(expt, LoF, start_hp, verbose=FALSE, ...)
optimal_diag_M (expt, LoF, start_hp)
optimal_M (expt, LoF, start_hp, ...)
Object of class experiment
List of functions
Start value for the hyperparameters, an object of class mhp
.
The various optimization routines use the different parts of
start_hp
as start points, and incrementally update it
In function optimal_B()
and consequently
optimal_params()
, a character indicating whether to allow the
scales to differ or not.
Default option “a
” is the simplest: each
univariate B
matrix is a multiple of the identity matrix.
Option “b
” allows the B
matrices to be
any (positive definite) diagonal matrix.
Option “c
” specifies that B[,,j]
is
diagonal for each j
and furthermore that
B[i,i,1]=B[i,i,2]=...=B[i,i,r]
. This option calls
optimal_identical_B()
.
In function optimal_B()
, Boolean with TRUE
meaning
to print debugging information and default FALSE
meaning not
to print anything
Further arguments passed to the optimization routine
Returns a mhp
object.
The user-friendly wrapper function is optimal_params()
. This
calls function optimal_B()
first, as most of the analysis is
conditional on B
. Then optimal_diag_M()
is called; this
places the maximum likelihood estimate for \(\sigma^2\) on
the diagonal of M
. Finally, optimal_M()
is called,
which assigns the off-diagonal elements of M
.
Each of the subfunctions returns an object appropriate for insertion
into a mhp
object.
The “meat” of optimal_params()
is
B(out) <- optimal_B (mm, d, LoF, start_hp=out, option=option, ...) diag(M(out)) <- optimal_diag_M(mm, d, LoF, start_hp=out, ...) M(out) <- optimal_M (mm, d, LoF, start_hp=out, ...) return(out)
See how object out
is modified sequentially, it being used as a
start point for the next function.
# NOT RUN {
data(mtoys)
optimal_params(toy_expt,toy_LoF,toy_mhp,option='c',control=list(maxit=1))
# }
Run the code above in your browser using DataLab