selm modelsselm activates a call to selm.fit and
from here to some other function which actually performs the parameter
search, one among those listed below. These lower-level functions can be
called directly for increased efficiency, at the expense of a little more
programming effort.selm.fit(x, y, family = "SN", start = NULL, w, fixed.param = list(),
offset = NULL, selm.control)sn.mple(x, y, cp = NULL, w, penalty = NULL, trace = FALSE)
st.mple(x, y, dp = NULL, fixed.nu = NULL, w, penalty = NULL, trace = FALSE)
msn.mle(x, y, start = NULL, w, trace = FALSE, opt.method = c("nlminb",
"Nelder-Mead", "BFGS", "CG", "SANN"), control = list())
msn.mple(x, y, start = NULL, w, trace = FALSE, penalty = NULL,
opt.method = c("nlminb", "Nelder-Mead", "BFGS", "CG", "SANN"),
control = list())
mst.mple(x, y, start = NULL, w, penalty, fixed.nu = NULL, trace = FALSE,
opt.method = c("nlminb", "Nelder-Mead", "BFGS", "CG", "SANN"),
control = list())
NROW(y)=nrow(x)."SN" (default), "ST" or "SC", which
correspond to the skew-normy is a vector or a matrix. It is assumed that
cp is given in the CP parameterization, dp and
start in the NROW(y); if missing, a vector of all 1's is generated.NULL corresponds to no penalty.fixed.param=list(nu='value'), to fix the degrees
of freedom at the named 'value'NULL or a numeric vector of length equal to the number of
cases. One or more FALSE which suppresses
printing.nu
of the ST distribution in the optimization process; with default
value NULL, nu is estimated like the other parameters.c("nlminb", "Nelder-Mead", "BFGS", "CG", "SANN");
the last four of these are "methods" of function optim.selm.fit; see opt.methodsn.mple follows these lines;
maximization is performed in the CP space. All other functions
operate on the DP space.
The technique underlying msn.mle is based on a partial analytical
maximization, leading implicitly to a form of profile log-likelihood.
This scheme is formulated in detail in Section 6.1 of Azzalini and Capitanio
(1999) and summarized in Section 5.2.1 of Azzalini and Capitanio (2014).
The same procedure is not feasible when one adopts MPLE;
hence function msn.mple has to maximize over a larger parameter space.Maximization of the univariate ST log-likelihood is speeded-up by using the expressions of the gradient given by DiCicio and Monti (2011), reproduced with inessential variants in Section 4.3.3 of Azzalini and Capitanio (2014).
The working of mst.mple is based on a re-parameterization described
in Section 5.1 of Azzalini and Capitanio (2003). The expressions of the
corresponding log-likelihood derivatives are given in Appendix B of the full
version of the paper.
selm produces a call to selm.fit which
selects the appropriate function among sn.mple, st.mple,
msn.mle, msn.mple, mst.mple, depending on the
arguments of the calling statement.
Of these functions, sn.mple works in CP space; the others
in the DP space. In all cases, a correspondig mapping to the
alternative parameter space is performed before exiting selm.fit,
in addition to the selected parameter set.The components of selm.control are as follows:
method: the estimation method,"MLE"or"MPLE".penalty: a string with the name of the penalty function.info.type: a string with the name of the information matrix,"observed"or"expected"; currently fixed at "observed".opt.method: a character string which selects the optimization
method.opt.control: a list of control parameters ofopt.method.msn.mle is unchanged from version 0.4-x of the package.
Functions sn.mple and mst.mple work like sn.mle and
mst.mle in version 0.4-x if argument penalty is not
set or is set to NULL. Azzalini, A. and Capitanio, A. (2003).
Distributions generated by perturbation of symmetry with emphasis on
a multivariate skew t distribution.
J.Roy. Statist. Soc. B 65, 367--389.
Full-length version available at
Azzalini, A. with the collaboration of Capitanio, A. (2014). The Skew-Normal and Related Families. Cambridge University Press, IMS Monographs series.
T. J. DiCicio and A. C. Monti (2011). Inferential aspects of the skew $t$-distribution. Quaderni di Statistica 13, 1--21.
selm functiondata(wines, package="sn")
X <- model.matrix(~ phenols + wine, data=wines)
fit <- msn.mle(x=X, y=cbind(wines$acidity, wines$alcohol), opt.method="BFGS")Run the code above in your browser using DataLab