Conversion between parametrizations of a skew-elliptical distribution


Convert direct parameters (DP) to centred parameters (CP) of a skew-elliptical distribution and vice versa.


dp2cp(dp, family, object = NULL, cp.type = "proper", upto = NULL) 
cp2dp(cp, family)
dp2op(dp, family)
op2dp(op, family)



a vector (in the univariate case) or a list (in the multivariate case) as described in makeSECdistr; see ‘Background and Details’ for an extented form of usage.


a vector or a list, in agreement with dp as for type and dimension.


a vector or a list, in agreement with dp as for type and dimension.


a characther string with the family acronym, as described in makeSECdistr, except that family "ESN" is not implemented.


optionally, an S4 object of class SECdistrUv or SECdistrMv, as produced by makeSECdistr (default value: NULL). If this argument is not NULL, then family and dp must not be set.


character string, which has effect only if family="ST" or "SC", otherwise a warning message is generated. Possible values are "proper", "pseudo", "auto", which correspond to the CP parameter set, their 'pseudo-CP' version and an automatic selection based on nu>4, where nu represents the degrees of freedom of the ST distribution.


numeric value (in 1:length(dp), default=NULL) to select how many CP components are computed. Default value upto=NULL is equivalent to length(dp).


For dp2cp, a matching vector (in the univariate case) or a list (in the multivariate case) of cp parameters. For cp2dp and op2dp, a similar object of dp parameters, provided the set of input parameters is in the admissible region. For dp2op, a similar set of op parameters.


For a description of the DP parameters, see Section ‘Details’ of makeSECdistr. The CP form of parameterization is cumulant-based. For a univariate distribution, the CP components are the mean value (first cumulant), the standard deviation (square root of the 2nd cumulant), the coefficient of skewness (3rd standardized cumulant) and, for the ST, the coefficient of excess kurtosis (4th standardized cumulant). For a multivariate distribution, there exists an extension based on the same logic; its components represent the vector mean value, the variance matrix, the vector of marginal coefficients of skewness and, only for the ST, the Mardia's coefficient of excess kurtosis. The pseudo-CP variant provides an ‘approximate form’ of CP when not all required cumulants exist; however, this parameter set is not uniquely invertible to DP. The names of pseudo-CP components printed in summary output are composed by adding a ~ after the usual component name; for example, the first one is denoted mean~.

Additional information is provided by Azzalini and Capitanio (2014). Specifically, their Section 3.1.4 presents CP in the univariate SN case, Section 4.3.4 CP for the ST case and the 'pseudo-CP' version. Section 5.2.3 presents the multivariate extension for the SN distribution, Section 6.2.5 for the multivariate ST case. For a more detailed discussion, see Arellano-Valle and Azzalini (2013).

The OP parameterization is very similar to DP, from which it differs only for the components which regulate dispersion (or scatter) and slant. Its relevance lies essentially in the multivariate case, where the components of the slant parameter can be interpreted component-wise and remain unaffected if marginalization with respect to some other components is performed. In the multivariate SN case, the components of OP, denoted ξ, Ψ, λ, are associated to the expression of the density function (5.30) of Azzalini \& Capitanio (2014); see pp.128–131 for more information. In the univariate case, the slant component of DP and the one of OP coincide, that is, α=λ, Parameter ξ and other parameters which may exist with other families remain the same of the DP set. The term OP stands for ‘original parameterization’ since this is, up to a negligible difference, the parameterization adopted by Azzalini & Dalla Valle (1996).


While any choice of the components of DP or OP is admissible, this is not true for CP. An implication is that a call to cp2dp may fail with an error message "non-admissible CP" for certain input values. The most extreme case is represented by the SC family, for which CP never exists; hence it makes to sense to call cp2dp with family="SC".

It is possible to call the functions with dp or cp having more components than those expected for a given family as described above and in makeSECdistr. In the univariate case, this means that dp or cp can be vectors of longer length than indicated earlier. This occurrence is interpreted in the sense that the additional components after the first one are regarded as regression coefficients of a selm model, and they are transferred unchanged to the matching components of the transformed parameter set; the motivation is given in Section 3.1.4 of Azzalini and Capitanio (2014). In the multivariate case, dp[[1]] and cp[[1]] can be matrices instead of vectors; the rows beyond the first one are transferred unchanged to cp[[1]] and dp[[1]], respectively.


Arellano-Valle, R. B. and Azzalini, A. (2013, available on-line 12 June 2011). The centred parameterization and related quantities of the skew-t distribution. J. Multiv. Analysis 113, 73-90.

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

Azzalini, A. and Dalla Valle, A. (1996). The multivariate skew-normal distribution. Biometrika 83, 715–726.

See Also

makeSECdistr, summary.SECdistr, sn.cumulants,

the ‘Note’ at summary.selm for the reason why CP is the default parameterization in that function and in related ones,

the ‘Examples’ at rmsn for use of the CP parameterization


# univariate case
cp <- dp2cp(c(1, 2222, 3333, 2, 3), "SN")
dp <- cp2dp(cp, "SN")
# notice that 2nd and 3rd component remain unchanged
# multivariate case
dp3 <- list(xi=1:3, Omega=toeplitz(1/(1:3)), alpha=c(-3, 8, 5), nu=6)
cp3 <- dp2cp(dp3, "ST")
dp3.back <- cp2dp(cp3, "ST")
op3 <- dp2op(dp3, "ST")
dp3back <- op2dp(op3,"ST")

Want to suggest features or report bugs for Use the GitHub issue tracker.

comments powered by Disqus