Learn R Programming

sn (version 2.1.1)

profile.selm: Profile log-likelihood function of selm-class objects

Description

One- or two-dimensional profile (penalized) log-likelihood function of a selm fit and corresponding confidence interval or regions

Usage

# S3 method for selm
profile(fitted, param.type, param.name, param.values, npt, 
   opt.control = list(), plot.it = TRUE, log = TRUE, levels, 
   trace = FALSE, ...)

Value

An invisible list whose components, described below, are partly different in the one- and the two-parameter cases.

call

the calling statement

<param1>

values of the first parameter

<param2>

values of the second parameter (in the two-parameter case)

logLik

numeric vector or matrix of the profile log-likelihood values

confint

in the one-parameter case, the confidence interval

level

in the one-parameter case, the confidence level

deviance.contour

in the two-parameter case, a list of lists whose elements identify each curve of the contour plot

Arguments

fitted

an object of class selm as produced by a call to function selm with univariate response.

param.type

a character string with the required parameterization; it must be either "CP" or "DP", or possibly their equivalent lowercase.

param.name

either a single character string or a vector of two such terms with the name(s) of the parameter(s) for which the profile log-likelihood is required; these names must match those appearing in summary.selm(object, param.type).

param.values

in the one-parameter case, a numeric vector with the values where the log-likelihood must be evaluated; in the two-parameter case, a list of two such vectors used to build a grid of coordinates of points. Their range must identify an interval or a rectangle which includes the MLE or MPLE obtained by selm. See ‘Details’ for more information.

npt

in case the vector or any of the vectors of argument param.values has length 2, an equally spaced grid of values is build with length equal to the corresponding component of npt. If the above condition is met but this argument is missing, a default choice is made, namely 51 or (26,26) in the one- or two-parameter case, respectively.

opt.control

an optional list passed as argument control to optim to optimize the log-likelihood; see ‘Details’ for more information.

plot.it

a logical value; if TRUE (default value), a plot is produced representing the deviance, which is described in ‘Details’ below. In the one-parameter case, a confidence interval of prescribed level is marked on the plot; in the two-parameter case, the contour curves are labelled with approximate confidence levels. See however for more information.

log

a logical value (default: TRUE) indicating whether the scale and tail-weight parameter (the latter only for the ST family) must be log-transformed, if case any of them occurs in param.name. This applies to omega and nu in the DP parameter set and to s.d. and gamma2 in the CP parameter set.

levels

a single probability value (in the one-parameter case) or a vector of such values (in the two-parameter case) for which the confidence interval or region is requited; see ‘Details’ for more information.

trace

a logical value (default: FALSE) to activate printing of intermediate outcome of the log-likelihood optimization process

...

optional graphical parameters passed to the plotting functions.

Author

Adelchi Azzalini

Warnings

  • This function is experimental and changes in future versions of the package may occur. Users should not rely on the persistence of the same user interface or the same name(s).

  • It is a known fact that, in some critical situations, peculiar outcomes are produced.

Details

For each chosen point of the parameter(s) to be profiled, the log-likelihood is maximized with respect to the remaining parameters. The optimization process is accomplished using the optim optimization function, with method="BFGS". This step can be regulated by the user via opt.control which is passed to optim as control argument, apart from element fnscale whose use is reserved.

If the original fitted object included a fixed parameter value, this is kept fixed here. If the estimation method was "MPLE", that choice carries on here; in case the penalty function was user-defined, it must still be accessible.

For plotting purposes and also in the numerical output, the deviance function \(D\) is used, namely $$D = 2\left[\max(\log L) - \log L\right]$$ where \(L\) denotes the likelihood.

The range of param.values must enclose the maximum (penalized) likelihood estimates (MLE or MPLE) by an adequate extent such that suitable confidence intervals or regions can be established from standard asymptotic theory. If this condition does not hold, the function still proceeds, but no confidence interval or region is delivered. For the SN family and DP parameterization, the asymptotic theory is actually non-standard near the important point \(\alpha=0\), but the correspondence with the regular case of the CP parameterization, still allows to derive confidence regions using standard procedures; for additional information, see Section 3.1.6 of Azzalini and Capitanio (2014). When the MLE occurs on the frontier of the parameter space, a message is issued and no confidence interval is produced, while in the two-parameter case the plot is not labelled with probability values, but only with deviance levels.

References

Azzalini, A. with the collaboration of Capitanio, A. (2014). The Skew-Normal and Related Families. Cambridge University Press, IMS Monographs series.

See Also

selm, summary.selm,

makeSECdistr for the CP/DP parameterizations,

optim for its control argument

Examples

Run this code
data(ais, package="sn")
m1 <-  selm(log(Fe) ~ BMI + LBM, family = "sn", data = ais)

pll <- profile(m1, "dp", param.name="alpha", param.val=c(-3,2))

profile(m1, "cp", param.name="gamma1", param.val=seq(-0.7, 0.4, by=0.1))

# in the next example, we reduce the grid points to save execution time
pll <- profile(m1, "cp", param.name=c("(Intercept.CP)", "gamma1"),
           param.val = list(c(1.5, 4), c(-0.8, 0.5)), npt=c(11,11) )

Run the code above in your browser using DataLab